在 R 脚本中确定 n 个样本大小以拒绝 alpha = 0.01 的空值

Posted

技术标签:

【中文标题】在 R 脚本中确定 n 个样本大小以拒绝 alpha = 0.01 的空值【英文标题】:Determining the n sample size to reject null at alpha =0.01 in R script 【发布时间】:2022-01-13 03:39:16 【问题描述】:

创建一个包含 100 个观察值的模拟数据集,其中 x 是一个随机正态变量,平均值为 0,标准差为 1,y = 0.1 + 2 * X + e,其中 epsilon 也是一个随机正态误差,平均值为 0 和 sd 1.

set.seed(1)
# simulate a data set of 100 observations 
x <- rnorm(100)
y.1 <- 0.1 + 2*x + rnorm(100)

现在提取前 5 个观察值。

y1.FirstFive <- (y.1[1:5]) # extract first 5 observations from y 
x.FirstFive <- (x[1:5]) # extract first 5 observations from x 


y1.FirstFive # extracted 5 observations from y1
[1] -1.7732743  0.5094025 -2.4821789  3.4485904  0.1044309
x.FirstFive # extracted 5 observations from x 
[1] -0.6264538  0.1836433 -0.8356286  1.5952808  0.3295078

假设您从前五个观察值计算的样本的平均值和标准偏差不会改变,那么您需要能够得出总体的真实平均值不同于0 在 p = 0.01 的置信水平上?

alpha <- 0.01
mu <- 0

for (i in 5:2000) 
# Recalculate the standard error and CI
    stand_err <- Sd_y1 / sqrt(i)
    ci <- sample_mean_y1 + c(qt(alpha/2, i-1), qt(1-alpha/2, i-1))*stand_err
    if (ci[2] < mu)
        break     # condition met, exit loop
 
i
[1] 2000

在这里,我编写了一个循环,将 n 从初始 n=5 迭代增加到 n=2000,使用 pt 找到 p 值(给定一个固定的 y-bar 和 sd),并在 p

附加信息:y1.FirstFive 的 sd = 2.3 和 y1.FirstFive 的平均值 = -0.04

【问题讨论】:

【参考方案1】:

假设:

Sd_y1 = sd(y1.FirstFive)
sample_mean_y1 = mean(y1.FirstFive)
sample_mean_y1
[1] -0.03860587

正如@jblood94 所指出的,您需要更大的样本量。

你不需要for循环,你的大部分函数都是矢量化的,所以像这样:

n = 5:30000
stand_err = Sd_y1 / sqrt(n)
ub = sample_mean_y1 + qt(1-alpha/2, n-1)*stand_err
n[min(which(ub<0))]
[1] 23889

【讨论】:

y 的标准差和平均值应来自提取的 5 个观测值。它应该是一个双尾测试。 另外,我用你的建议测试了我的代码,将 ci[2] mu,但输出仍然是 2000。 也许 2000 还不够高。【参考方案2】:

因为 n > 2000。

set.seed(1)
x <- rnorm(100)
y.1 <- 0.1 + 2*x + rnorm(100)

Sd_y1 <- sd(y.1[1:5])
sample_mean_y1 <- mean(y.1[1:5])
alpha <- 0.01
sgn <- 2*(sample_mean_y1 > 0) - 1

f <- function(n) qt(alpha/2, n - 1)*Sd_y1 + sgn*sample_mean_y1*sqrt(n)

upper <- 2
while (f(upper) < 0) upper <- upper*2
(n <- ceiling(uniroot(f, lower = upper/2, upper = upper, tol = 0.5)$root))
#> [1] 23889

【讨论】:

以上是关于在 R 脚本中确定 n 个样本大小以拒绝 alpha = 0.01 的空值的主要内容,如果未能解决你的问题,请参考以下文章

怎么理解统计学中「自由度」这个概念

分布式“转储”/“压缩”数据样本

R语言分布的卡方拟合优度检验

在K意味着使用R进行聚类后,检索最接近每个聚类质心的100个样本

如何确定样本量

问卷调查样本量如何确定?