首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >考虑随机/混合效应后的共线性

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

Stack Overflow用户
提问于 2014-10-29 14:50:42
回答 1查看 6K关注 0票数 5

在考虑随机效应后,两个/更多的预测因子能变得更多/更少共线吗?

在我的例子中,我已经测试了共线性,在建模之前,例如使用VIF,以及所有的检查。然而,不同模型的排序(使用IC)使我不确定它是否真的能在预测器之间分开。

有什么想法吗?

ps!一个比我更有代表性的人能添加一个更相关的标签,比如共线性吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-20 18:26:25

在这个博客帖子中列出了一些解决方案。他们使用一些代码来创建一个函数,该函数将分别从lmernlme R包中为lmernlme模型对象计算VIFs。我已经复制了下面函数的代码。

代码语言:javascript
复制
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 }

一旦运行该代码一次,就可以在R环境中执行一个新函数vif.lme。下面我给出了一个使用随机数据集的例子,以及一个信息不丰富的随机效应。我使用一个无信息的随机效应,使得lmenlme中的结果将为预测器生成与R基中的lm相同的参数值。然后,我使用上面的代码计算方差通货膨胀因子,以及用于计算线性模型的VIF的car软件包中的vif函数式,以表明它们提供了相同的输出。

代码语言:javascript
复制
#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)
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26633483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档