[英]Custom bootstrap confidence intervals in R
我需要找到一种方法来获取自定义函数获得的估计值上的引导置信区间。 现在,问题是我有一个大矩阵,我从中随机取出行,然后计算所需的数量。
这是(希望)可复制的示例
生成类似的随机数据:
mat1 <- matrix(rnorm(300, 80, 20), nrow = 100)
计算所需数量的函数(其中R是相关矩阵):
IIvar <- function(R) {
d <- eigen(R)$values
p <- length(d)
sum((d-1)^2)/(p*(p-1))}
我的函数尝试求解(其中omat是由一些mat1行组成的较小矩阵,freq是omat中的行数,而numR是重复数):
ciint <- function(omat, mat1, freq, numR) {
II <- IIvar(cor(omat))
n <- dim(mat1)[1]
b <- numeric(numR)
for (i in 1:numR) { b[i] <- IIvar(cor(mat1[sample(c(1:n),freq),]))}
hist(b)
abline(v = II, lty = 5, lwd = 3)
return(b) }
所得向量b具有从mat1中随机选择的行矩阵(由freq确定的数量)中获得的所有值,可以将其与omat的IIvar(具有通过总体成员资格选择的行的矩阵)进行比较。
在mat1中,我有5个总体(按行分组),我需要分别计算它们的IIvar,并为获得的值生成置信区间。
当我像这样运行ciint函数时
ciint(omat, mat1, 61, 1000)
我得到了值的分布以及“实际” IIvar值的位置,但是我不知道如何从这一点生成95%的间隔。
您只需要一个包含95%生成的b
值的间隔。 您可以从贝叶斯估计中获得最高的后验密度,仅此而已。 有许多软件包可以对其进行计算,例如,来自TeachingDemos
emp.hpd
函数。 加
require(TeachingDemos)
并将最后一行( return(b)
)从ciint
为
emp.hpd(b)
(无需使用return()
。)
我不确定您要完成的功能到底是什么,但是如果您想进行增强处理,请查看boot
软件包中的boot
功能。 您可以将自定义函数传递给boot
,它将进行引导程序样本,将其传递给自定义函数,然后整理结果。 然后,对于结果的置信区间,它还具有多个选项。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.