1

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

我尝试按如下方式运行复制(已采用 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     
4

1 回答 1

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-statistics。也许您想要第二个系数的 t 统计量?预测变量的 t 统计量。也可以使用summary. 该$coefficients列表的叶子是一个矩阵。阅读帮助页面summary.lm,它应该是对上面代码的简单修改。

于 2015-10-29T08:28:31.520 回答