【问题标题】:R: Bootstrap BCa confidence intervals for fixed design regressionR:固定设计回归的 Bootstrap BCa 置信区间
【发布时间】:2016-07-25 12:31:23
【问题描述】:

我有一个固定的设计回归问题,我正在尝试使用 R 获取引导 BCa 置信区间。这是一个示例(使用 lmRob),但这仅用于说明:

require(robust)
data(stack.dat)
stack.rob <- lmRob(Loss ~ ., data = stack.dat)

summary(stack.rob)

Call:
lmRob(formula = Loss ~ ., data = stack.dat)

Residuals:
    Min      1Q  Median      3Q     Max 
-8.6299 -0.6713  0.3594  1.1507  8.1740 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) -37.65246    5.00256  -7.527 8.29e-07 ***
Air.Flow      0.79769    0.07129  11.189 2.91e-09 ***
Water.Temp    0.57734    0.17546   3.291  0.00432 ** 
Acid.Conc.   -0.06706    0.06512  -1.030  0.31757    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.837 on 17 degrees of freedom
Multiple R-Squared: 0.6205 

Test for Bias:
            statistic p-value
M-estimate      2.751  0.6004
LS-estimate     2.640  0.6197

R 中有 boot 和 bootstrap 包(以及给定的代码 here,但它们都导出非参数 bootstrap BCa 置信区间。然而,这是一个固定设计回归设置。因此,我是想知道是否有 R 软件可用于引导 BCa 置信区间固定设计回归。使用 lm 的 R 包或类似示例也可以。

谢谢!

【问题讨论】:

  • 也许这个SO question可以帮助你
  • 我在这个例子中遇到了麻烦。当它说“参数”回归时,是否意味着它正在从正态分布重新采样。我想从残差中重新采样。我发现启动功能有点难以理解。再次感谢!
  • boot 软件包基于 A. C. Davison 和 D. V. Hinkley (1997) 所著的《引导方法及其应用》一书。这个link 包含那本书的一部分。幸运的是,它包括参数和非参数引导程序。
  • 我的问题是关于 R 中的引导函数在说“参数”引导时会做什么。我想我可以使用 ran.gen 来决定它的作用。在这种情况下,引导程序不是参数化的,即使它被称为参数化?我的想法是它是固定设计的非参数引导程序?

标签: r lm statistics-bootstrap


【解决方案1】:

我相信我有一个答案,根据 R Journal of 2002 中的示例进行修改。

require(boot)
require(robust)
data(stackloss)

stack.rob <- lmRob(stack.loss ~ ., data = stackloss)

lmRob.coef <- function(data, y, pred) {
    mod <- lmRob(formula = as.formula(eval(paste(y,"~", paste(pred,collapse="+")))) , data = data,  control = lmRob.control(mxr = 1000, mxf = 1000, mxs = 1000))
    coef(mod)
}

lmRob.results <- function(data, y, pred) {
    mod <- lmRob(formula = as.formula(eval(paste(y,"~", paste(pred,collapse="+")))) , data = data)
    data.frame(fitted = fitted(mod), residuals = resid(mod))
}

fit.dat <- lmRob.results(data = stackloss, y = "stack.loss", pred = c("Air.Flow", "Water.Temp", "Acid.Conc."))

model.fun <- function(data, i, y, pred, fitted.results) {
    dat <- cbind(data, fitted.results)
    dat[, y] <- dat$fitted + dat$residuals[i]
    lmRob.coef(data = dat, y = y, pred = pred)
}

lmRob.boot <- boot(data = stackloss, statistic = model.fun, R = 999, y = "stack.loss", pred = c("Air.Flow", "Water.Temp", "Acid.Conc."), fitted.results = fit.dat)

boot.ci(boot.out=lmRob.boot, type="bca", index=4)

BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS
Based on 999 bootstrap replicates

CALL : 
boot.ci(boot.out = lmRob.boot, type = "bca", index = 4)

Intervals : 
Level       BCa          
95%   (-0.2644,  0.2963 )  
Calculations and Intervals on Original Scale

下一个目标是在模型中包含不同案例的权重。

【讨论】:

    猜你喜欢
    • 2017-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-06
    • 1970-01-01
    • 2018-03-05
    • 2016-10-30
    • 1970-01-01
    相关资源
    最近更新 更多