前回、R言語では変数の型を明示的にしていしないので、注意が必要だという投稿をしました。
今回は、型変換に気をつけたほうが良い例として回帰分析をとりあげます。
回帰分析
回帰分析は、ある変数を別の変数で予測に用います。予測に使用する変数の値に適当な重み付けをして、なるべく予測される値に近づけようとするイメージです。予測モデルは、典型的に次のような方程式で表されます。
予測される変数 = 切片 + 係数 * 予測する変数 + 誤差
回帰分析の詳細は、また別の機会にとりあげます。
予測される変数と予測される変数の性質
一般的な回帰分析であれば、予測する変数、予測される変数ともに連続的な量的データを用います。R言語の型で言えば、numeric です*1。しかし、回帰分析はカテゴリーデータを数値に変換して*2、解析に加えられます。そしてR言語のlm関数は、カテゴリーデータの数値変換を**勝手に**やってくれます。「勝手に」カテゴリー変数を前提とした解析を行うので、エラーが出ません。出力を注意深く見ることでこれがわかります。では仮想的なデータを使って、実際にみてみましょう。
まずは、データを用意します。
DV <- rnorm(100) IV <- sample(1:100,100, replace = TRUE)
上のコードを実行するとDVという変数には平均0、標準偏差1の正規分布からランダムに生成された100の数値が保存されます。また、IDには1から100までの整数がランダムに100保存されます。どちらも数量データです。これらのデータを利用して回帰分析を行うには以下のコードを実行します。
res_lm <- lm(DV~IV) summary(res_lm)
ここでIVが何らかの理由で、カテゴリーデータになってしまった状況を想定します。変換したデータをIVcとして回帰分析をしてみます。
res_lmc <- lm(DV ~ IVc) summary(res_lmc)
では二つの回帰分析の出力結果を比べてみましょう。最初にどちらも数量データの回帰分析の出力結果は以下のようになります。
図のなかで(intercept)の横に書いてある数字が切片の推定値です。その下のIVの横にあるのがIVについての係数の推定値です。ここでは切片や係数の有意性については特に問題にしません。
では、次にカテゴリーデータとして扱われているIVcを使った回帰分析の結果を見てみましょう。
一見してわかるように、たくさんの推定値が並んでいます。実は表示されている画像は全体の半分くらいです。このようになってしまうのは、IVがカテゴリーデータとして扱われているためです。どういうことかというと、カテゴリデータが独立変数にある場合は、ある基準となる水準からのその他のそれぞれのデータポイントまでの際が、別のものとして推定されるのです。それで、たくさんの係数の推定値が表示されています。
上記を見てわかるように、ちょっとしたコーディング方法の違いでも、出力結果の意味するところは違います。上記のような出力はかなり目立つので、気づいたらすぐに、独立変数の型をstr関数やclass関数で調べてみましょう。