将数据拟合到R中的分布:错误

时间:2018-03-12 17:30:21

标签: r error-handling distribution

我将我的数据拟合到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之间。

我一直收到以下错误。我首先想到的是因为我有几个&#39; NA&#39;在我的数据框中,但我想我解决了这个问题并且问题仍然存在(这就是我从EP1sh中删除NA的原因:)。

EP1sh <- na.omit(EP1$Number_share)
EP1sh <- data.frame(EP1sh)

错误是:

  

my_data&lt; - EP1sh   plotdist(my_data,histo = TRUE,demp = TRUE)

     
    

plotdist出错(my_data,histo = TRUE,demp = TRUE):       数据必须是数字向量

  
     

descdist(my_data,discrete = FALSE,boot = 500)

     
    

descdist中的错误(my_data,discrete = FALSE,boot = 500):       数据必须是数字向量

  
     

fit_w&lt; - fitdist(my_data,&#34; weibull&#34;)

     
    

fitdist出错(my_data,&#34; weibull&#34;):       数据必须是长度大于1的数字向量

  
     

fit_g&lt; - fitdist(my_data,&#34; gamma&#34;)

     
    

fitdist出错(my_data,&#34; gamma&#34;):       数据必须是长度大于1的数字向量

  
     

fit_ln&lt; - fitdist(my_data,&#34; lnorm&#34;)

     
    

fitdist出错(my_data,&#34; lnorm&#34;):       数据必须是长度大于1的数字向量

  
     

摘要(fit_ln)

     
    摘要中的

错误(fit_ln):object&#39; fit_ln&#39;找不到

  

任何想法都会很棒!

1 个答案:

答案 0 :(得分:1)

plotdist()descdist()fitdist()fitdistr()函数中,您需要指定一个向量,例如my_data$Number_share而不是整个数据框my_data;假设您的“列”名称为Number_share,请相应地进行修改。这应该有希望解决你的问题!