簡體   English   中英

線性回歸不返回所有系數

[英]Linear regression not returning all coefficients

我正在使用所有預測變量(我有384個預測變量)進行線性回歸,但是從匯總中只能得到373個系數。 我想知道為什么R不返回所有系數,如何獲得所有384個系數?

full_lm <- lm(Y ~ ., data=dat[,2:385]) #384 predictors
coef_lm <- as.matrix(summary(full_lm)$coefficients[,4]) #only gives me 373

首先, summary(full_lm)$coefficients[,4]返回p-values而不是系數。 現在,要真正回答您的問題,我相信您的某些變量會因為與其他變量完全共線而退出估算。 如果運行summary(full_lm) ,您將看到這些變量的估計在所有字段中返回NA 因此,它們不包含在summary(full_lm)$coefficients 舉個例子:

x<- rnorm(1000)
x1<- 2*x
x2<- runif(1000)
eps<- rnorm(1000)
y<- 5+3*x + x1 + x2 + eps
full_lm <- lm(y ~ x + x1 + x2) 
summary(full_lm)
#Call:
#lm(formula = y ~ x + x1 + x2)
#
#Residuals:
#     Min       1Q   Median       3Q      Max 
#-2.90396 -0.67761 -0.02374  0.71906  2.88259 
#
#Coefficients: (1 not defined because of singularities)
#            Estimate Std. Error t value Pr(>|t|)    
#(Intercept)  4.96254    0.06379   77.79   <2e-16 ***
#x            5.04771    0.03497  144.33   <2e-16 ***
#x1                NA         NA      NA       NA    
#x2           1.05833    0.11259    9.40   <2e-16 ***
#---
#Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#
#Residual standard error: 1.024 on 997 degrees of freedom
#Multiple R-squared:  0.9546,   Adjusted R-squared:  0.9545 
#F-statistic: 1.048e+04 on 2 and 997 DF,  p-value: < 2.2e-16

coef_lm <- as.matrix(summary(full_lm)$coefficients[,1])
coef_lm
#(Intercept)    4.962538
#x  5.047709
#x2 1.058327

例如,如果數據中的某些列是其他列的線性組合,則系數將為NA並且如果您以這種方式編制索引,則會自動將其省略。

a <- rnorm(100)
b <- rnorm(100)
c <- rnorm(100)
d <- b + 2*c

e <- lm(a ~ b + c + d)

Call:
lm(formula = a ~ b + c + d)

Coefficients:
(Intercept)            b            c            d  
   0.088463    -0.008097    -0.077994           NA  

但是索引...

> as.matrix(summary(e)$coefficients)[, 4]
(Intercept)           b           c 
  0.3651726   0.9435427   0.3562072 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM