2017-07-22 13 views
1

私はこの列にの会社という1つの列を持つデータセットを持っています。このデータセットの回帰モデリングを行います。28レベルのカテゴリ変数を行列に変換する

model.matrixを使用して変換するか、1つの列に1-28の値を割り当てる必要があります。

lm機能を使用すると28列に変換することの妥当性は何ですか?

+1

'lm'はフードの下でその正確な変換を行います。回帰する前に変換することの潜在的な利点は、同じデータに対して多くの回帰を実行している場合です。一度変換を実行すると、処理が高速化されます。通常、 'lm'に依存する方が良いでしょう。 – lmo

答えて

1

model.matrixを使用して変換するか、1列に1-28の値を割り当てる必要がありますか?

あなたはどちらを実行する必要があります。

  • あなたが1列に1から28までの値を割り当てると、それはすべての企業が希望のに対し、同社28は、企業1の28倍の量を有しているというようなものです分析に同じ重みを持たせる必要があります(これは順序関係のない会社名を前提としています)。
  • model.matrixを使用すると、会社の列がダミー変数(0〜1フラグ)に変換されますが、lmがそれを自動的に行うので、その必要はありません。

LM機能はそれに対処することができたときに28列に変換の妥当性とは何ですか?

私が以前に言及したように、lmはそれをあなた自身が行うので、あなた自身でそれを行う必要はありません。しかし、私は、目的のために1つ(参照列)が除外されるので、あなたは27列(傍受を加えて)で終わることを指摘する必要があります。その理由は、他の27社を知ることで、28日も暗黙に知っているからです(つまり、参照列は他の27の組み合わせと100%相関しているため、省略する必要があります)。

+0

が意味を成していますが、役に立つと判明したものの1つは、@Imoによってコメントに指摘されています。以前に変換した場合のパフォーマンス –

+0

ダミー変数の有無にかかわらず実際のパフォーマンスをテストしていませんが、 'lm'のソースコードを見ています(' model.matrix'を使用する 'if-else'文があり、それは文字通り1行です)それが大きなブーストをもたらすだろうとは思わない。新しいデータに対して 'model.matrix'を使う必要があるので、' model.matrix'を自分で使用すると、予測をしたい場合にはオーバーヘッドが増えます。 – LyzandeR

関連する問題