我使用R中的'MuMIn'包来选择模型并计算输入变量(rain,brk,onset,wid)的效果大小。为了使我的效果大小在变量之间具有可比性,我使用arm
包中的标准化函数对它们进行了标准化。以下是我要遵循的代码:
供参考,请参阅本文的附录:http://onlinelibrary.wiley.com/doi/10.1111/j.1420-9101.2010.02210.x/full Grueber等。 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之间吗?或输出显示的效果大小是否正确?
请告知
非常感谢
答案 0 :(得分:3)
这更像是一个统计问题,而不是一个编程问题,但是:你只是标准化预测变量,而不是响应变量(你指定standardize.y=FALSE
);因此,每个系数表示预测变量中每2个SD变化的响应的预期变化(在响应的单位中!)。如果响应的范围很大(因为它必须在您的示例中),那么可能会有非常大的变化。例如,如果我正在分析以毫克为单位测量的大象重量的变化,我可以预期,对于预测因子(例如性别,年龄,食物供应)的相当小的变化,响应会发生非常大的变化。如果你想要真正的无量纲/无单位效果大小,你应该使用standardize.y=TRUE
。即使是非维度效应也不一定限制在介于-1和+1之间,但如果它们如此之大,那将是令人惊讶的。
顺便说一句,我认为您的standardize
功能来自arm
包,而不是来自MuMIn
(library("sos"); findFn("standardize",sortby="Function)
)。