问题
有两个向量,x和y,其中是成对的观察:(x1, y1), (x2, y2), …, (xn, yn)。你觉得两者间有某种线性关系,想构建两者间的回归模型。
解决方案
用lm函数做线性回归,得到系数:
代码 | |
1
2 3 4 | > lm(y ~ x)
Call: lm(formula = y ~ x) Coefficients: (Intercept) 17.72 |
讨论
简单的线性回归涉及到两个变量:一个是预测(predictor)变量,通常称为x;另一个是响应(response)变量,通常称为y。回归会用常见的最小二乘算法拟合线性模型:
yi = β0 + β1xi + εi
其中β0和β1是回归系数,εi表示误差。
lm函数可以实现线性回归。主要参数是模型公式,例如y ~ x。公式中波浪号(~)左侧的是响应变量,右侧是预测变量。函数会估计回归系数β0和β1,分别以截距(intercept)和x的系数表示:
代码 | |
1
2 3 | Coefficients:
(Intercept) x 17.72 |
这个例子中得到的回归等式就是:yi = 17.72 + 3.25xi + εi。
数据经常会放在数据框中,这就需要对数据框中的两列数据做回归。这里,x和y是数据框dfrm中的两列数据:
代码 | |
1
2 3 4 5 6 7 8 9 10 11 12 13 14 | > dfrm x y
1 0.04781401 5.406651 2 1.90857986 19.941568 3 2.79987246 23.922613 4 4.46755305 32.432904 5 3.76490363 44.259268 6 5.92364632 61.151480 7 8.04611587 26.305505 8 7.11097986 43.606087 9 9.73645966 58.262112 10 9.19324543 57.631029 . . (etc.) . |
在lm函数中可以用data参数指定数据框。如果设置了数据狂,lm函数就会从指定的数据框中取数据,而不是工作空间:
代码 | |
1
2 3 4 5 6 7 | > lm(y ~ x, data=dfrm)
Call: lm(formula = y~ x, data=dfrm) Coefficients: (Intercept) x 17.72 |
本文采用「CC BY-SA 4.0 CN」协议转载自互联网、仅供学习交流,内容版权归原作者所有,如涉作品、版权和其他问题请给「我们」留言处理。