[英]Weibull distribution with weighted data
我有一些時間來處理事件數據,我需要為模擬模型的子組生成大約200個形狀/比例參數。 我已經分析了數據,並且最好遵循魏布爾分布。 通常,我會使用fitdistrplus包和fitdist(x, "weibull")
來執行此操作,但是此數據已使用內核匹配進行了匹配,並且我有一個加權值變量km
,因此需要合並一個權重,據我fitdist
不能做的事情。 使用我的伽馬分布式數據而不是使用fitdist
我使用了hsmisc
軟件包中的wtd.mean
和wtd.var
函數手動進行了計算,效果很好。 但是,為韋伯找到類似的公式使我難以理解。
我一直在測試一些選項,並將它們與fitdist結果進行比較:
test_data <- rweibull(100, 0.676, 946)
fitweibull <- fitdist(test_data, "weibull", method = "mle", lower = c(0,0))
fitweibull$estimate
shape scale
0.6981165 935.0907482
我首先對此進行了測試: R中的Weibull分布(ExtDist)
library(bbmle)
m1 <- mle2(y~dweibull(shape=exp(lshape),scale=exp(lscale)),
data=data.frame(y=test_data),
start=list(lshape=0,lscale=0))
這給了我lshape = -0.3919991
和lscale = 6.852033
我嘗試過其他的事情是eweibull
從EnvStats
包。
eweibull <- eweibull(test_data)
eweibull$parameters
shape scale
0.698091 935.239277
但是,盡管這些都可以帶來結果,但我仍然認為我無法將我的數據與權重相適應。
編輯:我也嘗試了類似的命名eWeibull
從ExtDist
包(我肯定不是100%仍然有效,但確實有一個威布爾函數,它的重量!)。 我收到很多關於輸入不可計算(NA或無限)的錯誤消息。 如果我用map
來做,那么map(test_data, test_km, eWeibull)
對於所有100個值我都會得到[[NULL]。 如果僅使用test_data進行嘗試,則會出現一連串與optimx相關的錯誤。
我還嘗試fitDistr
來自propagate
fitDistr
,該錯誤給出了weights
應為特定長度的錯誤。 例如,如果兩個都設置為100,則會出現一個錯誤,即weights
應為長度94。如果將其設置為94,則表明長度必須為132。
我需要能夠將一組預加權的均值/ var / sd等數據傳遞到計算中,或者具有一個可以獲取數據和權重並在計算中使用它們的函數。
經過多次試驗和錯誤,我從EnvStats
包中將eweibull
函數編輯為,而不是使用mean(x)
和sd(x)
,而是使用wtd.mean(x,w)
和sqrt(wtd.var(x, w))
。 現在將運行並輸出加權值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.