我是一名统计学学生和 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 个向量。如果有更好的方法,请告诉我。
最佳答案
我想你可以使用t.test()
函数。它返回给定数字向量的平均值和 95% 置信区间。
# Create your data
data <- replicate(25, rnorm(20, 50, 6))
data <- as.data.frame(data)
创建数据后,您可以使用 lapply()
函数将 t.test()
函数应用于所有列。
# 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]
您可以想出一种更 Eloquent 方式将这些数据保存到结果数据框中。请记住,您始终可以使用 str()
命令查看可以从对象中提取哪些单独的信息。例如:
# Example
example <- t.test(data[,1])
str(example)
希望这有帮助。请尝试此链接以获取更多信息:Using R to find Confidence Intervals
关于r - 从 R 中的正态分布样本生成多个置信区间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10453641/