尤度比検定の検出力計算


8

2つの独立したポアソン確率変数があります。 バツ1 そして バツ2バツ1ポワλ1 そして バツ2ポワλ2。テストしたいH0λ1=λ2 代替対 H1λ1λ2

私はすでにnullと対立仮説(モデル)の下で最尤推定値を導出し、それらに基づいて尤度比検定(LRT)統計(以下に示すRコード)を計算しました。

ここで、以下に基づいてテストの検出力を計算することに興味があります。

  1. 固定アルファ(タイプ1エラー)= 0.05。
  2. さまざまなサンプルサイズ(n)を使用します(n = 5、10、20、50、100など)。
  3. の異なる組み合わせ λ1 そして λ2、LRT統計を変更します(LRTstat以下のように計算されます)。

ここに私のRコードがあります:

X1 = rpois(λ1); X2 = rpois(λ2)
Xbar = (X1+X2)/2
LLRNum = dpois(X1, X1) * dpois(X2, X2)
LLRDenom = dpois(X1, Xbar) * dpois(X2, Xbar)
LRTstat = 2*log(LLRNum/LLRDenom)

ここから、どのようにして電力計算を続行できますか(できればRで)?

回答:


9

これはシミュレーションを使用して行うことができます。

テストを実行し、引数としてラムダとサンプルサイズを受け入れる関数を記述します(上で良いスタートがあります)。

ここで、ラムダとサンプルサイズの特定のセットについて、関数を何度も実行します(Rのレプリケート関数はそのために最適です)。次に、検出力は、帰無仮説を棄却する時間の比率にすぎません。平均関数を使用して比率を計算し、prop.testを使用して検出力に信頼区間を与えることができます。

ここにいくつかのサンプルコードがあります:

tmpfunc1 <- function(l1, l2=l1, n1=10, n2=n1) {
    x1 <- rpois(n1, l1)
    x2 <- rpois(n2, l2)
    m1 <- mean(x1)
    m2 <- mean(x2)
    m <- mean( c(x1,x2) )

    ll <- sum( dpois(x1, m1, log=TRUE) ) + sum( dpois(x2, m2, log=TRUE) ) - 
            sum( dpois(x1, m, log=TRUE) ) - sum( dpois(x2, m, log=TRUE) )
    pchisq(2*ll, 1, lower=FALSE)
}

# verify under null n=10

out1 <- replicate(10000, tmpfunc1(3))
mean(out1 <= 0.05)
hist(out1)
prop.test( sum(out1<=0.05), 10000 )$conf.int

# power for l1=3, l2=3.5, n1=n2=10
out2 <- replicate(10000, tmpfunc1(3,3.5))
mean(out2 <= 0.05)
hist(out2)

# power for l1=3, l2=3.5, n1=n2=50
out3 <- replicate(10000, tmpfunc1(3,3.5,n1=50))
mean(out3 <= 0.05)
hist(out3)

私の結果(異なるシードでは異なりますが、類似しているはずです)は、タイプIエラーレート(アルファ)が0.0496(95%CI 0.0455-0.0541)であることを示しています。これは0.05に近く、10000を増やすことでより高い精度を得ることができます複製コマンドで。私が計算したパワーは、9.86%と28.6%でした。ヒストグラムは厳密には必要ありませんが、パターンを見ることは好きです。


パラメータ(nSim、Lambda1、Lambda2)を使用して関数(LRT.POIS)を作成しましたが、ここからは少し迷ってしまいます。
アダム、

2
基本的なプロセスを示すサンプルコードをいくつか追加しました。
グレッグスノー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.