需要运行一次回归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
的帮助页面,它应该是对上面代码的简单修改。
我有一个名为 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
的帮助页面,它应该是对上面代码的简单修改。