需要运行一次回归1000次

Need to run a regression 1000 times

我有一个名为 reg 的回归函数。我现在需要 运行 它 1000 次,在直方图中捕获 Rsquare 值和 t-stat。

我试过 运行ning 复制如下(已取 n=5,以查看结果):

replicate(5,{
  seriese=matrix( rnorm(100*1,mean=0,sd=1), 100, 1) 
  e <- matrix(ncol = 1, nrow = 100) 
  for(i in 1:100){
    e[i] <- sum(seriese[1:i,1]) 
  } 
  dataY <- cbind(seriese, e) 
  seriesa=matrix( rnorm(100*1,mean=0,sd=1), 100, 1) 
  x <- matrix(ncol = 1, nrow = 100) 
  for(i in 1:100){ 
    x[i] <- sum(seriesa[1:i,1]) 
  }
  dataX <- cbind(seriesa, x) 
  #convert to ts
  dataYTS=ts(dataY[,2]) 
  dataXTS=ts(dataX[,2]) 
  #run regression 
  #check summary regression 
  reg=lm(dataYTS~dataXTS) 
},simplify=FALSE) 

这里报告的是数据类型,而不是值。

replicate(5,{reg=lm(dataYTS~dataXTS)})
              [,1]        [,2]        [,3]        [,4]        [,5]       
coefficients  Numeric,2   Numeric,2   Numeric,2   Numeric,2   Numeric,2  
residuals     Numeric,100 Numeric,100 Numeric,100 Numeric,100 Numeric,100
effects       Numeric,100 Numeric,100 Numeric,100 Numeric,100 Numeric,100
rank          2           2           2           2           2          
fitted.values Numeric,100 Numeric,100 Numeric,100 Numeric,100 Numeric,100
assign        Integer,2   Integer,2   Integer,2   Integer,2   Integer,2  
qr            List,5      List,5      List,5      List,5      List,5     
df.residual   98          98          98          98          98         
xlevels       List,0      List,0      List,0      List,0      List,0     
call          Expression  Expression  Expression  Expression  Expression 
terms         Expression  Expression  Expression  Expression  Expression 
model         List,2      List,2      List,2      List,2      List,2     

R 平方值不属于 lm returns 列表的一部分。为此,您需要从 summary.lm 列表中提取相关的叶子:

Rsq.vec <- replicate(5,{
  seriese=matrix( rnorm(100*1,mean=0,sd=1), 100, 1) 
  e <- matrix(ncol = 1, nrow = 100) 
  for(i in 1:100){
    e[i] <- sum(seriese[1:i,1]) 
  } 
  dataY <- cbind(seriese, e) 
  seriesa=matrix( rnorm(100*1,mean=0,sd=1), 100, 1) 
  x <- matrix(ncol = 1, nrow = 100) 
  for(i in 1:100){ 
    x[i] <- sum(seriesa[1:i,1]) 
  }
  dataX <- cbind(seriesa, x) 
  dataYTS=ts(dataY[,2]) 
  dataXTS=ts(dataX[,2]) 
  summary(lm(dataYTS~dataXTS) )$r.squared
}, simplify=TRUE)

然后您可以对该对象执行 hist。你说你想要 't-stat',但这个请求并不清楚,因为即使在那个简单的模型中也有多个 t 统计量。也许您想要第二个系数的 t 统计量?预测变量的 t 统计量。这也可以使用 summary 找到。该列表的 $coefficients 叶是一个矩阵。阅读 summary.lm 的帮助页面,它应该是对上面代码的简单修改。