Rで数値/カテゴリ値の両方で順序ロジスティック回帰分析を実行するにはどうすればよいですか?


17

基本データ:評価「1,1」「良い」「2」「中間」または「3」「悪い」でマークされた人が約1,000人あります-これらは将来の人のために予測しようとしている値です。それに加えて、性別(カテゴリ:M / F)、年齢(数値:17-80)、および人種(カテゴリ:黒/白人/ラテン系)の人口統計情報があります。

主に4つの質問があります。

  1. 最初に、上記のデータセットを重回帰分析として実行しようとしました。しかし、私は最近、私の従属変数が順序変数であり、連続変数ではないため、このようなことには順序ロジスティック回帰を使用する必要があることを学びました。最初はのようなものを使用していましたがmod <- lm(assessment ~ age + gender + race, data = dataset)、誰かが私を正しい方向に向けられますか?

  2. そこから、私が快適だと思う係数を取得すると仮定して、x1、x2などの数値のみをプラグインする方法を理解します-しかし、たとえば、複数の応答がある場合、レースにどのように対処しますか:黒/白人/ラテン系?それで、コーカサス係数が0.289で、予測しようとしている人がコーカサス人であることがわかった場合、値は数値ではないので、どのように元に戻すのですか?

  3. レース用、性別用など、欠落しているランダムな値もあります。これが歪んでいないことを確認するために、さらに何かをする必要がありますか?(データセットがR-StudioにロードされNA、欠落データがとしてロードされると、Rは次のよう(162 observations deleted due to missingness)になりますが、空白としてロードされても、何もしません。)

  4. これがすべてうまくいき、性別、年齢、人種を予測したい新しいデータがあると仮定します。新しい係数を持つ私の式が判明したとしても、Rでそれをすべて実行する簡単な方法がありますか?手動で行うのではなく?(この質問がここで適切でない場合は、Rフォーラムに戻すことができます。)

回答:


16

正しい方向を示す可能性のある小さな情報を次に示します。

データに関して、あなたが持っているのは複数のカテゴリーを持つ応答であり、カテゴリー的な応答をモデル化しようとするときはいつでも、何らかのタイプの一般化線形モデル(GLM)を試して使用するのは正しいことです。あなたの場合、あなたの応答に関して考慮しなければならない追加情報があり、それはあなたの応答レベルが自然な順序を持っているということです良い>中間>悪い(赤/青/緑)を購入する可能性が高いため、これらの値には自然な順序はありません。順序付けられた応答でこのタイプのモデルを実行する場合、比例オッズモデルの使用を検討することができます。

http://en.wikipedia.org/wiki/Ordered_logit

私は自分で使用していませんが、polr()MASSパッケージの関数は何らかの用途に使用される可能性があります。あるいはlrm()、rmsパッケージの関数を使用して同様のタイプの分析を行い、非常に有用であることがわかりました。これらのパッケージをロードする?polr場合?lrmは、機能情報のみを使用します。

十分な背景、質問について:

  1. これについては上記で説明し、これらのパッケージ/関数を確認し、順序ロジスティック回帰および比例オッズモデルについて調べます。

  2. カテゴリー(レース/セックス/髪の色)である共変量がある場合はいつでも、適切にモデル化するためにRコーディングでこれらを「要因」として扱いたいと思います。要因とは何か、どのように扱われるかを知ることは重要ですが、基本的には各カテゴリを個別のレベルとして扱い、適切な方法でそれらをモデル化します。モデル内の要因を調べるだけで、何が起こっているのかを知ることができるはずです。カテゴリ変数を因子として扱うことはglmモデルやプロポーショナルオッズモデルに固有のものではありませんが、通常はすべてのモデルがカテゴリ変数を処理する方法です。 http://www.stat.berkeley.edu/classes/s133/factors.html

  3. 欠損値は時々対処するのが面倒な場合がありますが、かなり基本的な分析を行っている場合、欠損値を含むデータ行を削除するだけでおそらく安全です(これは常に正しいとは限りませんが、現在の経験レベルに基づいていつ、どのように欠損値を処理するかの詳細を気にする必要はないと推測します)。実際、これはほとんどRが行うことです。モデル化に使用しているデータがある場合、応答の行に情報がない場合、またはモデルの共変量Rはこのデータを除外するだけです(これは警告です)。欠損のためにデータの大部分を除外している場合、結果に偏りが生じる可能性があり、欠損値が非常に多い理由に関する詳細情報を取得してみるとよいかもしれませんが、10,000行のデータで162の観測が欠落しているので、あまり汗をかくことはありません。いくつかの詳細に興味がある場合は、欠落データを処理する方法をグーグルアップできます。

  4. ほとんどすべてのRモデルオブジェクトは、( 、、lm 、...)に関連する必要がありますあなたの現在のモデリングデータセットの、さらにあなたが結果を予測したい、別のデータセットの予測値を計算することができます機能を。単に検索するか、使用するモデルの種類に関する詳細情報を取得してください。これは、人々がモデルで行うことを望む非常に典型的なことなので、これを比較的簡単に行う必要がある組み込み関数およびメソッドがあることを安心してください。glmlrmpredict()?predict.glm?predict.lm

幸運を祈ります!


2
  1. はい、注文されたロジットまたはプロビットがどこから始めますか。Rを使用する順序付けられたロジットに関するチュートリアルを次に示します。他のCVの質問は、おそらく思わぬ障害に役立ちます。タグ 'logit'、 'probit'、および 'ordinal'を試してください。

  2. kk1caucasian

  3. 欠落データの処理は、手元の問題に大きく依存します。はい、欠落データの処理方法にバイアスが生じる可能性があります。この本の抜粋は、不足しているデータを生成する可能性のある4つのメカニズムをうまく説明しています。(特に、セクション25.1、p。530。)

  4. 多くのモデリングパッケージにはpredict何らかの機能があり、実際、上記の最初のリンクにあるチュートリアルにはデモが含まれています。


本当にありがとう!#2の簡単なフォローアップ:それは私の基本的な仮定でしたが、2つ以上の変数があるコードは何ですか?たとえば、白人、黒、ラテン系。
ライアン14

大歓迎です!その例では、1つのカテゴリを選択して、インターセプト、たとえばlatino、および他の2つのダミーにサブミットします。caucasianダミーの値1 は、blackダミー変数と同様に白人の回答者を示します。両方の値が0の場合、ラテン系の回答者を示します。理にかなっていますか?
ショーンイースター14

したがって、データセットを、複数の応答(「黒」、「白人」、「ラテン」)を持つ1つの列から、1と0を持つ1つの「黒」列、1と0を持つ1つの「白人」列、および1と0の 'latino'列?
ライアン

それはうまくいく一つのアプローチです。2つの列を使用することとの唯一の違いは、インターセプトの解釈方法です。これは手動で行うことができますが、Rの要素がそれを処理できると信じています。これを試してください— 同様の例で因子を使用して説明します。乾杯!
ショーンイースター

1
チュートリアルへのリンクが壊れています。誰かがそれを修正できるなら、それは素晴らしいことです!
ダンヒックス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.