问题标签 [fitdistrplus]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
r - 使用 fitdistplus 包拟合任意分布的问题
我正在尝试使用fitdist()
R 中 fitdistrplus 包中的函数来拟合我的数据。我通过关键字成功使用了正态分布和对数正态分布'norm'
,并且'lnorm'
通过在线搜索找到了这些分布。
我无法让其他发行版正常工作;的帮助fitdist()
说:
distr:一个字符串“name”,命名一个分布,必须定义对应的密度函数dname、对应的分布函数pname和对应的分位数函数qname,或者直接定义密度函数。
我检查并在进入?norm
或?norm
进入 R 命令行时,既没有功能norm()
也没有lnorm()
找到。这让我完全困惑。
例如fitdist(data, 'poisson')
,当我尝试时,我收到以下错误消息:
Error in fitdist(data$time, "poisson") :
The dpoisson function must be defined
我在R中有点菜鸟,有人可以提示吗?
r - 查找具有最低分量值的变量名称的快速方法
我有一个函数拟合分布并返回一个由分布名称、均值、sd 等组成的向量。我正在测试几个分布但我不能依赖 gofstat() 因为当有太多零要考虑时它会发疯.
因此,我必须手动比较几个变量的 AIC,确定哪些实际上属于“fitdist”类,并返回具有最低 AIC 的变量的名称。一旦我有了它,我计算平均值、标准差等并返回。
目前的代码如下所示:
它可以工作,但是要考虑数千个样本非常慢。我欢迎任何建议如何优化它并使其“更清洁”和更快。
顺便说一句,这就是我之前所拥有的,但是就像我提到的那样 - 样本包含太多的零,它很合适(双关语无意!)
ans[!test & ok] <- rep(no, length.out = length(ans))[!test & 中的错误:替换的长度为零
r - 使用 fitdist() 拟合负二项分布时的估计标准误差和大小“NA”(不是 NaN)
这是我的第一篇文章,所以如果有任何改进或我可以提供的更多信息,请告诉我。
我在运行 10.11.6 的 Mac 上使用 R 3.4.3。
我正在处理计数数据。我对负二项分布的 theta/色散/尺寸参数 (k) 感兴趣(我的理解是这些术语可以互换使用)。我正在将 NB 分布拟合到这些数据中,通过使用该fitdistrplus
包的最大似然fitdist
函数来估计参数。如果我的不同数据组使用不同的分布更好地建模,我很感兴趣。因此,我将分布拟合到所有数据。然后根据一个 2 水平因子拆分数据,并将分布拟合到这两个单独的组。
当我将分布拟合到整个数据集时,我得到了带有标准误差的 mu 和大小的估计值。然后我拆分数据。同样的方法适用于一半的数据(A 组),但不适用于另一半(B 组),理论上应该在结构上相同。相反,我得到了 mu 和 size 的估计值,但标准误差为 NA。
optim
对后面的函数施加 lower = c(0,0) 和 upper = c(inf, inf)fitdist
也没有实现任何效果,并且由于输出是 NA 而不是 NaN 我认为它与试图无论如何估计负数(经常讨论的错误100)。
只是出于兴趣,我删除了所有的零,以防它与此有关,而那也没有任何作用。
所以我的问题是为什么要产生 NA(以及最终我如何获得估计的标准误差)?
这是我的数据和代码:
r - `fitdist` 错误信息:函数 mle 无法估计参数,错误代码为 1
我正在尝试使用包中的fitdist
函数fitdistrplus
来使我的数据适合 Burr 分布。
受此处发布的问题的启发,我注意到错误可能是我的数据包含 0 值,因此我将 0.1 添加到所有 0 值。
这个问题有什么解决办法吗?谢谢你的帮助。
r - R optim() L-BFGS-B 需要 'fn' 的有限值
我正在使用 MLE 和 l 矩方法进行伽马分布、指数分布和威布尔分布。
我在伽玛分布中使用了 fitdistr() 。
我有一个错误消息说 L-BFGS-B 需要有限的“fn”值我想知道我是否可以通过将优化方法从 L-BFGS-B 更改为 BFGS 来解决这个问题。
stats::optim(x = c(36.576, 1.778, 30.48, 1.524, 21.336, 3.302, : L-BFGS-B 需要有限的 'fn' 值
这是我的代码。
样本数据:
0 1972 4 4 4.318 2
1 1972 4 4 6.604 4
2 1972 4 4 3.302 6
3 1972 4 4 0.762 8
4 1972 5 5 0.254 10
5 1972 5 5 3.048 12
6 1972 5 5 0.254 14
7 1972 5 5 1.778 16
8 1972 5 5 0.254 18
9 1972 5 5 1.778 20
10 1972 5 5 0.762 22
在我的主文件中,请参见下面的代码:
r - 使用 fitdistrplus 包中的 fitdist() 时抑制错误消息
我正在使用包中的某些功能fitdistrplus
作为我正在创建的包的一部分。
我试图防止在运行函数时在控制台中显示任何错误消息,而是希望将错误消息记录在我正在创建的错误日志中。
在大多数情况下,使用tryCatch()
使我能够做到这一点。
但特别是对于该fitdist()
函数,即使正在将消息写入错误日志(意味着tryCatch()
表达式正在运行),我也无法抑制在控制台中打印的错误消息。
我在下面的代码中复制了我的问题。
我想禁止打印此错误消息func_fit()
。
我已经尝试过以下替代方案:
try()
与silent = TRUE
. 仍然会打印错误消息。conditionMessage()
给出相同的结果。withCallingHandlers()
在某些帖子和线程中已提出建议,但我不确定如何正确实施。- 与函数一起使用
invisible()
仍然会打印错误。
r - 创建函数以整合关于 x 的 2 个分布
我想创建一个函数,以便针对 x 集成 2 个分布(PDF 和 CDF)的乘积。这是为了进行概率风险评估并确定“预期总风险”。
到目前为止,我的代码不起作用,是......
我在哪里做错了什么?
此外,我使用“fitdist”函数拟合了我的分布,现在我正在对分布参数进行硬编码,以尝试使上述集成正常工作。但是,我将如何直接从拟合分布中获取形状/速率/均值对数等 - 下面示例代码中的“拟合”对象?
r - 伽马分布的 fitdist 错误
以下是我的代码:
错误说:
fitdist(s, "gamma", method = "mle") 中的错误:函数 mle 无法估计参数,错误代码为 100
r - 如何从图形中获取值?
我做了一个分布拟合,正在查看 QQ-Plot,想知道是否有一种简单的方法可以从图形中获取相应的值。
使用最后一行代码,我收到 QQ-Plot 而不计算值。但我也对这些价值观感兴趣。我怎样才能获得它们?
最好的问候诺比