方法:ブートストラップによる線形回帰の予測間隔


14

使い方がわからない ブートストラップをして線形回帰モデルの予測間隔を計算。誰かがステップバイステップの手順を概説できますか?私はグーグルで検索しましたが、何も本当に意味がありません。

モデルパラメータの信頼区間を計算するためにブートストラップを使用する方法を理解しています。


1
これについては、Davison and Hinkley著の本、Bootstrap Methods and their Applicationおよび明示的なアルゴリズム(アルゴリズム6.4)で詳しく説明されています。ここでは、概念、落とし穴、および詳細について、合理的な答えで可能な範囲よりも長く説明しています。
Glen_b-モニカを復活

@Glen_b参照いただきありがとうございます。残念ながら、私は大学や会社にいないので、本を入手するためのリソースがありません。
最大

アマゾンから注文できます。アルゴリズムと関連するすべての警告と問題の完全な説明は、実際には数百の単語や1ページの回答で説明できるようなものではありません。
グレン_b-モニカの復活

1
@Glen_b私はDavisonとHInkelyからアルゴリズムを作成しました----これについてCVに関する質問がいくつかあるので、努力する価値があると思いました。コメントをいただければ幸いです。 stats.stackexchange.com/questions/226565/…–
ビル

:このスレッドは、あなたの質問に答えるように思わstats.stackexchange.com/questions/226565/...
user2683832

回答:


7

信頼区間では、推定の不確実性が考慮されます。予測間隔はこれに基本的な不確実性を追加します。R predict.lmは、線形モデルの予測区間を提供します。そこから、ブートストラップされたサンプルで繰り返し実行するだけです。

n <- 100
n.bs <- 30

dat <- data.frame( x<-runif(n), y=x+runif(n) )
plot(y~x,data=dat)


regressAndPredict <- function( dat ) {
  model <- lm( y~x, data=dat )
  predict( model, interval="prediction" )
}

regressAndPredict(dat)

replicate( n.bs, regressAndPredict(dat[ sample(seq(n),replace=TRUE) ,]) )

の結果replicateは3次元配列(nx 3x n.bs)です。長さ3の次元は、各データ要素の適合値、および95%予測区間の下限/上限で構成されます。

ゲイリー・キング法

必要に応じて、King、Tomz、Wittenbergによるクールな方法があります。実装は比較的簡単で、特定の見積もりの​​ブートストラップの問題を回避します(例:max(Y))の。

基本的な不確実性の彼の定義から引用します、それは合理的に素晴らしいからです:

2番目の変動性、式1の確率的要素(分布f)で表される基本的な不確実性は、Yに影響するがXには含まれない天候や病気などの無数の偶然の出来事から生じます。パラメーターの正確な値を知っていた(それにより推定の不確実性が排除された)ため、基本的な不確実性により、エラーなしでYを予測できなくなります。


3
このn.bs予測区間のマトリックスから信頼区間をどのように構築するかはわかりません。
B_Miner

1

ブートストラップは、サンプルが作成された元の親ディストリビューションの形式に関する知識を想定していません。従来の古典的な統計パラメータ推定値は、正規性の仮定に基づいています。ブートストラップは非正規性を扱い、実際には従来の方法よりも正確です。

ブートストラップは、厳密な理論的分析のためにコンピューターの生の計算能力を代用します。これは、データセットの誤差項のサンプリング分布の推定値です。ブートストラップには、指定された回数のデータセットの再サンプリング、各サンプルからの平均の計算、および平均の標準誤差の検出が含まれます。

次の「R」コードはその概念を示しています。

この実用的な例は、ブートストラップの有用性を示し、標準誤差を推定します。信頼区間を計算するには標準誤差が必要です。

歪んだデータセット「a」があると仮定します。

a<-rexp(395, rate=0.1)          # Create skewed data

歪んだデータセットの視覚化

plot(a,type="l")                # Scatter plot of the skewed data
boxplot(a,type="l")             # Box plot of the skewed data
hist(a)                         # Histogram plot of the skewed data

ブートストラップ手順を実行します。

n <- length(a)                  # the number of bootstrap samples should equal the original data set
    xbarstar <- c()                 # Declare the empty set “xbarstar” variable which will be holding the mean of every bootstrap iteration
    for (i in 1:1000) {             # Perform 1000 bootstrap iteration
        boot.samp <- sample(a, n, replace=TRUE) #”Sample” generates the same number of elements as the original data set
    xbarstar[i] <- mean(boot.samp)} # “xbarstar” variable  collects 1000 averages of the original data set
    ## 
    plot(xbarstar)                  # Scatter plot of the bootstrapped data
    boxplot(xbarstar)               # Box plot of the bootstrapped data
    hist(xbarstar)                  # Histogram plot of the bootstrapped data

    meanOfMeans <- mean(xbarstar)
    standardError <- sd(xbarstar)    # the standard error is the standard deviation of the mean of means
    confidenceIntervalAboveTheMean <- meanOfMeans + 1.96 * standardError # for 2 standard deviation above the mean 
    confidenceIntervalBelowTheMean <- meanOfMeans - 1.96 * standardError # for 2 standard deviation above the mean 
    confidenceInterval <- confidenceIntervalAboveTheMean + confidenceIntervalBelowTheMean
    confidenceInterval

1
例についてRagyに感謝します。しかし、私が見ることができることから、あなたの答えはブートストラップを使用した予測間隔の計算をカバーしていませんでした。私の答えで言ったように、ブートストラップを使用して信頼区間を計算する方法をすでに理解しています-あなたのコードはそれをしているようです。
最大
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.