2017-05-09 51 views
0

我有以下的載體:如何基於對數正態分佈的參數構建一個載體

foo <- c(1.376, 1.132, 0.828, 0.88, 1.124, 0.955, 1.292, 0.995, 1.207, 
1.076, 1.085, 1.061, 0.918, 1.097, 1.505, 1.141, 1.001, 0.927, 
1.339, 1.07, 1.332, 0.951, 0.969, 0.904, 0.89, 0.942, 1.141, 
0.798, 0.856, 0.819, 1.055, 1.262, 0.919, 1.024, 1.034, 1.088, 
1.183, 1.214, 1.159, 0.952, 0.912, 0.812, 0.985, 1.097, 0.948, 
1.168, 1.052, 0.922, 1.06, 0.741, 0.797, 0.952, 1.024, 1.858, 
1.073, 1.107, 0.853, 0.931, 0.732, 1.218, 1.09, 1.177, 0.931, 
1.105, 1.115, 1.221, 0.948, 1.146, 1.201, 1.16, 0.542, 1.067, 
1.056, 1.013, 0.986, 0.971, 1.125, 1.127, 0.971, 1.167, 1.148, 
1.074, 1.089, 1.001, 0.715, 0.945, 1.319, 1.15, 0.861, 0.733, 
0.783, 0.704, 1.176, 0.766, 1.466, 0.88, 0.873, 1.906, 1.584, 
1.076) 

,我可以得到以下參數:

> broom::tidy(MASS::fitdistr(foo,"lognormal")) 
    term estimate std.error 
1 meanlog 0.03062806 0.01947609 
2 sdlog 0.19476092 0.01377168 

我的問題是如何創造的新載體(我們稱之爲bar)長度與foo相同,使用上面的參數?

我想這(最有可能是錯誤的):

> rnorm(foo,mean=log(0.03062806), sd=log(0.19476092)) 
    [1] NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
[39] NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
[77] NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
+2

我不明白。你想在矢量「酒吧」中做什麼? – MrFlick

+0

@MrFlick'bar'只是一個新的期望向量的佔位符。看到我的更新了。 – neversaint

回答

0

我認爲你需要做這樣的事情:

rnorm(foo,mean=0.03062806,sd=0.01947609) 

的問題是,你正在使用的參數內log功能RNORM。

數學,如果你看到日誌(0.01947609)是這文件是指定的,將給予爲NaN對於其中SD <0箱子和將返回NaN的 我已經給出了否定的數量(-3.938568)低於參考值。

?rnorm文檔:

n以外的數值參數是再循環到 結果的長度。僅使用邏輯參數的第一個元素。

對於SD = 0 SD在 畝減少到0,一個點質量這給出了限制。 sd < 0是錯誤並返回NaN。

樣本的輸出命令:

> rnorm(foo,mean=0.03062806,sd=0.01947609) 
    [1] 0.032124378 0.042014230 0.045366499 -0.001474950 
    [5] 0.061332938 0.008669682 0.019695857 0.042559250 
    [9] 0.041862975 -0.010617882 0.067133856 0.016494814