ニューヨークとシカゴに住む人々の幸福度の違いを決定する要因を推定しようとしています。ダミー変数のインタラクション期間で回帰するときのNA値
データは以下のようになります。
Happiness City Gender Employment Worktype Holiday
1 60 New York 0 0 Unemployed Unemployed
2 80 Chicago 1 1 Whitecolor 1 day a week
3 39 Chicago 0 0 Unemployed Unemployed
4 40 New York 1 0 Unemployed Unemployed
5 69 Chicago 1 1 Bluecolor 2 day a week
6 90 Chicago 1 1 Bluecolor 2 day a week
7 100 New York 0 1 Whitecolor 2 day a week
8 30 New York 1 1 Whitecolor 1 day a week
幸福度は従属変数で、「都市」は人が住む場所です。 「性別」はコード化されています0 =男1 =女性。 「雇用」は0 =失業者であり、1 =雇用者である。 「ワークタイプ」は、「失業者」、「ホワイトカラー」、「ブルーカラー」の3つのレベル要素です。 「休日」とは、1週間に人が何日間休むかを指します。ここで、「都市」、「性別」、「ワークタイプ」、「休日」の変数はすべて要因です。 「幸福」と「雇用」変数タイプは数値です。
Iを推定するモデルは
lm(Happiness ~ City + Gender + Employment:(Worktype + Holiday))
である '雇用' が0(無職)に等しい場合ので、私は、数値として0を '雇用' の値を左:(Worktype +ホリデー)= 0、モデルは自動的に
lm(Happiness ~ City + Gender)
失業者に縮小されます。
ただし、回帰結果はNA値を返します。
Coefficients: (2 not defined because of singularities)
Estimate Std. Error t value Pr(>|t|)
(Intercept) 56.75 23.56 2.408 0.138
CityNew York -14.50 27.21 -0.533 0.647
Gender1 -2.25 35.99 -0.063 0.956
Employment:WorktypeBluecolor 25.00 43.02 0.581 0.620
Employment:WorktypeUnemployed NA NA NA NA
Employment:WorktypeWhitecolor 57.75 35.99 1.604 0.250
Employment:Holiday1 day a week -50.00 54.42 -0.919 0.455
Employment:Holiday2 day a week NA NA NA NA
これは、「Worktype」および「Holiday」変数の「Unemployment」値によるものと思われます。しかし、私はRがなぜ雇用を扱っていないのか分かりません:WorktypeUnemployedは明らかに0です:Worktype = 0をゼロとして、それをモデルから削除しません。これはRがEmployment:HolidayUnemployedをベースラインとして設定しており、どちらも完全にマルチ共線性であるためですか? (私は 'Worktype'と 'Holiday'の 'Unemployed' valueを 'Untployed'に比べて 'Worktype'と 'Holiday'の効果を見たいので、母集団は「Whitecolor」と「1週間に1週間」なので、「失業者」と比較してその効果はわかりません)。
もしそうなら、「Employment:Holiday2day for week」の係数のNAはどうして得られますか?それは「失業者」の価値とは関係がないようです。
NA係数を削除するだけでこの結果に頼ることはできますか?
以下は再現可能なコードです。
Happiness <- c(60, 80, 39, 40, 69, 90, 100, 30)
City <- as.factor(c("New York", "Chicago", "Chicago", "New York", "Chicago",
"Chicago", "New York", "New York"))
Gender <- as.factor(c(0, 1, 0, 1, 1, 1, 0, 1)) # 0 = man, 1 = woman.
Employment <- c(0,1, 0, 0, 1 ,1 , 1 , 1) # 0 = unemployed, 1 = employed.
Worktype <- as.factor(c("Unemployed", "Whitecolor", "Unemployed",
"Unemployed", "Bluecolor", "Bluecolor", "Whitecolor","Whitecolor"))
Holiday <- as.factor(c(0, 1, 0, 0, 2, 2, 2, 1))
levels(Holiday) <- c("Unemployed", "1 day a week", "2 day a week")
data <- data.frame(Happiness, City, Gender, Employment, Worktype, Holiday)
head(data,8)
str(data)
reg <- lm(Happiness ~ City + Gender + Employment:(Worktype + Holiday))
summary(reg)
したがって、基本的には、Employment:worktypeunemployedにNAを設定することに問題はありません。私は約とデータセットを持っています。 9000サンプル。実際の分析では、より多くの変数を持つより大きなモデルを推定します。まだいくつかの変数でNAを取得します。私は、仕事関連の変数ごとに最後のインタラクション期間ごとにNAを取得しているので、混乱しています。 –
同じ観測値のすべての変数に「失業」値があることに問題はありませんか?実際のモデルには「失業者」という4つの変数があります。 –
Rは、特異点の問題があるとき、すなわちモデル行列の列の1つが他のものの線形結合であるときの最後の相互作用項を削除する。関数 'alias(reg)'は、どの用語が問題を引き起こしているかを検査するために使用できます。問題を回避するには、冗長性を減らすためにコーディングを調整する必要があります。上記の例は 'reg < - lm(Happiness〜City + Gender + Employment + Whitecolor + h2、data)'を使うとうまくいきます。ここで、 'Employment'は週1日休みのBlue-collarを示しています。 –