lm函数(R)的问题

问题描述 投票:0回答:1
我正在研究每名学生的支出与比萨成绩(标准测试)之间的关系,我知道这种回归并不能使我与其他人有着相似的关系,但这是我锻炼的重点,我必须解释为什么不起作用。

我使用基本代码在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正在读取总体的每个单位作为变量,但是像往常一样,数据集在行中设置了变量我不知道是什么问题让我知道你有什么想法

r regression lm
1个回答
0
投票
$ 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.