加权数据的威布尔分布

时间:2018-07-19 12:08:44

标签: r distribution weighted weibull

我有一些时间来事件数据,我需要为模拟模型的子组生成大约200个形状/比例参数。我已经分析了数据,并且最好遵循魏布尔分布。 通常,我会使用fitdistrplus软件包和bigscatterR.svg来执行此操作,但是此数据已使用内核匹配进行了匹配,并且我有一个加权值变量fitdist(x, "weibull"),因此需要合并权重,据我所知km不能做些什么。 使用我的伽玛分布数据而不是使用fitdist,我使用fitdist包中的wtd.meanwtd.var函数手动进行了计算,效果很好。但是,为韦伯找到相似的公式使我难以理解。

我一直在测试一些选项,并将它们与fitdist结果进行比较:

hsmisc

我首先对此进行了测试:The Weibull distribution in R (ExtDist)

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

这给了我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(我不确定100%仍然可以使用,但是确实有一个带重量的weibull函数!)。我收到很多关于输入不可计算(NA或无限)的错误消息。如果我使用ExtDist进行操作,那么map的所有100个值都为[[NULL]。如果仅使用test_data进行尝试,则会出现一连串与optimx相关的错误。

我还尝试了map(test_data, test_km, eWeibull)中的fitDistr,该错误给出了propagate应该是特定长度的错误。例如,如果将两者都设置为100,则会出现错误,weights的长度应为94。如果将其设置为94,则表明长度必须为132。

我需要能够将一组预加权的均值/ var / sd等数据传递到计算中,或者要有一个可以获取数据和权重并在计算中使用它们的函数。

1 个答案:

答案 0 :(得分:0)

经过反复试验,我将eweibull包中的EnvStats函数编辑为,而不是使用mean(x)sd(x),改为使用wtd.mean(x,w)sqrt(wtd.var(x, w))。现在,它将运行并输出加权值。