【问题标题】:Running bootstrap on Total Least Squares Regression coefficent在总最小二乘回归系数上运行 bootstrap
【发布时间】:2019-08-24 14:10:44
【问题描述】:

我使用多个预测变量进行了总最小二乘回归,但我的代码没有产生任何 p 值等。就我的论文而言,我需要评估系数的重要性,以期自举获得百分位置信区间,但我不知道如何从这里开始。

我尝试了命令 boot(data, statistic, R),但我不确定要为数据输入什么。我拥有的功能是在 pracma 中使用 odregress 命令进行回归。我只是将我的 DV 向量和一个矩阵与我的命令的 IV 值隔离开来。

X <- data.matrix(avgsubset1) # matrix of all preditors (IV)


Y <- as.vector(v$avgdatadelay.beh1)  #vector of DV


TLS <- odregress(X,Y); TLS


getRegr <- function(X, Y) {
bsFit <- odregress(X,Y)
as.numeric(coef(bsFit))
}


nR <- 1000
(bsRegr <- boot(data = ???, statistic=getRegr, R=nR))

boot.ci(bsRegr, conf=0.95, type="bca")$bca

【问题讨论】:

  • 不要分离数据。 full 数据框是 boot 需要的。
  • 是这两个问题(p 值和引导)吗?

标签: r regression statistics-bootstrap


【解决方案1】:

boot的调用不正确,启动统计函数也不正确。

library(pracma)
library(boot)

getRegr <- function(data, indices, DV = "avgdatadelay.beh1") {
  d <- data[indices, ]
  i_dv <- match(DV, names(d))
  X <- data.matrix(d[-i_dv])
  Y <- d[[i_dv]]
  bsFit <- odregress(X, Y)
  bsFit[["coeff"]]
}

set.seed(1234)

b <- boot(v, getRegr, R = 1000, DV = "avgdatadelay.beh1")

bad <- apply(b$t, 2, function(x) {
  which(is.infinite(x) | is.na(x) | is.nan(x))
})
i <- apply(bad, 1, unique)

b$t0
#[1]  9.1914957 -8.3566747 -0.2006832

if(NROW(bad)) {
  i <- apply(bad, 1, unique)
  colMeans(b$t[-i, ])
}else colMeans(b$t)
#[1] -2.700675e+13  2.384763e+13  1.489417e+12

数据。

数据在帮助页面?pracma::odregress的第一个示例中。

set.seed(2019)

x <- c(1.0, 0.6, 1.2, 1.4, 0.2)
y <- c(0.5, 0.3, 0.7, 1.0, 0.2)

v <- data.frame(avgdatadelay.beh1 = y, 
                x1 = x, 
                x2 = jitter(x))

【讨论】:

    猜你喜欢
    • 2013-09-18
    • 2015-05-17
    • 1970-01-01
    • 2015-09-16
    • 2015-05-15
    • 2015-10-31
    • 1970-01-01
    • 2017-03-25
    • 1970-01-01
    相关资源
    最近更新 更多