lm系数太多

问题描述 投票:0回答:1

我正在研究每名学生的支出与比萨成绩(标准测试)之间的关系,我知道这种回归不能给我带来塞特里亚式的亲密关系,但这是我练习的重点,我必须解释为什么不起作用。

我使用基本代码在R上运行回归:

lm1=lm(a~b)

但是问题是R报告我32系数,这是我人口总数的数量,而我应该只接受斜率和截距,因为这是简单的回归

这是R给我的输出:

Call:
lm(formula = a ~ b)

Coefficients:
(Intercept)     b10167.3     b10467.8     b10766.4     b10863.4     b10960.1    b11.688.4     b11028.1       b11052     b11207.3     b11855.9     b12424.3     b13930.8  
   522.9936       5.9561       0.3401     -20.6884     -14.8603     -15.0777      -3.5752     -23.0459     -27.1021     -42.2692     -20.4485     -35.3906     -30.7468  
   b14353.3     b2.997.9     b20450.9      b3714.8      b4996.3      b5291.6      b5851.7      b6190.7      b6663.3      b6725.3      b6747.2      b7074.9      b8189.1  
   -18.4412    -107.2872     -39.6793     -98.2315     -80.2505     -36.2202     -48.6179     -64.2414       1.3887     -19.0389     -59.9734     -32.0751     -31.5962  
    b8406.2      b8533.5      b8671.1      b8996.3      b9265.7      b9897.2  
   -13.4219     -26.0155     -13.9045     -37.9996     -17.0271     -27.2954 

您可以看到有32个系数,而我应该只接收两个系数,看来R正在读取总体的每个单位作为变量,但数据集像往常一样在行中设置了变量。我不知道是什么问题。

r regression lm
1个回答
0
投票
这不是lm函数的问题。看来R正在将

$ b $视为类别变量。我制作了一个包含5个观察值的小数据,分别是$ a $(数字变量)和$ b $(分类变量)。

当我拟合模型时,您会看到与您相似的输出(5个估计系数)。

data = data.frame(a = 1:5, b = as.factor(rnorm(5))) lm(a~b, data)

Call:
lm(formula = a ~ b, data = data)

Coefficients:
       (Intercept)  b-0.16380292500502  b0.213340249988902  b0.423891299272316   b0.63738307939327  
                 4                  -3                  -1                   1                  -2  
要纠正此问题,您需要将

$ b $

转换为数值向量。data$b = as.numeric(as.character(data$b)) lm(a~b, data)
Call:
lm(formula = a ~ b, data = data)

Coefficients:
(Intercept)            b  
     2.9580       0.2772 
``` 
© www.soinside.com 2019 - 2024. All rights reserved.