2012-05-04 109 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