Rの重回帰の変数の変換


26

で重回帰を実行しようとしていますR。ただし、私の従属変数には次のプロットがあります。

DV

すべての変数を含む散布図行列です(WAR従属変数です)。

SPLOM

この変数(およびおそらく独立変数も)で変換を実行する必要があることは知っていますが、必要な正確な変換についてはわかりません。誰かが私を正しい方向に向けることができますか?独立変数と従属変数の関係に関する追加情報を提供できればうれしいです。

私の回帰からの診断グラフィックは次のように見えます。

診断プロット

編集

Yeo-Johnson変換を使用して従属変数と独立変数を変換すると、診断プロットは次のようになります。

変換後

ログリンクでGLMを使用する場合、診断グラフィックは次のとおりです。

ログリンク付きGLM


3
こんにちは@ zglaa1、ようこそ。なぜ変数を変換する必要があると思いますか?最初のステップは、回帰を元の変数に適合させてから、適合度(残差など)を調べることです。残差は変数ではなく、ほぼ正規分布する必要があります。この投稿が面白いと思うかもしれません。
COOLSerdash

リンクと提案の両方をありがとう。回帰を実行しましたが、次のプロットに基づいて変数を変換する必要があることがわかっています。i.imgur.com / rbmu14M.jpg偏り がなく、残差に一定の変動性がないことがわかります。また、それらは正常ではありません。
-zgall1

@COOLSerdashリンクを見てみました。私は統計の基本的な背景を持っているので、議論を理解しています。ただし、私の問題は、学んだテクニックを実際に適用した経験が限られているため、必要な変換を実際に実行するためにデータ(ExcelまたはR)で正確に何をする必要があるかを把握するのに苦労しています。
zgall1

グラフィックをありがとう。この適合は次善であると言うことで、あなたは絶対に正しいです。回帰のDVとIVで散布図マトリックスを作成してください。これは、中に行うことができますRコマンドを使用して、データセットになります。pairs(my.data, lower.panel = panel.smooth)my.data
COOLSerdash

2
lmboxcox(my.lm.model)MASSλ

回答:


30

ジョン・フォックスの著書「応用回帰のRコンパニオン」は、を使用した応用回帰モデリングに関する優れたリソースRです。パッケージcar私はこの回答で全体の使用に付随するパッケージです。本に、追加の章を含むWebサイトあります。


応答の変換(別名従属変数、結果)

RlmboxCoxcarλfamily="yjPower"

boxCox(my.regression.model, family="yjPower", plotit = TRUE)

これにより、次のようなプロットが生成されます。

Box-Coxラムダプロット

λλ

ここで従属変数を変換するにyjPowerは、carパッケージの関数を使用します。

depvar.transformed <- yjPower(my.dependent.variable, lambda)

lambdaλboxCox

重要:従属変数を単にログ変換するのではなく、GLMをログリンクに適合させることを検討する必要があります。詳細情報を提供するリファレンスをいくつか紹介します:firstsecondthird。でこれを行うにはR、次を使用しますglm

glm.mod <- glm(y~x1+x2, family=gaussian(link="log"))

どこyが従属変数でx1x2などが独立変数です。


予測変数の変換

変換厳密に正の予測因子は、従属変数の変換の後、最大尤度により推定することができます。これを行うにboxTidwellは、carパッケージの関数を使用します(元の論文については、こちらを参照してください)。次のように使用しますboxTidwell(y~x1+x2, other.x=~x3+x4)。ここで重要なことは、オプションが変換されないother.x回帰の条件を示すことです。これはすべてカテゴリー変数です。この関数は、次の形式の出力を生成します。

boxTidwell(prestige ~ income + education, other.x=~ type + poly(women, 2), data=Prestige)

          Score Statistic   p-value MLE of lambda
income          -4.482406 0.0000074    -0.3476283
education        0.216991 0.8282154     1.2538274

incomeλincome所得new=1/所得old

独立変数の変換に関するサイト上の別の非常に興味深い投稿はこれです。


変換の欠点

対数変換された従属変数および/または独立変数は比較的簡単解釈できますが、他のより複雑な変換の解釈は直感的ではありません(少なくとも私にとって)。たとえば、従属変数が変換された後、回帰係数をどのように解釈しますか1/yλλ


非線形関係のモデリング

非線形関係に適合する非常に柔軟な2つの方法は、分数多項式スプラインです。:これらの3つの論文は、両方の方法に非常に良い入門提供まず第二第三の。分数多項式とについてのもありRます。R パッケージには、mfp多変量小数多項式を実装しています。この表示は、分数多項式に関して有益な場合があります。フィットスプラインには、関数を使用することができますgam(一般化加法モデルを参照してくださいここで優れた導入のためR)から、パッケージmgcvまたは機能ns(自然な3次スプライン)およびbs(キュービックBスプライン)パッケージからsplines(これらの関数の使用例についてはこちらをご覧ください)。を使用gamすると、s()関数を使用してスプラインを使用して近似する予測子を指定できます。

my.gam <- gam(y~s(x1) + x2, family=gaussian())

ここでx1は、スプラインを使用x2して、通常の線形回帰のように線形にフィットします。内部でgamは、のように分布族とリンク関数を指定できますglm。したがって、モデルを対数リンク関数に適合させるには、次のようにオプションfamily=gaussian(link="log")を指定できます。gamglm

サイトからこの投稿をご覧ください。


1
良い説明。明示的なBox-Coxが実際に変換を選択する最も一般的な方法であることは知りません。何らかの方法でログを選択するだけの人を数えると、私の考えでは、これは少数派の方法だと思います。そのうるさい点は、当然他には何も影響しません。
ニックコックス

@NickCoxありがとう(答えは+1、ところで)。Box-Coxが最も一般的な方法であるという声明は、John Foxの本に由来しています。私は声明を判断するのに十分な経験がないため、額面どおりにそれを取りました。ステートメントを削除します。
COOLSerdash

詳細な説明をありがとうございます。今すぐデータに適用してみます。
zgall1

@COOLSerdash詳細なウォークスルーを使用して、従属変数と独立変数にBox Cox変換を適用し、診断変数の次のプロットを作成しました-i.imgur.com/eO01djl.jpg明らかに改善がありますが、一定の変動性と偏りのない問題であり、正規性の問題は間違いなくあります。ここからどこに行けますか?
zgall1

1
@ zgall1ご意見ありがとうございます。ありがとうございます。うーん、はい、変換はあまり役に立たなかったようです:)。この時点で、一般的な加法モデル(GAM)とmgcvパッケージおよびを使用して、予測子にスプラインを使用することを試みますgam。それが役に立たない場合、私は私の機知の終わりに私が恐れている。ここには、私よりもはるかに経験豊富な人々がいます。おそらく彼らはあなたにさらなるアドバイスを与えることができます。私は野球にも精通していません。これらのデータで理にかなっている、より論理的なモデルがあるかもしれません。
COOLSerdash

8

応答(結果、従属)変数の性質について詳しく説明してください。最初のプロットから、ゼロに近い多くの値といくつかの負の値で強く正に歪んでいます。このことから、必然ではないが、その変換が役立ちますが、最も重要な問題は、変換によってデータが線形関係に近づくかどうかです。

応答の負の値は、直線の対数変換を除外しますが、log(response + constant)ではなく、対数リンクの一般化線形モデルではないことに注意してください。

このサイトには、統計の人々を分けるlog(response + constant)についての多くの回答があります:アドホックで作業しにくいと思う人もいれば、正当なデバイスと見なす人もいます。

ログリンク付きのGLMは引き続き可能です。

あるいは、モデルが何らかの混合プロセスを反映している場合もあります。その場合、データ生成プロセスをより密接に反映するカスタマイズされたモデルが良い考えです。

(後)

OPには、約100〜-2の範囲の値を持つ従属変数WARがあります。ゼロまたは負の値の対数を取る問題を克服するために、OPは0.000001にゼロと負のファッジを提案します。対数目盛(10を底)では、これらの値の範囲は約2(100程度)から-6(0.000001)までです。対数スケールのファッジポイントの少数は、現在では大規模な外れ値の少数です。これを確認するには、log_10(fudged WAR)を他のものに対してプロットします。


上記の散布図からわかるように、野球統計データセットを使用しています。独立変数WARは、基本的にメジャーリーグレベルでのキャリアを通じてプレーヤーが貢献した価値の累積的な尺度です。独立変数AdjSLG、SOPct、およびBBPctは、メジャーリーグレベルでの成功を予測すると一般に考えられているマイナーリーグ統計です。Age変数は、プレーヤーがマイナーリーグ統計を作成した年齢です。ダミー変数は、統計が作成されたマイナーリーグレベルを示すために使用されます。
zgall1

負の独立変数(WAR)の問題に関しては、少し複雑な理由により、変換プロセスが簡単になる場合はゼロとして再コーディングするのが妥当です。このデータセットのフレームワーク内では、これは正当な手順です。より詳細な説明が必要な場合(警告-野球の専門用語が必要です)、喜んでそのようにしています。
-zgall1

1
WARはあなたの従属変数のようです。このサイトの他の場所で争われている、2つの用語がしばしば混同されているという私の主張の証拠を提供してください。私のアドバイスは、負の値をゼロに再コード化する(データを処理する)のではなく、ログリンクでGLMを使用することです。私の側にある野球の特徴点への関心や知識がないと仮定してください。
ニックコックス

WARは私の従属変数であることは正しいです。ログリンク付きのGLMを調べます。アドバイスをありがとう。
zgall1

1
キャリアWARがどのように計算されるかを知るのに役立つかもしれません(別名、データ生成プロセスを理解する)。
アフィン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.