我使用基本代码在R上运行回归:
lm1 = lm(a〜b)
但是问题是R报告我32系数,这是我人口总数的数量,而我应该只接受斜率和截距,因为这是简单的回归
这是R给我的输出:
致电:lm(公式= a〜b)
系数:(截取)b10167.3 b10467.8 b10766.4 b10863.4 b10960.1 b11.688.4 b11028.1 b11052 b11207.3 b11855.9 b12424.3 b13930.8522.9936 5.9561 0.3401 -20.6884 -14.8603 -15.0777 -3.5752 -23.0459 -27.1021 -42.2692 -20.4485 -35.3906 -30.7468b14353.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.5962b8406.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正在读取总体的每个单位作为变量,但是像往常一样,数据集在行中设置了变量我不知道是什么问题让我知道你有什么想法
$ 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
```