r - 考虑随机/混合效应后的共线性

标签 r regression lme4 mixed-models nlme

在考虑随机效应后,两个/更多预测变量是否会变得更多/更少共线?

就我而言,我已经在建模之前测试了共线性,例如使用 VIF,一切都会检查出来。然而,不同模型的排名(使用 IC)让我不确定它是否真的可以在预测变量之间分离。

有任何想法吗?

附!比我更高代表的人可以添加更相关的标签,例如共线性吗?

最佳答案

这里列出了一些解决方案 blog post .他们使用一些代码来创建一个函数来计算 lmer 的 VIF。和 lme来自 lmer 的模型对象和 nlme R 包,分别。我已经复制了下面函数的代码。

vif.lme <- function (fit) {
    ## adapted from rms::vif
    v <- vcov(fit)
    nam <- names(fixef(fit))
    ## exclude intercepts
    ns <- sum(1 * (nam == "Intercept" | nam == "(Intercept)"))
    if (ns > 0) {
        v <- v[-(1:ns), -(1:ns), drop = FALSE]
        nam <- nam[-(1:ns)] }
    d <- diag(v)^0.5
    v <- diag(solve(v/(d %o% d)))
    names(v) <- nam
    v }

一旦您运行该代码一次,您将能够执行一个新函数,vif.lme在 R 环境中。我在下面给出了一个使用随机数据集和无信息随机效应的示例。我使用了无信息随机效应,因此 lme 的结果内nlme将为预测变量生成与 lm 相同的参数值在基础 R 中。然后,我使用上面的代码来计算方差膨胀因子,以及 vif来自 car 的 functino用于计算线性模型的 VIF 的包,以表明它们提供相同的输出。
#make 4 vectors- c is used as an uninformative random effect for the lme model
a<-c(1:10)
b1<-c(2,4,6,8,10,100,14,16,18,20)
b2<-c(1,9,2,4,5,6,4,3,2,-1)
c<-c(1,1,1,1,1,1,1,1,1,1)
test<-data.frame(a,b1,b2,c)

#model a as a function of b1 and b2, and c as a random effect
require(nlme)
fit<-lme(a~b1+b2, random=~1|c,data=test)
#see how the model fits
summary(fit)
#check variance inflation factors
vif.lme(fit)

#create a new regular linear regression model and check VIF using the car package.
#answers should be the same, as our random effect above was totally uninformative
require(car)
fit2<- lm(a~b1+b2,data=test)
#check to see that parameter fits are the same.
summary(fit2)
#check to see that variance inflation factors are the same
vif(fit2)

关于r - 考虑随机/混合效应后的共线性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26633483/

相关文章:

r - 如何在nlmer中为四参数逻辑模型添加固定效应

r - 如何从 lme4 中提取摘要的固定效果部分?

r - 如何在几何线上添加标签?

r - 为了使用 phantom() 函数,我需要什么库或需要什么?

r - 将 R 列表保存为单个元素

python - 训练的 Tensorflow CNN 回归 MSE 高于测试

python - SVR : Predicted values are way off from the actual ones despite high r-squared and and low MSE

python - 实现随机梯度下降

r - 无法基于 ranef(lmerMod) 更改 dotplot() (格子包)的布局

json - 将 JSON 数据下载到 R