私はこの列にの会社という1つの列を持つデータセットを持っています。このデータセットの回帰モデリングを行います。28レベルのカテゴリ変数を行列に変換する
model.matrixを使用して変換するか、1つの列に1-28の値を割り当てる必要があります。
lm機能を使用すると28列に変換することの妥当性は何ですか?
私はこの列にの会社という1つの列を持つデータセットを持っています。このデータセットの回帰モデリングを行います。28レベルのカテゴリ変数を行列に変換する
model.matrixを使用して変換するか、1つの列に1-28の値を割り当てる必要があります。
lm機能を使用すると28列に変換することの妥当性は何ですか?
model.matrixを使用して変換するか、1列に1-28の値を割り当てる必要がありますか?
あなたはどちらを実行する必要があります。
model.matrix
を使用すると、会社の列がダミー変数(0〜1フラグ)に変換されますが、lm
がそれを自動的に行うので、その必要はありません。LM機能はそれに対処することができたときに28列に変換の妥当性とは何ですか?
私が以前に言及したように、lm
はそれをあなた自身が行うので、あなた自身でそれを行う必要はありません。しかし、私は、目的のために1つ(参照列)が除外されるので、あなたは27列(傍受を加えて)で終わることを指摘する必要があります。その理由は、他の27社を知ることで、28日も暗黙に知っているからです(つまり、参照列は他の27の組み合わせと100%相関しているため、省略する必要があります)。
が意味を成していますが、役に立つと判明したものの1つは、@Imoによってコメントに指摘されています。以前に変換した場合のパフォーマンス –
ダミー変数の有無にかかわらず実際のパフォーマンスをテストしていませんが、 'lm'のソースコードを見ています(' model.matrix'を使用する 'if-else'文があり、それは文字通り1行です)それが大きなブーストをもたらすだろうとは思わない。新しいデータに対して 'model.matrix'を使う必要があるので、' model.matrix'を自分で使用すると、予測をしたい場合にはオーバーヘッドが増えます。 – LyzandeR
'lm'はフードの下でその正確な変換を行います。回帰する前に変換することの潜在的な利点は、同じデータに対して多くの回帰を実行している場合です。一度変換を実行すると、処理が高速化されます。通常、 'lm'に依存する方が良いでしょう。 – lmo