バイナリ結果の一連のカテゴリカル予測子の予測力を評価する方法は?確率またはロジスティック回帰を計算しますか?


10

私は、単純な確率が私の問題で機能するかどうか、またはロジスティック回帰などのより洗練された方法を使用(および学習)する方が良いかどうかを判断しようとしています。

この問題の応答変数はバイナリ応答(0、1)です。私はすべてカテゴリカルで順序付けされていない多数の予測変数を持っています。私は、予測変数のどの組み合わせが1の割合が最も高いかを判断しようとしています。ロジスティック回帰は必要ですか?カテゴリカル予測子の各組み合わせについて、サンプルセットの比率を計算するだけの利点は何ですか?


複数の予測子がある場合、なんらかの回帰モデルなしでこれを行うのは難しいかもしれません。何を思っていたんだ?大きな次元の隣接表(は予測子の数)だけですか?kkk
マクロ

予測子カテゴリーは複数の因子にグループ化されていますか?グループ化されている場合、それらは交差またはネストしていますか?また、説明的な発言だけに興味がありますか?データが複雑な場合は、LRモデルの方が便利かもしれません。また、推論を行いたい場合は、LRが強く推奨されます。
ガン-モニカの復活

@マクロ-はい、基本的に大きなテーブルになると考えていました。1つの列はシナリオに対応するサンプルポイントの数を示し、もう1つの列は1の比率を示します。5つのカテゴリカル予測子があり、それぞれに10〜30の可能な値があるので、シナリオのリストが高くなることはわかっています。私は、それぞれを通過して重要な結果を出力するRのループをスクリプト化することを考えていました(1の比率が高く、シナリオ内のサンプルポイントの数が多い)。
レイチェル

@gung-因子は部分的にしか交差していません。ネストされた要素とは見なされません。私は、因子の組み合わせを見つけることに興味がある(例えば州、顧客、従業員の)可能性が1に等しい応答変数の確率が高いだろう
レイチェル

1
@EmreA-残念ながら、カテゴリー変数は完全に独立しているわけではありません。一部の組み合わせは他の組み合わせよりも可能性が高くなります...
Rachel

回答:


11

ロジスティック回帰は、数値の不正確さまで、表形式のパーセンテージとまったく同じ近似を与えます。 したがって、独立変数が因子オブジェクトfactor1などであり、従属結果(0および1)がxである場合、次のような式で効果を得ることができます。

aggregate(x, list(factor1, <etc>), FUN=mean)

これと比較して

glm(x ~ factor1 * <etc>, family=binomial(link="logit"))

例として、ランダムデータを生成してみましょう。

set.seed(17)
n <- 1000
x <- sample(c(0,1), n, replace=TRUE)
factor1 <- as.factor(floor(2*runif(n)))
factor2 <- as.factor(floor(3*runif(n)))
factor3 <- as.factor(floor(4*runif(n)))

要約は、

aggregate.results <- aggregate(x, list(factor1, factor2, factor3), FUN=mean)
aggregate.results

その出力には

   Group.1 Group.2 Group.3         x
1        0       0       0 0.5128205
2        1       0       0 0.4210526
3        0       1       0 0.5454545
4        1       1       0 0.6071429
5        0       2       0 0.4736842
6        1       2       0 0.5000000
...
24       1       2       3 0.5227273

将来の参考のために、出力の行6のレベル(1,2,0)の因子の推定値は0.5です。

ロジスティック回帰は、この方法で係数を放棄します。

model <- glm(x ~ factor1 * factor2 * factor3, family=binomial(link="logit"))
b <- model$coefficients

それらを使用するには、ロジスティック関数が必要です。

logistic <- function(x) 1 / (1 + exp(-x))

たとえば、レベル(1,2,0)の因子の推定値を取得するには、次を計算します。

logistic (b["(Intercept)"] + b["factor11"] + b["factor22"] + b["factor11:factor22"])

(すべての相互作用をモデルに含める方法と、関連するすべての係数を適用して正しい推定値を取得する必要があることに注意してください。)出力は

(Intercept) 
        0.5

の結果に同意するaggregate。(出力の「(切片)」の見出しは入力の痕跡であり、この計算では事実上無意味です。)


同じ情報がさらに別の形式での出力に表示されますtable。たとえば、(長い)出力

table(x, factor1, factor2, factor3)

このパネルが含まれています:

, , factor2 = 2, factor3 = 0

   factor1
x    0  1
  0 20 21
  1 18 21

factor1ことを3つのレベルでの要素(1,2,0)やショーへ= 1に相当するの値に等しい我々が読み出したものと一致する、と。121/(21+21)=0.5x1aggregateglm


最後に、データセットで最高の比率をもたらす要因の組み合わせは、次の出力から簡単に取得できますaggregate

> aggregate.results[which.max(aggregate.results$x),]
  Group.1 Group.2 Group.3         x
4       1       1       0 0.6071429

1
これは多くの情報であり、要約するのに少し時間がかかりますが、表にされたパーセンテージとロジスティック回帰によって基本的に同じ結果が得られることを嬉しく思います。2つの予測子で集約関数を実行したところ、すぐに終了しました...ロジスティック近似の結果は数分間実行されており、まだ終了していません。今後も調整を続けていきますが、最終的には、集計されたパーセンテージのみを使用することになります。ありがとうございました!
レイチェル

(+1)、カフを離れて私が提案したグラフィカルモザイクプロットの要約に、ロジスティック回帰からのこのコンテキストの標準誤差組み込むことができるかどうか疑問に思います。また、これは興味深い相互作用の結果をすばやく「フィルター」するための良い方法かもしれないと思います(ただし、これは私の考えですが)
Andy W

「ロジスティック回帰は、数値の不正確さまで、表形式のパーセンテージとまったく同じフィットを提供します」:予測子のすべての構成のパーセンテージを表にしていませんか?その場合、ロジスティック回帰はすべての可能な関係をエンコードできません。
Neil G

@Neil確かに、すべての「関係」(因子の組み合わせ)をエンコードできます。可能なすべての相互作用を使用してください。例については、Rコードを参照してください。要素が多数ある場合、実際には空の組み合わせが多数存在しますが、適切なソフトウェアはそれを処理するのに問題はありません。さらに優れたソフトウェアは、応答の変動のない組み合わせを処理します。
whuber

@Andy私はグラフィックについてのあなたの返事が大好きです-それが正解であるスレッドを作成する方法を見つける必要があります!おそらく、エラー推定をモザイクプロットに組み込むことについてのあなたの考えは、それに近づく方法です。ロジスティック推定、実際のデータ、および/またはそれらの中で同時にエラーをどのように表現しますか?
whuber

6

以下のために迅速なバイナリ各カテゴリ内の応答および/または複数のカテゴリを条件との割合を一瞥、グラフィカルなプロットは、サービスのものとすることができます。特に、多くのカテゴリカル独立変数で条件付けされた比率を同時に視覚化するには、モザイクプロットをお勧めします。

以下は、ブログの投稿、「エリアベースのプロットの理解:統計グラフィックスおよびその他のブログからのモザイクプロット」の例です。この例では、タイタニック号の生存者の割合を乗客のクラスに応じて青色で視覚化しています。各サブグループ内の乗客の総数を確認しながら、生存者の割合を同時に評価することもできます(特に、特定のサブグループの数がまばらで、ランダムな変動が予想される場合に役立つ情報です)。

タイタニック号のモザイク画
(ソース:theusrus.de

その後、複数のカテゴリ別独立変数を条件として、後続のモザイクプロットを作成できます。簡単な視覚的要約での同じブログ投稿の次の例は、ファーストクラスとセカンドクラスのすべての子供の乗客が生き残ったのに対し、サードクラスの子供はほとんど満足できなかったことを示しています。また、クラス間の女性生存者の割合は第1クラスから第2クラスから第3クラスにかなり減少した(そして、乗組員の場合も比較的高かったが)ここでも、バーの幅が狭いため、女性の乗組員は多くないことに注意してください)。

3番目の変数を条件とするモザイク
(ソース:theusrus.de

表示される情報の量は驚くべきことです。これは4つの次元(クラス、成人/子供、性別、生存者の割合)の比率です。

予測や一般的な因果関係の説明に興味がある場合は、より正式なモデリングに移行することに同意します。グラフィカルプロットは、データの性質に関しては非常に迅速な視覚的な手がかりになる可能性があり、単に回帰モデルを推定する場合(特に、異なるカテゴリ変数間の相互作用を検討する場合)に見逃されがちな他の洞察を提供できます。


+1、これは、目標が単純な説明であるか推論であるかについて、上記の私のコメントで述べようとしていた点です。いや、要点ははっきりしていて、フィギュアを使ったほうがいい!
ガン-モニカの回復

@gungありがとう、何をNb表していますか?私はいつも数字でもよく言っています!
アンディW

2
統計に関連するものは何もありません。「nb」はnota beneを意味します。これは、ラテン語で「ノートウェル」(文字通り)、または「ノートタート」/「通知」(より口語的に)を意味します。
ガン-モニカの復活

3

必要に応じて、再帰的パーティショニングが結果変数を予測するための解釈しやすい方法を提供することに気付くかもしれません。以下のためにRのこれらのメソッドの概要、クイック-Rの参照ツリーベースモデルのページを。ctree()剪定について心配する必要がなく、デフォルトでかなりのグラフィックスを生成するので、私は一般にRの `パーティパッケージでの実装を支持します。

これは、前の回答で提案された特徴選択アルゴリズムのカテゴリに分類され、一般に、ロジスティック回帰と同じくらい良い予測を提供します。


2

205

データが少ない場合は、学習するパラメーターを減らします。たとえば、個々の予測子の構成が応答変数に一貫した影響を与えると仮定することで、パラメーターの数を減らすことができます。

予測因子が互いに独立していると思われる場合、ロジスティック回帰は、正しいことを行う独自のアルゴリズムです。(独立していなくても、かなりうまくいくことができます。)

要約すると、ロジスティック回帰は、予測子の独立した影響についての仮定を行うため、モデルパラメーターの数が減少し、学習しやすいモデルが生成されます。


1

あなたは特徴選択アルゴリズムを見るべきです。あなたのケース(バイナリ分類、カテゴリ変数)に適したものは、「最小冗長性最大関連性」(mRMR)メソッドです。http://penglab.janelia.org/proj/mRMR/からオンラインですぐに試すことができます。


このプログラムを複数のカテゴリカル予測子で実行することは可能ですか?アップロードページでは、最初の列のみがデータの「クラス」になることができるように見えます...おそらく、データがどのようにフォーマットされることになっているのか理解できません。
レイチェル

または、「クラス」は出力変数であるはずですが、この場合は0または1ですか?もしそうなら、カテゴリー変数をダミー変数にして、それぞれのインジケーターを表示することは重要ですか?
レイチェル

予測子はいくつでも持つことができます。データファイルの最初の行は機能名である必要があり、最初の列はサンプルのクラス(応答変数)である必要があります。だから、例がある: response,predictor1,predictor2,predictor3 <line break here> 1,5,4,3 <line break here> 0,5,3,-1 <line break here> 1,1,2,3
emrea

1

私は、クレジットスコアリングの分野で働いています。ここでは、奇妙なケースとして提示されているのが標準です。

ロジスティック回帰を使用し、カテゴリー変数と連続変数の両方を証拠の重み(WOE)に変換します。これらは、回帰の予測子として使用されます。多くの時間は、カテゴリー変数をグループ化し、連続変数を離散化(ビニング/分類)することに費やされます。

証拠の重みは単純な計算です。これは、クラスのオッズの対数から、母集団のオッズの対数を差し引いたものです
。WOE= ln(Good(Class)/ Bad(Class))-ln(Good(ALL)/ Bad(ALL))これは、ロジスティック回帰を使用して構築されたほぼすべてのクレジットスコアリングモデルの標準的な変換方法。同じ数値を区分的アプローチで使用できます。

それのすばらしいところは、各WOEに割り当てられている係数が意味を成しているかどうかを常に知っていることです。負の係数はデータ内のパターンに反しており、通常は多重共線性から生じます。1.0を超える係数は、過剰補償を示します。ほとんどの係数は、0と1の間のどこかで出てきます。


興味深く有益な投稿をありがとうございます。ただし、このスレッドの質問にどのように応答するかはわかりません。あなたが言及する「奇妙な事件」とは何ですか?これを使用して別の場所で別の質問に回答するつもりでしたか?
whuber
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.