您绝对可以使用引导包来执行此操作。但是因为我可能对你想要的东西感到困惑我会一步一步地去。
我编造了一些假数据
n=10
x=rnorm(n)
realerror=rnorm(n,0,.9)
beta=3
y=beta*x+realerror
空出一个地方来捕捉我感兴趣的统计数据。
rsquared=NA
sse=NA
然后创建一个 for 循环,对数据进行重新采样,运行回归并为每次迭代收集两个统计信息。
for(i in 1:999)
{
#create a vector of the index to resample data row-wise with replacement.
use=sample(1:n,replace=T)
lm1=summary(lm(y[use]~x[use]))
rsquared[i]=lm1$r.squared
sse[i]=sum(lm1$residuals^2)
}
现在我想找出置信区间,所以我对它们中的每一个进行排序并报告第 (n*.025)th 和 (n*.975)th 的第一顺序统计数据
sse=sse[order(sse)]
rsquared=rsquared[order(rsquared)]
然后第 25 个是置信下限,第 975 个是置信上限
> sse[c(25,975)]
[1] 2.758037 18.027106
> rsquared[c(25,975)]
[1] 0.5613399 0.9795167