我想用lm()
函数做R的线性回归.我的数据是一个年度时间序列,其中一个字段表示年份(22年),另一个字段表示州(50个州).我想 for each 状态拟合一个回归,这样最后我就有了一个lm响应向量.我可以想象 for each 状态执行for循环,然后在循环中执行回归,并将每次回归的结果添加到向量中.然而,这似乎不太像R.在SAS中,我将执行"by"语句,在SQL中,我将执行"groupby".这样做的方法是什么?
我想用lm()
函数做R的线性回归.我的数据是一个年度时间序列,其中一个字段表示年份(22年),另一个字段表示州(50个州).我想 for each 状态拟合一个回归,这样最后我就有了一个lm响应向量.我可以想象 for each 状态执行for循环,然后在循环中执行回归,并将每次回归的结果添加到向量中.然而,这似乎不太像R.在SAS中,我将执行"by"语句,在SQL中,我将执行"groupby".这样做的方法是什么?
这里有一种使用lme4
包的方法.
library(lme4)
d <- data.frame(state=rep(c('NY', 'CA'), c(10, 10)),
year=rep(1:10, 2),
response=c(rnorm(10), rnorm(10)))
xyplot(response ~ year, groups=state, data=d, type='l')
fits <- lmList(response ~ year | state, data=d)
fits
#------------
Call: lmList(formula = response ~ year | state, data = d)
Coefficients:
(Intercept) year
CA -1.34420990 0.17139963
NY 0.00196176 -0.01852429
Degrees of freedom: 20 total; 16 residual
Residual standard error: 0.8201316