Rで2つのglmモデルを組み合わせる簡単な方法はありますか?


9

で作成されたRのロジスティック回帰モデルが2つありglm()ます。どちらも同じ変数を使用しますが、マトリックスの異なるサブセットを使用して作成されました。係数の平均を与える平均モデルを取得し、これをpredict()関数で使用する簡単な方法はありますか?

[この種の質問をプログラミングサイトに投稿する必要がある場合は、お知らせください。投稿します]

ありがとう


1
stats.stackexchange.com/q/8502/919の関連スレッドに役立つ情報が見つかるかもしれません。
whuber

Rでは、caretパッケージにモデルを組み合わせるためのいくつかの優れた機能があります。
screechOwl

回答:


2

予測された確率の平均、または係数の平均を取得しますか?ロジスティック回帰には線形予測子の非線形変換が含まれるため、結果は異なります。

どちらかを行う関数はこのようなものでしょう。前者、または後者の何かを取得するように設定avg"prob"ます。

pred_comb <- function(mod1, mod2, dat, avg="prob", ...)
{
    xb1 <- predict(mod1, dat, type="link", ...)
    xb2 <- predict(mod2, dat, type="link", ...)
    if(avg == "prob")
        (plogis(xb1) + plogis(xb2))/2
    else plogis((xb1 + xb2)/2)
}

@ホンオオイ:ありがとう!このコードは本当に便利で、トリックを実行しますが、私が主に目指していたのは、ワークフローの後で予測()に入れることができる新しいRモデルを与える関数でした。しかし、私はあなたの関数はかなりエレガントで、確率を与えるように設定できる方法と同じだと思います。
Andrew

@Andrewでは、Rのオブジェクト指向プログラミングを利用できます。2つのモデルをリストに入れて、クラスを指定しますglm_2。上記の関数predict.glm_2を呼び出すと、predict()必要に応じてオブジェクトで使用できます。
Hong Ooi

2
係数の平均が適切なのはなぜですか?2つのデータセットのサイズが異なる場合は、少なくとも何らかの形の加重平均を使用する必要があります。
whuber

@ホン-ありがとう、これを試してみます。@whuber-これを指摘してくれてありがとう。2つのデータセットが同じサイズである場合、問題に重みが付けられます(これについてこれまで考えたことはありませんでした)。サイズが異なる場合は、サイズの比率で重み付けしますか(たとえば、サイズが2倍の場合、2倍の重みを付けますか?)
Andrew

@Andrew独立変数の値が両方のサブセットで同じである場合にのみ、データ数で重み付けすることが正しいです。より良いアプローチ(これは理論的にも有効です)については、質問へのコメントで参照したスレッドを参照してください。
whuber
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.