2012-04-30 113 views
0

我有看起來像這樣的數據。 我想找到低於最大和給定的標準偏差(SD)和途徑(MEAN)的列表中最小密度 :規範給定平均值和標準偏差的最大和最小密度

info0 info1 info2 SD Mean 
10x  0  e0  0.38 1.14 
10x  0  e2  0.74 1.48 
10x  0  e4  1  1.85 
10x  0  e6  1.24 2.27 
10x  0.1  e0  0.35 1.13 
10x  0.1  e2  0.69 1.44 
10x  0.1  e4  0.96 1.82 
10x  0.1  e6  1.21 2.23 
10x  0.5  e0  0.34 1.12 
10x  0.5  e2  0.67 1.4 
10x  0.5  e4  0.95 1.75 
10x  0.5  e6  1.19 2.17 
10x  1  e0  0.29 1.09 
10x  1  e2  0.59 1.32 
10x  1  e4  0.87 1.66 
10x  1  e6  1.11 2.06 
10x  2  e0  0.23 1.06 
10x  2  e2  0.5  1.24 
10x  2  e4  0.79 1.54 
10x  2  e6  1.04 1.9 
10x  4  e0  0.22 1.0.5 
10x  4  e2  0.41 1.15 
10x  4  e4  0.65 1.37 
10x  4  e6  0.91 1.7 

我試過,但失敗。

dat <- read.table("test.dat", header = TRUE) 
densities <- apply(dat[, 4:5], 1, function(x) rnorm(n = 1000000, mean = x[2], sd = x[1])) 

maxden <- max(densities) 
minden <- min(densities) 

怎樣做正確的方式?

+1

最小和最大密度是什麼?你可以多給一點背景嗎?給定具有指定均值和sd的正態分佈,最大*概率*密度爲1/sqrt(2 * pi * sigma^2),但我不認爲這就是您要找的。最大和最小*可能*值是+/-無窮大。可以計算N個隨機正態偏差樣本中的最大值和最小值,但將嚴重依賴於N ...極值理論將幫助您獲得大小爲N的樣本中的最大值和最小值*期望值...你想解決什麼問題? –

+0

我猜測問題的手段是一個因素是1.0.5你有。 –

+0

現在我想起來了,我不應該這麼急。它在哪裏失敗,錯誤信息是什麼? –

回答

1

讓我先建議你不要在rnorm這樣一個龐大的數據集和如此大量的n上運行。這可以很容易地將browser放入代碼中,並找出發生了什麼。首先,數據中的手段是一個因素,因爲你使用格式化。

str(dat) 
'data.frame': 24 obs. of 5 variables: 
$ info0: Factor w/ 1 level "10x": 1 1 1 1 1 1 1 1 1 1 ... 
$ info1: num 0 0 0 0 0.1 0.1 0.1 0.1 0.5 0.5 ... 
$ info2: Factor w/ 4 levels "e0","e2","e4",..: 1 2 3 4 1 2 3 4 1 2 ... 
$ SD : num 0.38 0.74 1 1.24 0.35 0.69 0.96 1.21 0.34 0.67 ... 
$ Mean : Factor w/ 24 levels "1.0.5","1.06",..: 6 13 19 24 5 12 18 23 4 11 ... 

這必須在代碼中解決。

現在我們可以看到用代碼來獲得我們想要的東西(你必須調整RNORM N和提供更多行代碼當你真正使用它,但是出於測試目的,這是理想的):

densities <- apply(dat[1:10, 4:5], 1, function(x) { 
     rnorm(n = 10, mean = as.numeric(x[2]), sd = as.numeric(x[1])) 
    } 
) 
+0

我想OP會要求'申請(密度,2,範圍)',但我不確定答案的含義。 –

相關問題