Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R `lm`摘要不显示所有因子级别_R_Regression_Linear Regression_Lm - Fatal编程技术网

R `lm`摘要不显示所有因子级别

R `lm`摘要不显示所有因子级别,r,regression,linear-regression,lm,R,Regression,Linear Regression,Lm,我正在对许多属性进行线性回归,包括两个分类属性,B和F,我没有得到我拥有的每个因子级别的系数值 B有9个级别,F有6个级别。当我最初运行模型(带有截距)时,我得到了8个B系数和5个F系数,我理解为截距中包含的每个系数的第一级 我想根据系数对B和F中的级别进行排序,因此我在每个因子后添加了-1,以将截距锁定在0,这样我就可以得到所有级别的系数 Call: lm(formula = dependent ~ a + B-1 + c + d + e + F-1 + g + h, data = input

我正在对许多属性进行线性回归,包括两个分类属性,
B
F
,我没有得到我拥有的每个因子级别的系数值

B
有9个级别,
F
有6个级别。当我最初运行模型(带有截距)时,我得到了8个
B
系数和5个
F
系数,我理解为截距中包含的每个系数的第一级

我想根据系数对
B
F
中的级别进行排序,因此我在每个因子后添加了
-1
,以将截距锁定在0,这样我就可以得到所有级别的系数

Call:
lm(formula = dependent ~ a + B-1 + c + d + e + F-1 + g + h, data = input)

Coefficients:
       Estimate Std. Error t value Pr(>|t|)    
a     2.082e+03  1.026e+02  20.302  < 2e-16 ***
B1   -1.660e+04  9.747e+02 -17.027  < 2e-16 ***
B2   -1.681e+04  9.379e+02 -17.920  < 2e-16 ***
B3   -1.653e+04  9.254e+02 -17.858  < 2e-16 ***
B4   -1.765e+04  9.697e+02 -18.202  < 2e-16 ***
B5   -1.535e+04  1.388e+03 -11.059  < 2e-16 ***
B6   -1.677e+04  9.891e+02 -16.954  < 2e-16 ***
B7   -1.644e+04  9.694e+02 -16.961  < 2e-16 ***
B8   -1.931e+04  9.899e+02 -19.512  < 2e-16 ***
B9   -1.722e+04  9.071e+02 -18.980  < 2e-16 ***
c    -6.928e-01  6.977e-01  -0.993 0.321272    
d    -3.288e-01  2.613e+00  -0.126 0.899933    
e    -8.384e-01  1.171e+00  -0.716 0.474396    
F2    4.679e+02  2.176e+02   2.150 0.032146 *  
F3    7.753e+02  2.035e+02   3.810 0.000159 ***
F4    1.885e+02  1.689e+02   1.116 0.265046    
F5    5.194e+02  2.264e+02   2.295 0.022246 *  
F6    1.365e+03  2.334e+02   5.848 9.94e-09 ***
g     4.278e+00  7.350e+00   0.582 0.560847    
h     2.717e-02  5.100e-03   5.328 1.62e-07 ***
呼叫:
lm(公式=相关的~a+B-1+c+d+e+F-1+g+h,数据=输入)
系数:
估计标准误差t值Pr(>t)
a 2.082e+031.026e+0220.302<2e-16***
B1-1.660e+04 9.747e+02-17.027<2e-16***
B2-1.681e+04 9.379e+02-17.920<2e-16***
B3-1.653e+04 9.254e+02-17.858<2e-16***
B4-1.765e+04 9.697e+02-18.202<2e-16***
B5-1.535e+04 1.388e+03-11.059<2e-16***
B6-1.677e+04 9.891e+02-16.954<2e-16***
B7-1.644e+049.694e+02-16.961<2e-16***
B8-1.931e+04 9.899e+02-19.512<2e-16***
B9-1.722e+04 9.071e+02-18.980<2e-16***
c-6.928e-01 6.977e-01-0.993 0.321272
d-3.288e-01 2.613e+00-0.126 0.899933
e-8.384e-01 1.171e+00-0.716 0.474396
F2 4.679e+02 2.176e+02 2.150 0.032146*
F3 7.753e+02 2.035e+02 3.810 0.000159***
F4 1.885e+02 1.689e+02 1.116 0.265046
F5 5.194e+02 2.264e+02 2.295 0.022246*
F6 1.365e+03 2.334e+02 5.848 9.94e-09***
g 4.278e+007.350e+000.5820.560847
h 2.717e-02 5.100e-03 5.328 1.62e-07***
这部分起作用,导致显示所有级别的
B
,但是
F1
仍不显示。由于不再有截距,我很困惑为什么
F1
不在线性模型中。

切换调用顺序,使
+F-1
位于
+B-1
之前,将导致
F
的所有级别的系数可见,但不可见
B1


是否有人知道如何显示
B
F
的所有级别,或者如何评估
F1
相对于我的输出中的其他
F
级别的相对权重?

这个问题被反复提出,但不幸的是,没有令人满意的答案,这可能是一个适当的重复目标。看来我需要写一个


大多数人都知道这与“对比”有关,但不是每个人都知道为什么需要它,以及如何理解它的结果。我们必须查看模型矩阵,以充分消化这一点

假设我们对一个有两个因素的模型感兴趣:
~f+g
(数值协变量不重要,所以我不包括任何一个;响应不会出现在模型矩阵中,所以也放弃它)。考虑下面的可重复的例子:

set.seed(0)

f <- sample(gl(3, 4, labels = letters[1:3]))
# [1] c a a b b a c b c b a c
#Levels: a b c

g <- sample(gl(3, 4, labels = LETTERS[1:3]))
# [1] A B A B C B C A C C A B
#Levels: A B C
所以
span{f1,f2,f3}=span{g1,g2,g3}=span{(截距)}
在此完整规范中,有两列无法识别
X0
将具有列秩
1+3+3-2=5

qr(X0)$rank
# [1] 5
因此,如果我们用该
X0
拟合线性模型,7个参数中的2个系数将为
NA

y <- rnorm(12)  ## random `y` as a response
lm(y ~ X - 1)  ## drop intercept as `X` has intercept already

#X0(Intercept)           X0f1           X0f2           X0f3           X0g1  
#      0.32118        0.05039       -0.22184             NA       -0.92868  
#         X0g2           X0g3  
#     -0.48809             NA  

李哲远的回答很简单,线性回归是原始函数到一组简单函数(变量)的正交投影。如果两个(或多个)变量相同(例如常量函数),则只保留一个变量。而且好像
R
只保留了第一次出现谢谢游哲远这么详细的解释!现在我明白了为什么我不能用这种方法删除一列(截距)。我将研究您建议的选项,以找到最适合我的数据的选项:)
qr(X0)$rank
# [1] 5
y <- rnorm(12)  ## random `y` as a response
lm(y ~ X - 1)  ## drop intercept as `X` has intercept already

#X0(Intercept)           X0f1           X0f2           X0f3           X0g1  
#      0.32118        0.05039       -0.22184             NA       -0.92868  
#         X0g2           X0g3  
#     -0.48809             NA