美文网首页
PH525x series - Collinearity

PH525x series - Collinearity

作者: 3between7 | 来源:发表于2019-12-01 23:23 被阅读0次

    共线性

    当自变量之间存在共线性时,线性回归得到的最小二乘估计的值并不唯一。共线性简单点说就是,设计矩阵中的某几列存在数学关系,如下面这个矩阵,后两列相加就等于第一列:

    \left\{\begin{matrix}1&0&1 \\0&1&-1 \\ 1&1&0\end{matrix}\right\}

    在R中,可以使用qr()函数判断矩阵是否存在共线性:

    A <- matrix(c(1,0,1,0,1,1,1,-1,0),3,3)
    qr(A)$rank
    #[1] 2
    

    rank在这里的意思是,互相独立的那些列的数目。如果rank小于矩阵的列数,那就说明这个矩阵存在共线性。

    案例

    四组小鼠,每组2个样本,分别进行ABCD四种处理,其中,前两组是雌性小鼠,后两组是雄性。这样得到的设计矩阵就存在共线性的问题:

    Sex <- c(0,0,0,0,1,1,1,1)
    A <-   c(1,1,0,0,0,0,0,0)
    B <-   c(0,0,1,1,0,0,0,0)
    C <-   c(0,0,0,0,1,1,0,0)
    D <-   c(0,0,0,0,0,0,1,1)
    X <- model.matrix(~Sex+A+B+C+D-1)
    cat("ncol=",ncol(X),"rank=", qr(X)$rank,"\n")
    
    ## ncol= 5 rank= 4
    

    那么如何消除这种影响呢?最好的做法是在实验设计之初是平衡性别和处理这两个变量:

    Sex <- c(0,1,0,1,0,1,0,1)
    A <-   c(1,1,0,0,0,0,0,0)
    B <-   c(0,0,1,1,0,0,0,0)
    C <-   c(0,0,0,0,1,1,0,0)
    D <-   c(0,0,0,0,0,0,1,1)
    X <- model.matrix(~Sex+A+B+C+D-1)
    cat("ncol=",ncol(X),"rank=", qr(X)$rank,"\n")
    
    ## ncol= 5 rank= 5
    

    参考原文

    相关文章

      网友评论

          本文标题:PH525x series - Collinearity

          本文链接:https://www.haomeiwen.com/subject/vqcgwctx.html