2012-05-04 76 views
2

我是一个统计学生和R初学者(年度轻描淡写),试图为随机生成的正态分布样本生成多个置信区间作为分配的一部分。从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个载体。请让我知道是否有更好的方式可以做到这一点。

+0

除了一般的小修改之外,我继续解决了我认为在代码中创建函数'left'和'right'的错字。如果您觉得我错了,随时可以回滚。 – joran

+0

嗯,如果你的样本的置信区间的通用公式只基于测量的平均值和S.D.,那么编写一个很好的向量化的R公式版本可以让你立即得到所有答案。或者,作为我的一位教授曾经说过(在互联网的存在之前),“不要实现它:在书中找到像它一样的问题,并做同样的事情!” :-) –

回答

3

我想你可以使用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] 

你能想出这些数据保存到一个结果数据帧的更雄辩的方式。请记住,通过使用str()命令,您始终可以查看可以从对象中拉出哪些单个信息。例如:

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

希望这有助于。试试这个链接以获得更多信息:Using R to find Confidence Intervals