1

ブートストラップされる lm オブジェクトから統計 (係数と p 値) を取得するための関数をいくつか作成しました。係数 1 が機能します。p値のものはエラーで失敗しています:

Error in boot(data = data, statistic = bs_p, R = 1000) : 
  number of items to replace is not a multiple of replacement length

私は今、エラーが要因変数の包含に関連していると信じています。簡単に再現可能なデータを使用して問題を再現しようとします。

    L3 <- LETTERS[1:3]
    data <- data.frame(cbind(x = 20:69, y = 1:50), fac = sample(L3, 50, replace = TRUE))
    bs_p <- function (data, i) {
      d <- data[i,]
      fit <- lm (d$y~d$x*d$fac, data=d)
      return(summary(fit)$coefficients[,4])
    }
    bt <- boot(data=data, statistic=bs_p, R=1000)

これらのそれぞれから返されるクラスの「数値」値は、私の初心者の目にはまったく同じ形式のように見えます...しかし、そうではないと思いますか? 次の関数を実行する前に、返された bt ブートストラップ オブジェクトもクリアしましたが、解決しませんでした。ブートストラップされた p 値を取得するにはどうすればよいですか? ご意見ありがとうございます。(Mac OSX で R 3.0.1 を実行しています。)

4

1 に答える 1

1

p-valuesモデルからブートストラップできるかどうかはわかりませんlm(ただし、そのためのソリューションが提供されています)。bsorbs_r関数では、既にデータ d を定義しているためd$、右側で削除できます。fitmtcars データを使用した例を次に示します。

library(boot)

bs <- function(mtcars, i) {
  d <- mtcars[i,]
  fit <- lm (mpg~drat+wt, data=d)
  return(coef(fit))
}
bt <- boot(data=mtcars, statistic=bs, R=1000)

bt

ORDINARY NONPARAMETRIC BOOTSTRAP


Call:
boot(data = mtcars, statistic = bs, R = 1000)


Bootstrap Statistics :
     original      bias    std. error
t1* 30.290370  0.54284222    7.494441
t2*  1.442491 -0.07260619    1.393801
t3* -4.782890 -0.09804271    1.000838

からブートストラップされた p 値の p 値を次に示しますlm

bs_r <- function(mtcars, i) {
  d <- mtcars[i,]
  fit <- lm (mpg~drat+wt, data=d)
  return(summary(fit)$coefficients[,4])
}
bt1 <- boot(data=mtcars, statistic=bs_r, R=1000)

ORDINARY NONPARAMETRIC BOOTSTRAP


Call:
boot(data = mtcars, statistic = bs_r, R = 1000)


Bootstrap Statistics :
        original       bias     std. error
t1* 2.737824e-04 4.020024e-03 0.0253248217
t2* 3.308544e-01 7.108738e-02 0.2960776146
t3* 1.589075e-06 5.405459e-05 0.0005540412 
于 2013-09-15T15:06:15.453 に答える