【问题标题】:regression analysis (year and Y)回归分析(年份和 Y)
【发布时间】:2014-04-24 16:45:32
【问题描述】:

我的数据如下。

year<-rep(2001:2010,each=100)
Y1<-rnorm(1000)
Y2<-rnorm(1000)
X1<-rnorm(1000) 
X2<-rnorm(1000)

我想按年份运行回归分析。

模型如下

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 平方和残差之和(平方)。

【问题讨论】:

  • 对于初学者,不要将数据组织为单独的变量,每年一个,而是将它们放在矩阵或数据框中
  • df &lt;- data.frame(year = rep(2001:2010,each = 100),Y1 = rnorm(1000), Y2 = rnorm(1000), X1 = rnorm(1000), X2 = rnorm(1000)) 那就看看?by
  • 小心尝试拟合这么多变量,你可以看看step

标签: r regression


【解决方案1】:

对于每年部分,我会使用dplyr

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

【讨论】:

    【解决方案2】:

    你会以不同的方式组织它吗?

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-17
      • 2017-06-27
      • 2018-09-20
      • 2017-12-21
      • 2013-05-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多