我正在使用MuMin包中的函数dredge进行模型选择。我的模型中有一个多项式。我的印象是(https://www.rdocumentation.org/packages/MuMIn/versions/1.42.1/topics/dredge,请参阅“交互”)MuMin作为标准的沟渠模型,包括高阶项而没有相应的低阶项;然而,当我使用它时,顶部模型只包括高阶项。
下面是我用来创建全局模型的代码,其中包括hour
:
sc.mod.env.hour<-clmm(seedcat~hour+I(hour^2)+MeanSpeed+RH+TKE+AirTemp+MeanUpdraft+(1|jdayfac), data=sc.data, na.action = na.fail, Hess =TRUE)
字符串
但是当我运行dredge时:
dro.env.hour<-dredge(sc.mod.env.hour)
型
输出包括包含I(hour^2)
但不包含hour
的模型
Model selection table
(Intrc) ArTmp hour hour^2 MnSpd MnUpd RH TKE df logLik AICc delta weight
46 + -1.2170 -3.340 1.894 -4.219 13 -571.772 1170.5 0.00 0.154
62 + -1.3410 -3.478 1.964 0.30990 -4.269 14 -570.882 1170.9 0.37 0.128
45 + -2.882 2.052 -3.214 12 -573.245 1171.3 0.81 0.103
47 + -0.3595 -2.670 1.942 -3.601 13 -572.374 1171.7 1.20 0.084
63 + -0.4495 -2.712 2.010 0.33870 -3.645 14 -571.350 1171.8 1.30 0.080
型
我也尝试过使用poly(hour,2)
来定义全局模型,但这导致只包含一个小时。
我使用的是clmm
,但我尝试了一个更简单的模型,使用lm
,并得到了相同的结果。
我不确定这是否应该在交叉验证,但这是一个编程问题,而不是一个统计问题,所以认为它应该在这里。
编辑:我已经通过使用子集解决了这个问题:
dro.env.hour<-dredge(sc.mod.env.hour, subset=(dc(hour, I(hour^2)))
型
虽然目前还不清楚为什么这是一个问题摆在首位。
2条答案
按热度按时间wmomyfyw1#
如果其他人有这个问题,我在MuMin手册中找到了这个解决方案:
首先创建一个有名称的子集,在这种情况下,我想要X和Y的二次效应)
字符串
然后,例如,
型
现在使用指定的子集进行dredge
型
检查汇总表
型
vm0i2vca2#
另一种可能的解决方案(未经测试!)是在模型中使用
poly(hour, 2)
而不是hour + I(hour^2)
(或者,如果你真的想要“原始”而不是正交多项式,poly(hour, 2, raw=TRUE)
)。这样R就可以识别poly()
是一个单独的项。(hour + I(hour^2)
的问题是,需要在模型框架结构机器中进行一些奇特的解析,才能分辨出这些术语是相关的。