我很难使用fitdist使分布适合我的样本数据。

这是代码:

fittrial <<- dnorm(severity,mean(severity),var(severity))
fitdist(fittrial,"normal")


我收到此错误:


fitdist(fittrial,“ normal”)错误:
必须定义标准函数


我看了网上,并尝试了所有我能理解的方法。我会很感激我能得到的任何帮助。

最佳答案

主要问题是在不同程序包中的两个相似命名的函数之间的混淆:MASS::fitdistr()(为此densfun参数指定“ normal”起作用)和fitdistrplus::fitdist()(对此没有作用)。有关如何使用fitdistrplus::fitdist()的详细信息,请参见@Rakurai的答案。该答案集中在MASS::fitdistr()上。

此外:


dnorm()将平均值和标准偏差(而不是平均值和方差)作为参数。
如果可以避免,请不要使用<<-赋值运算符。




severity <- 1:10
set.seed(101)  ## for reproducibility
fittrial <- rnorm(length(severity),mean(severity),sd(severity))

library("MASS")


适合模拟法线的偏离:

fitdistr(fittrial,"normal")
##      mean         sd
##   6.2418957   1.6785684
##  (0.5308099) (0.3753393)


适合原始数据:

fitdistr(severity,"normal")
##      mean         sd
##   5.5000000   2.8722813
##  (0.9082951) (0.6422616)

10-07 13:01