3

2 つのモデル間の尤度比テストを実行しようとしています。

glm.model1 <- glm(result ~ height + weight )
glm.model2 <- glm(result ~ hight + weight + speed + speed : height + speed : weight )
require(lmtest)    
a <- lrtest(glm.model1, glm.model2)

そして、次のエラーが発生しました。

Error in lrtest.default(glm.model1, glm.model2) : 
models were not all fitted to the same size of dataset

「速度」データの一部が欠落していることはわかっていますが、身長と体重のデータは欠落していません。そのため、モデル 2 には可変の「速度」が含まれていますが、モデル 1 には含まれていないため、モデル 2 には欠落のために glm によって削除されたデータポイントがあります。 . そのため、モデル 2 とモデル 1 の間で尤度比検定を行うと、データの次元が等しくなく、上記のようなエラー メッセージが表示されます。モデル 2 で削除されたデータポイントを調べる方法はありますか?そのため、削減されたモデルに、データの次元を同じに保つために同じデータポイントを削除するスクリプトを含めることができますか?

これが私が試したことです:

1) na.action = na.pass を追加して、モデル 2 のすべての欠落データを保持しますが、機能しません。

2)試した:

glm.model1 <- glm(result ~ height + weight + speed - speed )
## This does work and it gets rid of the sample with "speed" missing, but this is like cheating. 

各モデルの概要は次のとおりです。

概要 (glm.model1)

......

    Null deviance: 453061  on 1893  degrees of freedom
Residual deviance: 439062  on 1891  degrees of freedom
AIC: 15698

Number of Fisher Scoring iterations: 2

フィッシャースコアリングの反復回数: 2

概要 (glm.model2)

......
    Null deviance: 451363  on 1887  degrees of freedom
Residual deviance: 437137  on 1882  degrees of freedom
  (6 observations deleted due to missingness)          ## This is what I want to look at:
AIC: 15652
 Number of Fisher Scoring iterations: 2

削除された観測を調べてスクリプトに書き込んで、他のモデルの同じ観測を削除するにはどうすればよいですか? ありがとう!

4

1 に答える 1

5

関数のsubset引数を使用できます。glm()

glm.model1 <- glm(result ~ height + weight, subset=!is.na(speed) )

于 2013-08-23T22:43:57.467 に答える