読者です 読者をやめる 読者になる 読者になる

Rを通じて統計学を学ぶ備忘録ブログ

SPSSからRに移行したい私のような人向けのR解説ブログ兼学習用備忘録。

第80回 因子ベクトルのあれこれ

R 基本

今回は「因子ベクトル」のあれこれを見ていきます。個人的には、なんかエラーが出ていると、原因は因子ベクトルにまつわるものでした…ということが多いので、因子ベクトルを再学習したものをまとめました。では行きましょう。

因子ベクトルとは!?

CRANに載っていましたので、以下にまとめてみました。

The function factor is used to encode a vector as a factor (the terms ‘category’ and ‘enumerated type’ are also used for factors). If argument ordered is TRUE, the factor levels are assumed to be ordered.

(拙訳ですが…)

「因子」とは、因子ベクトル(カテゴリ、組も因子として扱われる)をエンコードするのに使われる。もし「引数のordered=TRUE」なら、その因子水準は順序通りになる。

うむ…カテゴリカル変数という認識でよさそうです。性別とか、クラス分けとか、国別とかとか。因子とセットで忘れてはいけないのが、「水準」。性別だったら「男」「女」の2水準、クラス分けだったら、その学校によるし、国別だったら、水準は「国の数」あることになります。

少し小難しい話ではありますが、Rでは「因子ベクトル」を文字で表示してくれますが、Rの内部では、「文字=整数」という形で文字に数字を割り当てているようです。これはstr()関数で確認できます。最後の1,2,3,4,5,1,2,3,4,5,...がこれに当たります。

また、デフォルトでは因子の名前がそのまま「ラベル」として扱われますが、このラベルは、指定することができますが、当然ながら水準の数を超えてラベルを指定することはできません。gl()関数を利用して、水準、繰り返し数、ラベルを指定すれば、因子ベクトルを作れます。

水準の順序

因子には水準というものがセットになっていることが多いですが、この水準の順序を意図的に操作したい場面は多くあります。個人的には、リファレンスの入れ替えなどです。なので、ここからは、水準の順序操作についてまとめていきます。

順序についていうと、数字は「小さいもの順」、文字は「アルファベット順」として認識され、リファレンスは「小さいもの順」「アルファベット順」に指定されます。

先ほどからよくでてくる、「ファレンス」ですが、正式な呼び名は何かわかりません…回帰分析などで基準となる水準のことを指し、リファレンス、参照、コントラスト、基準カテゴリ、参照カテゴリなど様々に呼ばれます。

とりあえず、airqualityのデータセットを用いて見ていきます。

relevel()関数を使えば、簡単にリファレンスを指定することができますし、reorder()関数であれば、好きな基準(平均、合計、最小、最大など)をリファレンスにすることができます。もちろん、この分析はなんら意味はありません。

水準の操作

水準の操作は先ほどもやりましたが、ここでは、水準の大小関係や順序関係を意図的に操作する方法をまとめていきます。基本的にはordered()関数で操作することになります。もちろん、リファレンスも変更されるので、出力される結果は異なった数値になりますのでお忘れなく。

そして、水準を組み合わせる方法も見ていきます。[A, B][C, D]の2水準×2データがあった場合に、[A, B, C, D]の4水準×1データにまとめてしまいたいこともあるので、その場合の方法です。interaction()関数を使います。

interaction()関数でも順序はlex.orderを指定すればいいのですが、思った通りに操作できないので、いつもordered()関数でやっています…(まとめているなら克服しろよ!と言われそうですが…)。今回はこれでおしまい。