需要运行1000次回归

时间:2015-10-29 05:20:16

标签: r replicate

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

我尝试按如下方式运行复制(取n = 5,查看结果):

SELECT salary from
(SELECT rownum ID, EmpSalary salary from
(SELECT DISTINCT EmpSalary from salary_table order by EmpSalary DESC)
where ID = nth)

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

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) 

1 个答案:

答案 0 :(得分:0)

R平方值不是lm返回的列表的一部分。为此,您需要从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的帮助页面,它应该是对上述代码的简单修改。