繁体   English   中英

加权数据的威布尔分布

[英]Weibull distribution with weighted data

我有一些时间来处理事件数据,我需要为模拟模型的子组生成大约200个形状/比例参数。 我已经分析了数据,并且最好遵循魏布尔分布。 通常,我会使用fitdistrplus包和fitdist(x, "weibull")来执行此操作,但是此数据已使用内核匹配进行了匹配,并且我有一个加权值变量km ,因此需要合并一个权重,据我fitdist不能做的事情。 使用我的伽马分布式数据而不是使用fitdist我使用了hsmisc软件包中的wtd.meanwtd.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.3919991lscale = 6.852033

我尝试过其他的事情是eweibullEnvStats包。

eweibull <- eweibull(test_data)
eweibull$parameters
shape       scale
0.698091    935.239277

但是,尽管这些都可以带来结果,但我仍然认为我无法将我的数据与权重相适应。

编辑:我也尝试了类似的命名eWeibullExtDist包(我肯定不是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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM