6

次のコードでは、ブートストラップを使用して、トマト植物に適用された 2 つの異なる肥料が植物の収量に影響を与えないという帰無仮説の下で CI と p 値を計算します (別の方法としては、「改良された」肥料の方が優れているということです)。最初のランダム サンプル (x) は、標準的な肥料が使用された植物からのもので、2 番目のサンプル (y) は植物で「改良された」肥料が使用されたものです。

x <- c(11.4,25.3,29.9,16.5,21.1)
y <- c(23.7,26.6,28.5,14.2,17.9,24.3)
total <- c(x,y)
library(boot)
diff <- function(x,i) mean(x[i[6:11]]) - mean(x[i[1:5]])
b <- boot(total, diff, R = 10000)

ci <- boot.ci(b)
p.value <- sum(b$t>=b$t0)/b$R

上記のコードで気に入らない点は、リサンプリングが 11 個の値のサンプルが 1 つしかないかのように行われることです (最初の 5 個をサンプル x に属するものとして分離し、残りをサンプル y に残します)。ブートストラップのリサンプリングが、元データ?

4

3 に答える 3

5

EDIT2:ハックは間違った解決策だったので削除しました。代わりに、ブート関数の引数 strata を使用する必要があります:

total <- c(x,y)
id <- as.factor(c(rep("x",length(x)),rep("y",length(y))))
b <- boot(total, diff, strata=id, R = 10000)
...

p.value の正しい推定値に近づくことさえできないことに注意してください。

x <- c(1.4,2.3,2.9,1.5,1.1)
y <- c(23.7,26.6,28.5,14.2,17.9,24.3)

total <- c(x,y)

b <- boot(total, diff, strata=id, R = 10000)
ci <- boot.ci(b)
p.value <- sum(b$t>=b$t0)/b$R
> p.value
[1] 0.5162

2 つのサンプルの p 値が 0.51 で、2 番目のすべての値が最初の最大値よりも高いことをどのように説明しますか?

上記のコードは、信頼区間の偏りのある推定値を取得するのに適していますが、差に関する有意性テストは、完全なデータセットの順列によって行う必要があります。

于 2010-09-01T07:30:32.443 に答える
1

実際の土層は、場合によっては層化された変数と見なすことができますが、これはそれらの 1 つではありません。植物のグループ間での操作は 1 つだけです。したがって、あなたの帰無仮説は、それらが実際にはまったく同じ母集団から来ているということです。この場合、アイテムを 11 個のサンプルの単一セットからのものであるかのように扱うことが、ブートストラップの正しい方法です。

2 つのプロットがあり、各プロットで異なる季節に異なる肥料を相殺して試した場合、プロットは統計化されたサンプルになり、そのように扱いたいと思うでしょう。しかし、ここではそうではありません。

于 2010-09-01T16:34:45.143 に答える