抱歉,我用英语和R很尴尬 希望你理解我的话。
我的数据设置如下。
year, week, A017670, A030200, A032640, Market, IND.20
2000, 2000-01, 0.02, -0.001, 0.005, 0.007, 0.004,
2000, 2000-02
...
2000, 2000-52
2001, 2001-01
...
2014, 2014-52
我想从R-squared
中提取调整后的SSE
和regression models
。
我希望用R-squared
编写(保存)调整后的SSE
。
我的模型如下:
lm(A017670~MARKET+IND.20, subset=(year=2000))
lm(A017670~MARKET+IND.20, subset=(year=2001))
...
lm(A017670~MARKET+IND.20, subset=(year=2014))
lm(A030200~MARKET+IND.20, subset=(year=2000))
lm(A030200~MARKET+IND.20, subset=(year=2001))
...
lm(A030200~MARKET+IND.20, subset=(year=2014))
lm(A032640~MARKET+IND.20, subset=(year=2000))
lm(A032640~MARKET+IND.20, subset=(year=2001))
...
lm(A032640~MARKET+IND.20, subset=(year=2014))
我需要调整每个模型的R-squared
和SSE
。
我的数据是700家公司的15年数据(A017670, A030200, A032640, ...........)
所以,我必须运行10,500次回归。
这很无聊。
此外,IND.20
表示工业产量。
工业平均值为30 branches.(IND20, IND21, IND22, .............IND49)
谢谢。
答案 0 :(得分:0)
创建公司和年份的组合:
models <- setNames(
expand.grid(
names(df1)[grep("^A",names(df1))],
unique(df1$year), stringsAsFactors = F),
c("company", "year"))
在每个组合上调用lm
:
do.call( rbind,
lapply( seq_len(nrow(models)), FUN = function(i) {
formula1 <- sprintf("%s ~ MARKET + IND.20", models$company[i])
fit1 <- lm( formula = formula1, data = df1[ df1$year == models$year[i], ] )
sfit <- summary(fit1)
data.frame(
year = models$year[i],
company = models$company[i],
AdjRSq = sfit$adj.r.squared,
SSE = deviance(fit1) )
})
)