从R中的正态分布的样本生成多个置信区间

时间:2012-05-04 17:42:21

标签: r confidence-interval

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

我使用了函数

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

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

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

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

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个向量。如果有更好的方法我可以告诉我。

1 个答案:

答案 0 :(得分: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)

希望这会有所帮助。请尝试此链接以获取更多信息:Using R to find Confidence Intervals