【问题标题】:samplesize package in R, understanding the parametersR中的samplesize包,了解参数
【发布时间】:2015-11-09 15:51:44
【问题描述】:

小免责声明:我考虑过在交叉验证上发布此内容,但我觉得这与软件实现更相关。如果您不同意,可以迁移问题。

我正在试用包samplesize。我正在尝试破译函数 n.ttestk 参数是什么。文档中说明了以下内容:

k 样本分数 k

这不是很有帮助。这个参数究竟是什么?

我正在执行以下计算,所有基本值都在vals 变量中,我在下面提供:

power <- 0.90
alpha <- 0.05
vals <- ??? # These values are provided below
mean.diff <- vals[1,2]-vals[2,2]
sd1 <- vals[1,3]
sd2 <- vals[2,3]
k <- vals[2,4]/(vals[1,4]+vals[2,4])
design <- "unpaired"
fraction <- "unbalanced"
variance <- "equal"

# Get the sample size
n.ttest(power = power, alpha = alpha, mean.diff = mean.diff, 
        sd1 = sd1, sd2 = sd2, k = k, design = design, 
        fraction = fraction, variance = variance)

vals 包含以下值:

> vals
  affected       mean       sd length
1        1 -0.8007305 7.887657     57
2        2  4.5799913 6.740781     16

k 是一组在观察总数中的比例吗?或者是别的什么?如果我是正确的,那么比例是否对应sd1sd2的组?

【问题讨论】:

    标签: r sample-size


    【解决方案1】:

    您的第一直觉是对的——这属于 stats.SE 而不是 SO。参数k 具有统计解释,可在任何有关功率分析的参考资料中找到。它基本上设置了第二个样本的样本量,当在双样本测试的情况下,第二个样本被限制为第一个样本的某个分数。

    您可以在此处查看代码的相关行(n.ttest 的第 106 到 120 行):

    unbalanced = {
                      df <- n.start - 2
                      c <- (mean.diff/sd1) * (sqrt(k)/(1 + k))
                      tkrit.alpha <- qt(conf.level, df = df)
                      tkrit.beta <- qt(power, df = df)
                      n.temp <- ((tkrit.alpha + tkrit.beta)^2)/(c^2)
                      while (n.start <= n.temp) {
                        n.start <- n.start + 1
                        tkrit.alpha <- qt(conf.level, df = n.start - 
                          2)
                        tkrit.beta <- qt(power, df = n.start - 2)
                        n.temp <- ((tkrit.alpha + tkrit.beta)^2)/(c^2)
                      }
                      n1 <- n.start/(1 + k)
                      n2 <- k * n1
    

    在你的情况下:

    library(samplesize)
    
    vals = data.frame(
      affected = c(1, 2), 
      mean = c(-0.8007305, 4.5799913), 
      sd = c(7.887657, 6.740781), 
      length = c(57, 16))
    
    power <- 0.90
    alpha <- 0.05
    mean.diff <- vals[1,2]-vals[2,2]
    sd1 <- vals[1,3]
    sd2 <- vals[2,3]
    k <- vals[2,4]/(vals[1,4]+vals[2,4])
    k <- vals[2,4]/vals[1,4]
    
    design <- "unpaired"
    fraction <- "unbalanced"
    variance <- "equal"
    
    # Get the sample size
    tt1 = n.ttest(power = power, 
            alpha = alpha, 
            mean.diff = mean.diff, 
            sd1 = sd1, 
            sd2 = sd2, 
            k = k, 
            design = design, 
            fraction = fraction, 
            variance = variance)
    

    你可以看到:

    assertthat::are_equal(ceiling(tt1$`Sample size group 1`*tt1$Fraction), 
                          tt1$`Sample size group 2`)
    

    【讨论】:

    • 谢谢!我看到我应该查看函数的代码。这澄清了它。
    猜你喜欢
    • 1970-01-01
    • 2013-03-15
    • 1970-01-01
    • 2015-09-26
    • 2014-08-02
    • 1970-01-01
    • 2012-11-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多