4

boot() が 1 つのデータセットで失敗し、別のデータセットで成功しています ... データの問題でしょうか? 私は違いを理解することはできません。しかし、少なくとも今は再現可能だと思います。どちらの場合も、整数変数と因子変数の間の相互作用は、数値従属変数に回帰 (lm) されます。boot() コマンドが次のエラーで失敗しています:

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

p値を返す私の統計関数は次のとおりです。

    bs_p <- function (data, i) {
      d <- data[i,]
      fit <- lm (y~x*fac, data=d)
      return(summary(fit)$coefficients[,4])
    }

ここで質問を再現して投稿するためにランダムデータを生成すると、次のようになります。

    L3 <- LETTERS[1:3]
    data <- data.frame(x=1:50, y=rnorm(1:50), fac=as.factor(sample(L3, 50, replace = TRUE)))

そしてブートストラップ:

    results <- boot(data=data, statistic=bs_p, R=1000)

ブートストラップは機能します。エラーなし; 統計が生成されます。しかし、同じタイプの私自身のデータ (以下) では、boot() はエラーを返します。

    y <- c(17.820, 13.764, 18.880, 25.830, 26.576, 29.832, 22.610, 24.180, 26.572, 26.030, 29.200, 28.560, 28.600, 16.614, 16.302, 18.080, 22.704, 28.101, 38.280, 17.100, 19.292, 33.165, 18.395, 19.434, 27.544, 17.010, 21.560, 28.120, 17.513, 21.646,24.060, 27.984, 20.830, 21.588, 26.280, 29.640, 17.313, 16.344, 16.362, 34.496, 22.785, 20.203, 29.040, 19.092, 20.890,20.739, 17.700, 17.424, 28.737, 18.318, 39.470, 28.072, 17.176, 28.098)
    x <- as.integer(c(9,  5,  0,  8,  3,  4,  9,  6,  9,  2, 15, 10,  5,  1, 11, 11,  4, 8, 13,  1,  2,  4,  7,  7, 12,  1,  6,  6,  4,  3,  5,  5,  7,  9,  8, 3, 3, 14,  6,  4,  3,  6, 17,  3,  6,  6,  7,  1,  6, 10 , 2, 14 , 5,  8))
    fac <- as.factor(c("F", "F", "F", "F", "F", "Ds", "F", "Ds","F","F","F","E", "Ds","F", "F", "E", "Ds","F", "Ds", "F", "Ds","E", "F", "E", "F", "Ds", "E", "Ds","F", "F", "F",  "Ds","Ds", "F", "Ds","F", "F", "E", "F","F","F", "F", "F", "Ds","F", "F", "F", "F", "Ds", "E", "F", "F", "F", "E"))
    data <- data.frame(x=x, y=y, fac=fac)

線形モデルは、これらのデータだけで正常に動作します。traceback() は、ブート呼び出し以外には何も生成しません。どうぞ、どんな考えでも大歓迎です。MAC OSX で R 3.0.1 を使用しています。そしてありがとうございました!

4

2 に答える 2