2016-06-19 3 views
2

glmnetパッケージを使ってロジスティック回帰モデルを作成しました。私の応答変数は因子としてコード化されており、そのレベルは "a"と "b"と呼ばれます。glmnet:ロジスティック回帰でどのレスポンスの因子レベルが1であるのかを知るには

ロジスティック回帰の数学は、2つのクラスのうちの1つを「0」とし、もう1つを「1」とラベル付けします。ロジスティック回帰モデルの特徴係数は、正、負、またはゼロのいずれかです。フィーチャ "f"の係数が正の場合、テスト観測値xの "f"の値を大きくすると、モデルがxをクラス "1"であると分類する確率が高くなります。

私の質問は:glmnetモデルを考えると、あなたはglmnetは{ 『1』、 『0』}基礎となる数学因数ラベルにデータの因子ラベル{「A」、「B」}をマッピングされた方法を知っていますか?あなたはモデルの係数を適切に解釈するためにそれを知る必要があるからです。

おもちゃの観測に適用すると、predict関数の出力を実験することで、これを手動で把握することができます。しかし、glmnetが解釈プロセスを高速化するために暗黙的にそのマッピングをどのように処理するのがいいでしょう。

ありがとうございました!

答えて

3

?glmnethttps://cran.r-project.org/web/packages/glmnet/glmnet.pdfの9ページ)を見てください:

y 

response variable. ... For family="binomial" should be either a factor 
with two levels, or a two-column matrix of counts or proportions (the 
second column is treated as the target class; for a factor, the last 
level in alphabetical order is the target class) ... 

は、それが今では明らかではないですか?ファクタレベルとして"a""b"がある場合、"a"は0としてコード化され、"b"はコード化されます。

このような処理は実際には標準です。これはRコードが自動的にどのように因子化するか、あるいはこれらの因子レベルをどのようにコード化するかに関連しています。見てください:

## automatic coding by R based on alphabetical order 
set.seed(0); y1 <- factor(sample(letters[1:2], 10, replace = TRUE)) 
## manual coding 
set.seed(0); y2 <- factor(sample(letters[1:2], 10, replace = TRUE), 
        levels = c("b", "a")) 

# > y1 
# [1] b a a b b a b b b b 
# Levels: a b 
# > y2 
# [1] b a a b b a b b b b 
# Levels: b a 

# > levels(y1) 
# [1] "a" "b" 
# > levels(y2) 
# [1] "b" "a" 

あなたがglmnet()、または単にglm()を使用するかどうか、同じことが起こります。

+0

私は間違いなくglmnetのヘルプを特に明確にしていません。あなたの答えをありがとう。 – cmbarbu

関連する問題