R 加权数据的威布尔分布

R 加权数据的威布尔分布,r,distribution,weighted,weibull,R,Distribution,Weighted,Weibull,我需要一些时间来创建事件数据,以便为仿真模型的子组生成大约200个形状/比例参数。我已经分析了数据,它最好遵循威布尔分布。 通常,我会使用FitDistripPlus包和fitdist(x,“weibull”)来实现这一点,但是这些数据已经使用内核匹配进行了匹配,我有一个称为km的权重值变量,因此需要加入权重,就我所知,fitdist无法做到这一点。 使用伽马分布数据而不是使用fitdist我使用hsmisc包中的wtd.mean和wtd.var函数手动进行计算,效果很好。然而,我却找不到一个类

我需要一些时间来创建事件数据,以便为仿真模型的子组生成大约200个形状/比例参数。我已经分析了数据,它最好遵循威布尔分布。 通常,我会使用FitDistripPlus包和
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
然而,虽然这些都给出了结果,但我仍然不认为我能用权重将我的数据拟合到这些数据中

编辑:我还尝试了来自
ExtDist
包的类似名称的
eWebull
(我不是100%确定它是否仍然有效,但它确实有一个加权的weibull函数!)。我收到很多关于输入不可计算(NA或无限)的错误消息。如果我使用
map
,那么
map(test\u data,test\u km,eWebull)
我会得到所有100个值的[[NULL]值。如果我仅使用test\u数据进行尝试,我会得到一长串与optimx相关的错误

我还尝试了
propagate
中的
fitdire
,它给出了
weights
应该是特定长度的错误。例如,如果两者都设置为100,我会得到一个
weights
应该是长度94的错误。如果我将其设置为94,它会告诉我长度必须是132


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

经过多次尝试和错误后,我将
EnvStats
包中的
eWebell
函数编辑为,而不是使用
mean(x)
sd(x)
,改为使用
wtd.mean(x,w)
sqrt(wtd.var(x,w))
。现在运行并输出加权值

library(bbmle)
m1 <- mle2(y~dweibull(shape=exp(lshape),scale=exp(lscale)),
 data=data.frame(y=test_data),
 start=list(lshape=0,lscale=0)) 
eweibull <- eweibull(test_data)
eweibull$parameters
shape       scale
0.698091    935.239277