我使用 R 中的“MuMIn”包来选择模型并计算输入变量(rain、brk、onset、wid)的效应大小。为了使变量之间的效应大小具有可比性,我使用标准化函数对它们进行了标准化arm
包裹。这是我正在遵循的代码:
供参考,请参阅本文附录:http://onlinelibrary.wiley.com/doi/10.1111/j.1420-9101.2010.02210.x/full http://onlinelibrary.wiley.com/doi/10.1111/j.1420-9101.2010.02210.x/full格鲁伯等人。 2011:生态学和进化中的多模型推理:挑战和解决方案
data1<-read.csv("data.csv",header=TRUE) #reads the data
global.model<-lmer(yld.res ~ rain + brk + onset + wid + (1|state),data=data1,REML="FALSE") # prepares a global model
stdz.model <- standardize(global.model,standardize.y = FALSE) # standardise the input varaibles
model.set <- dredge(stdz.model) ### generates the full submodel set
top.models <- get.models(model.set, subset= delta<2) # selects models with delta AIC <2
model.avg(top.models) # calculates the average effect size of input variables
这是结果model.avg(top.models)
给出每个输入变量的平均效应大小
Coefficients:
(Intercept) brk rain wid onset
subset -4.281975e-14 -106.0919 51.54688 39.82837 35.68766
我阅读了标准化函数的工作原理 - 减去平均值并除以 2SD。
我的问题是:既然我已经标准化了输入变量,那么效应大小不应该在-1到1之间吗?或者输出显示的效果大小是正确的?
请指教
多谢
这更像是一个统计问题而不是编程问题,但是:您只标准化了预测变量,而不是响应变量(您指定standardize.y=FALSE
);因此,每个系数代表预测变量中每 2 个 SD 变化的预期响应变化(以响应单位表示!)。如果响应的范围很大(在您的示例中一定如此),那么可能会有很大的变化。例如,如果我正在分析以毫克为单位的大象体重的变化,我可以预期预测变量(例如性别、年龄、食物供应量)的相当小的变化的响应会发生很大的变化。你可能应该使用standardize.y=TRUE
如果您想要真正的无量纲/无单位效应大小。即使无量纲效应也不一定限制在 -1 和 +1 之间,但它们如此之大会令人惊讶。
顺便说一句,我认为你的standardize
函数来自于arm
包,不是来自MuMIn
(library("sos"); findFn("standardize",sortby="Function)
).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)