我正在研究在许多夏天(尽管首先我只是想让一年的工作)随着时间的推移(以不规则的时间间隔拍摄)苍蝇的累积出现。累积出现遵循 sigmoid 模式,我想创建 3 参数 Weibull 累积分布函数的最大似然估计。我一直尝试在fitdistrplus
包中使用的三参数模型不断给我一个错误。我认为这一定与我的数据结构有关,但我无法弄清楚。显然,我希望它将每个点读为x
(学位日)和y
(emergence) 值,但似乎无法读取两列。我得到的主要错误是“数学函数的非数字参数”或(代码略有不同)“数据必须是长度大于 1 的数字向量”。下面是我的代码,包括在数据框中添加的列,df_dd_em
用于累积出现和出现百分比,以防万一。
degree_days <- c(998.08,1039.66,1111.29,1165.89,1236.53,1293.71,
1347.66,1387.76,1445.47,1493.44,1553.23,1601.97,
1670.28,1737.29,1791.94,1849.20,1920.91,1967.25,
2036.64,2091.85,2152.89,2199.13,2199.13,2263.09,
2297.94,2352.39,2384.03,2442.44,2541.28,2663.90,
2707.36,2773.82,2816.39,2863.94)
emergence <- c(0,0,0,1,1,0,2,3,17,10,0,0,0,2,0,3,0,0,1,5,0,0,0,0,
0,0,0,0,1,0,0,0,0,0)
cum_em <- cumsum(emergence)
df_dd_em <- data.frame (degree_days, emergence, cum_em)
df_dd_em$percent <- ave(df_dd_em$emergence, FUN = function(df_dd_em) 100*(df_dd_em)/46)
df_dd_em$cum_per <- ave(df_dd_em$cum_em, FUN = function(df_dd_em) 100*(df_dd_em)/46)
x <- pweibull(df_dd_em[c(1,3)],shape=5)
dframe2.mle <- fitdist(x, "weibull",method='mle')