【发布时间】:2018-03-12 17:30:20
【问题描述】:
我正在将我的数据拟合到 R 中的多个分布。目标是查看哪个分布最适合我的数据。我使用的代码基于:http://www.di.fc.ul.pt/~jpn/r/distributions/fitting.html
my_data <- EP1sh
plotdist(my_data, histo = TRUE, demp = TRUE)
descdist(my_data, discrete=FALSE, boot=500)
fit_w <- fitdist(my_data, "weibull")
fit_g <- fitdist(my_data, "gamma")
fit_ln <- fitdist(my_data, "lnorm")
summary(fit_ln)
par(mfrow=c(2,2))
plot.legend <- c("Weibull", "lognormal", "gamma")
denscomp(list(fit_w, fit_g, fit_ln), legendtext = plot.legend)
cdfcomp (list(fit_w, fit_g, fit_ln), legendtext = plot.legend)
qqcomp (list(fit_w, fit_g, fit_ln), legendtext = plot.legend)
ppcomp (list(fit_w, fit_g, fit_ln), legendtext = plot.legend)
fit = fitdistr(my_data, densfun="lognormal")
我的数据框是一个单向量 EP1sh,它有大约 80 个条目,值在 1 到 6 之间。
我不断收到以下错误。我首先认为这是因为我的数据框中有几个“NA”,但我认为我解决了这个问题并且问题仍然存在(这就是我从 EP1sh 中删除 NA 的方式:)
EP1sh <- na.omit(EP1$Number_share)
EP1sh <- data.frame(EP1sh)
错误是:
我的数据
plotdist 中的错误(my_data,histo = TRUE,demp = TRUE): 数据必须是数值向量
descdist(my_data, 离散=FALSE, boot=500)
descdist 中的错误(my_data,离散 = FALSE,启动 = 500): 数据必须是数值向量
fit_w
fitdist(my_data, "weibull") 中的错误: data 必须是长度大于 1 的数值向量
fit_g
fitdist(my_data, "gamma") 中的错误: data 必须是长度大于 1 的数值向量
fit_ln
fitdist(my_data, "lnorm") 中的错误: data 必须是长度大于 1 的数值向量
总结(fit_ln)
总结错误(fit_ln):找不到对象“fit_ln”
任何想法都会很棒!
【问题讨论】:
-
你能为我们定义
EP3吗? -
您好 Erik,感谢您的快速响应。我看到在这篇文章中我不小心写了 EP3,我的意思是 EP1sh。将在上面的问题中解决它,谢谢!
-
感谢 - 测试我已经定义了
EP1sh <- rep(1:6, 80/6)并且没有错误。str(EP1sh)会给你带来什么回报? -
@ErikKornet 我改变了问题。看到我的 R 代码中有一些其他名称引用草率,所以错误随着编辑而改变。
-
@ErikKornet 谢谢 -
str(EP1sh)返回 > str(EP1sh) 'data.frame': 83 obs。 1 个变量:$ EP1sh:原子 2 6 3 1 1 1 1 1 1 1 ... ..- attr(*, "na.action")=Class 'omit' int [1:88] 1 6 8 14 18 21 23 25 28 30 ...`
标签: r error-handling distribution