カテゴリーおよび数値予測子を使用した重回帰


10

私はRに比較的慣れていないので、カテゴリー列と数値(整数)列で構成されるデータにモデルを適合させようとしています。従属変数は連続番号です。

データの形式は次のとおりです。

predCateg、predIntNum、ResponseVar

データは次のようになります。

ranking, age_in_years, wealth_indicator
category_A, 99, 1234.56
category_A, 21, 12.34
category_A, 42, 234.56
....
category_N, 105, 77.27

Rでこれを(おそらくGLMを使用して)どのようにモデル化しますか?

[[編集]]

(データをより徹底的に分析した後)たまたまカテゴリカルな独立変数が実際に順序付けられていることに気づきました。したがって、私は以前に提供された答えを次のように変更しました:

> fit2 <- glm(wealth_indicator ~ ordered(ranking) + age_in_years, data=amort2)
> 
> fit2

Call:  glm(formula = wealth_indicator ~ ordered(ranking) + age_in_years, 
    data = amort2)

Coefficients:
      (Intercept)  ordered(ranking).L  ordered(ranking).Q  ordered(ranking).C      age_in_years  
        0.0578500         -0.0055454         -0.0013000          0.0007603          0.0036818  

Degrees of Freedom: 39 Total (i.e. Null);  35 Residual
Null Deviance:      0.004924 
Residual Deviance: 0.00012      AIC: -383.2
> 
> fit3 <- glm(wealth_indicator ~ ordered(ranking) + age_in_years + ordered(ranking)*age_in_years, data=amort2)
> fit3

Call:  glm(formula = wealth_indicator ~ ordered(ranking) + age_in_years + 
    ordered(ranking) * age_in_years, data = amort2)

Coefficients:
                    (Intercept)                ordered(ranking).L                ordered(ranking).Q  
                      0.0578500                       -0.0018932                       -0.0039667  
              ordered(ranking).C                    age_in_years  ordered(ranking).L:age_in_years  
                      0.0021019                        0.0036818                       -0.0006640  
ordered(ranking).Q:age_in_years  ordered(ranking).C:age_in_years  
                      0.0004848                       -0.0002439  

Degrees of Freedom: 39 Total (i.e. Null);  32 Residual
Null Deviance:      0.004924 
Residual Deviance: 5.931e-05    AIC: -405.4

私は少しは何で混乱していますordered(ranking).Cordered(ranking).Qそしてordered(ranking).L出力に平均し、この出力を理解する上でいくつかの助けをいただければ幸いです、そしてどのように応答変数を予測するためにそれを使用します。

回答:


11

これを試して:

fit <- glm(wealth_indicator ~ 
           factor(ranking) + age_in_years + factor(ranking) * age_in_years)

このfactor()コマンドは、変数がカテゴリカルであることをRが認識していることを確認します。これは、カテゴリが整数で示されている場合に特に役立ちます。そうでない場合、glmは変数を連続と解釈します。

factor(ranking) * age_in_years用語は、Rは、あなたが相互作用項を含めることを知ることができます。


1
なぜfactor(ranking)、そうではないのas.factor(ranking)ですか?
Peter Flom

1
私は愛用していますfactor(x)ので、levels必要に応じて議論を含めることができます。as.factor(x)必要に応じて使用することもできますが、実際には高速ですが、これらの関数の速度を重視するには、かなり大きなデータセットが必要になると思います。
Pシュネル、2014

@PSchnell +1。簡潔な回答と適切な説明を提供します。ただし、1つは、因子が順序付けられていることに気付いたことです。これを反映するために、提供された式を少し変更しました(編集した質問を参照してください)。ただし、モデルの出力を理解していることはわかりません(具体的にはordered(ranking).Cordered(ranking).Qおよびordered(ranking).L-意味と、それを使用して応答変数を予測する方法を教えてください)。ありがとう
Homunculus Reticulli

1
.L.Q、および.C、それぞれ、順序付けられた係数の係数は、線形、二次、および立方コントラストで符号化されます。このコマンドcontr.poly(4)は、4レベルの順序付けられた因子のコントラストマトリックスを表示します(3自由度。これが、3次多項式を得る理由です)。contr.poly(4)[2, '.L']線形項の2番目に順序付けられたレベルに何を接続するかを指示します。これは、レベルを等間隔と見なすことが理にかなっていることを前提としていることに注意してください。そうでない場合は、独自のコントラストマトリックスをコーディングします。
Pシュネル2014年

2
ats.ucla.edu/stat/r/library/contrast_coding.htm#ORTHOGONALによると、Rでは、順序変数変数に応答して連続変数がモデル化される場合、適用されるデフォルトのコントラストは直交多項式コーディングonlinecourses.science.psuです。 .edu / stat502 / node / 203stats.stackexchange.com/a/206345/90600には、かなり広範囲にわたる説明があります。 stats.stackexchange.com/a/207128/90600はさらに深くなります。
Paul de Barros

2

私は最近、パッケージの関数を推奨して、連続従属変数を序数の独立変数で回答しordSmoothましたordPens。これはペナルティ付き回帰を使用して、順序変数のレベル間でダミー係数を平滑化し、レベルごとに大きく変動しないようにします。例えば、あなたはおそらくたくないcategory_Aの係数がよりはるかに異なるようにcategory_Bからよりcategory_N。係数は単調に上昇または下降するか、少なくともランク間で徐々に変化する必要があります。リンクされた質問への私の回答は、さらなる情報のための参照をリストしています。

ordSmooth連続(および名目)変数にも対応できます。あなたの場合、コードは次のようになります:

SmoothFit=with(amort2,
ordSmooth(as.numeric(ordered(ranking)),wealth_indicator,z=age_in_years,lambda=.001))

ordSmooth序数データには数値入力が必要なので、as.numeric(ordered())再フォーマットします。連続予測子のz数値ベクトル/行列/用data.frameです。lambda平滑化係数です。値が大きいほど、係数はゼロに近づきます。ここから始めましょう。印刷SmoothFitすると係数と適合値が得られますが、残りはあなたに任せると思います。

このメソッドでは、ordered(ranking).C/ .Q/ .L係数は、それぞれ3次、2次、線形としてラベル付けされているように見えます。を試すとglm(rnorm(10)~ordered(rep(1:5,2)))ordered(rep(1:5, 2))^4同様に係数が得られます。なぜこれらが指数で示されているのか、本当にわかりません。これらは多項式の項としてモデル化しているとは思わない。なぜなら、係数が異なり、これglm(y~x+I(x^2)+I(x^3)+I(x^4))をスケーリングしたものだからである。それらは基本的なダミーコードでなければなりません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.