r - 带有加权数据的 Weibull 分布
问题描述
我有一些时间来处理需要为模拟模型的子组生成大约 200 个形状/比例参数的事件数据。我已经分析了数据,它最好遵循威布尔分布。通常,我会使用 fitdistrplus 包并fitdist(x, "weibull")
执行此操作,但是此数据已使用内核匹配进行匹配,并且我有一个称为权重值的变量,km
因此需要合并一个权重,fitdist
就我而言,这是无法做到的可以告诉。使用我的伽马分布数据而不是使用fitdist
我手动使用wtd.mean
and进行计算wtd.var
函数hsmisc
,效果很好。然而,为 weibull 找到一个类似的公式让我望而却步。
我一直在测试一些选项并将它们与 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 (ExtDist) 中的 Weibull 分布
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% 确定它仍然有效,但确实有一个需要重量的 weibull 函数!)。我收到很多关于输入不可计算(NA 或无限)的错误消息。如果我这样做map
,那么map(test_data, test_km, eWeibull)
我得到所有 100 个值的 [[NULL] 。如果我只用 test_data 尝试它,我会得到一长串与 optimx 相关的错误。
我也尝试过fitDistr
从中propagate
给出weights
应该是特定长度的错误。例如,如果两者都设置为 100,我会收到一个错误weights
长度应该为 94 的错误。如果我将其设置为 94,它会告诉我它的长度必须为 132。
我需要能够将一组预先加权的均值/var/sd 等数据传递到计算中,或者具有可以获取数据和权重并在计算中同时使用它们的函数。
解决方案
经过多次试验和错误,我将包中的eweibull
函数编辑为而不是使用and ,改为使用and 。现在运行并输出加权值。EnvStats
mean(x)
sd(x)
wtd.mean(x,w)
sqrt(wtd.var(x, w))
推荐阅读
- python - 按性别拆分名单
- python - 如何在想要的文档之前遍历文件夹?
- php - 如何修复“Wordpress”wp-admin/includes/file.php“错误代码 - 500
- python-3.x - 无法使用 sqlalchemy 访问 Oracle 数据库
- python - 如何在表单管理员中添加十字以使用 django 添加对象
- javascript - 使用inv数据属性和javascript为类中的链接设置操作
- android - 如何在我的 Android 应用程序中修复此错误?
- javascript - React Slick 滑块地图不显示幻灯片?
- flutter - 与堆栈中的下部小部件交互
- java - requestLocationUpdates 第二个参数以 km 或 m 为单位