2

我正在使用 R 中的“MuMIn”包来选择模型并计算输入变量(rain、brk、onset、wid)的效果大小。为了使变量之间的效应大小具有可比性,我使用 package.json 中的标准化函数对它们进行标准化arm。这是我正在关注的代码:

如需参考,请参考本文附录:http: //onlinelibrary.wiley.com/doi/10.1111/j.1420-9101.2010.02210.x/full Grueber et al. 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 之间吗?或者输出显示的效果大小是否正确?

请指教

非常感谢

4

1 回答 1

3

这更像是一个统计问题而不是编程问题,但是:您只标准化了预测变量,而不是响应变量(您指定了standardize.y=FALSE);因此,您的每个系数都代表预测变量中每 2 个 SD 变化的响应的预期变化(以响应的单位!)。如果响应的范围很大(在您的示例中必须如此),那么可能会有很大的变化。例如,如果我正在分析以毫克为单位测量的大象体重的变化,我可以预期对预测变量(例如性别、年龄、食物供应)的合理微小变化的响应会发生非常大的变化。你可能应该使用standardize.y=TRUE如果您想要真正的无量纲/无单位效应大小。即使是无量纲效应也不一定限制在 -1 和 +1 之间,但它们如此之大令人惊讶。

顺便说一句,我认为您的standardize功能来自arm包,而不是来自MuMIn( library("sos"); findFn("standardize",sortby="Function))。

于 2014-07-31T20:12:59.840 回答