首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >回归分析(年份和年份)

回归分析(年份和年份)
EN

Stack Overflow用户
提问于 2014-04-25 00:45:33
回答 2查看 109关注 0票数 0

我的数据如下。

代码语言:javascript
复制
year<-rep(2001:2010,each=100)
Y1<-rnorm(1000)
Y2<-rnorm(1000)
X1<-rnorm(1000) 
X2<-rnorm(1000)

我想按年运行回归分析。

该模型如下所示

代码语言:javascript
复制
lm(Y1~X1+X2) # 2000
lm(Y1~X1+X2) # 2001
#....
lm(Y1~X1+X2) # 2010
lm(Y2~X1+X2) # 2000
lm(Y2~X1+X2) # 2001
#....
lm(Y2~X1+X2) # 2010

我的数据是从2000年到2013年,有Y1,Y2 ....Y1800。

我想让代码一次处理。

我想写下调整后的R平方和每个模型的残差(平方)之和。

EN

回答 2

Stack Overflow用户

发布于 2014-04-25 01:02:59

你会用一种不同的方式组织它吗?

代码语言:javascript
复制
year<-rep(2001:2010,each=100)
d <- data.frame(year = rep(2001:2010,each=100, times = 10), yval = rnorm(10000),
                xval1 = rnorm(10000),
                xval2 = rnorm(10000),
                y = rep(paste('y',1:10), each = 100, times = 10))
head(d)

  year       yval      xval1       xval2   y
1 2001 -0.9317559  0.6435350  0.29772839 y 1
2 2001  1.0659423 -0.9244871  1.59511267 y 1
3 2001  0.5304943 -1.7047387  2.67113367 y 1
4 2001 -0.5401647  0.2125337  0.06930514 y 1
5 2001  0.8132301 -1.2269802  0.45345832 y 1
6 2001  0.8256614 -1.6228756 -0.30481758 y 1   


ddply(d, .(year, y), summarise, intercept=lm(yval~xval1+xval2)$coefficients[1],
      adj.r.sq = summary(lm(yval~xval1+xval2))$adj.r.sq)

   year    y    intercept      adj.r.sq
1  2001  y 1 -0.027267374  0.0006350922
2  2002  y 2 -0.007104610  0.0035883522
3  2003  y 3  0.015234001 -0.0008837168
4  2004  y 4  0.010327471 -0.0013589311
5  2005  y 5  0.059149459  0.0012124013
6  2006  y 6  0.086763752  0.0001895389
7  2007  y 7  0.044359016 -0.0019987028
8  2008  y 8  0.005336840 -0.0015952540
9  2009  y 9 -0.025781738  0.0023403859
10 2010 y 10 -0.005402567 -0.0014873828
票数 0
EN

Stack Overflow用户

发布于 2014-04-25 01:03:09

对于每年的部分,我将使用dplyr

代码语言:javascript
复制
library(dplyr)
df = data.frame(year, X1, Y1, X2, Y2)
get_adj_r_sq = function(dat) {
    summary(lm(Y2~X1+X2, data = dat))$adj.r.sq
}
df_grouped = group_by(df, year)
adj_rsq_vector = do(df_grouped, get_adj_r_sq)
data.frame(adj_r_sq = as.numeric(adj_rsq_vector), year = unique(df_grouped$year))
       adj_r_sq year
1   0.046308199 2001
2  -0.005116814 2002
3  -0.018591583 2003
4  -0.014183950 2004
5  -0.003552023 2005
6   0.011221766 2006
7  -0.003398615 2007
8   0.004806429 2008
9   0.030205402 2009
10 -0.013241886 2010
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23274994

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档