2

我是一名统计学专业的学生和 R 初学者(轻描淡写),试图为随机生成的正态分布样本生成多个置信区间作为作业的一部分。

我使用了这个功能

data <- replicate(25, rnorm(20, 50, 6))

从 N(50, 6^2) 分布(在双矩阵中)生成 25 个大小为 n=20 的样本。

我的问题是,我如何找到这个分布的每个样本的 95% 置信区间?我知道我可以使用 colMeans(data) 和 sd(data) 来查找每个样本的样本均值和样本标准差,但是我脑子里放屁,试图想出一个可以为所有列生成置信区间的函数在双矩阵(数据)中。

截至目前,我的(非常粗略的)解决方案包括创建函数

left <- function (x,y){x-(qnorm(0.975)*y/sqrt(20))}
right <- function (x,y){x+(qnorm(0.975)*y/sqrt(20))}

left(colMeans(data), sd(data)
right(colMeans(data), sd(data)

生成左右边界的 2 个向量。请让我知道是否有更好的方法可以做到这一点。

4

1 回答 1

3

我想你可以使用这个t.test()功能。它返回给定数字向量的平均值和 95% 置信区间。

# Create your data
data <- replicate(25, rnorm(20, 50, 6))
data <- as.data.frame(data)

制作数据后,您可以使用该函数将该t.test()函数应用于所有列lapply()

# Apply the t.test function and save the results
results <- lapply(data, t.test)

如果您只想查看返回的置信区间或均值,可以使用美元符号运算符调用它们。例如,对于原始数据框的第一列,您可以键入以下内容:

# Check 95% CI for sample one
results[[1]]$conf.int[1:2]

您可以想出一种更有说服力的方法将这些数据保存到结果数据框中。请记住,您始终可以使用该str()命令查看可以从对象中提取的单个信息位。例如:

# Example
example <- t.test(data[,1])
str(example)

希望这可以帮助。尝试此链接以获取更多信息:使用 R 查找置信区间

于 2012-05-04T18:24:40.380 回答