뉴욕과 시카고에 거주하는 사람들의 행복 수준의 차이를 결정하는 요소를 추정하려고합니다.더미 변수 상호 작용 기간으로 회귀 할 때의 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
행복 레벨은 사람이 사는 곳의 'happiness level'과 'city'입니다. '성별'코드 0 = 남자 1 = 여자. '고용'은 0 = 실업자이고 1 = 고용 됨. 'Worktype'은 '실업자', 'Whitecolor', 'Bluecolor'의 세 가지 레벨 요소입니다. '휴일'은 일주일에 며칠 씩 쉬는 날입니다. 여기서 '도시', '성별', '작업 유형'및 '휴일'변수가 모두 요인입니다. '행복'과 '고용'변수 유형은 숫자입니다.
내가 추정 할 모델
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이 Employment를 다루지 않는 이유는 확실하지 않습니다. WorktypeUnemployed는 분명히 0입니다. Worktype = 0을 0으로 지정하고 모델에서이를 제거하지 않습니다. 이것은 R이 Employment : HolidayUnemployed를 기준으로 설정했기 때문에 가능하며 둘 다 완벽하게 다중 선상에 있습니까? ('Worktype'과 'Holiday'의 '실업자'값을 '실업자'에 비해 'Worktype'과 'Holiday'의 효과를보고 싶었 기 때문에 붙여야했습니다.) '실업자'값 NA를 제거하면 NA가 사라지고, '실업자'와 비교할 때 'Whitecolor'와 '1day a week'로 표시됩니다.)
만약 그렇다면 왜 '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)
그러면 기본적으로 취업에 NA를 설정하는 데 문제가 없습니다. worktypeunemployed. 나는 약 데이터 집합을 가지고있다. 9000 샘플. 실제 분석에서 나는 더 많은 변수를 가진 더 큰 모델을 추정한다. 나는 여전히 여러 가지 변수로 NAs를 얻는다. 각 직업 관련 변수에 대한 모든 마지막 상호 작용 용어에 대해 NAs를 얻으므로 혼란 스럽습니다. –
동일한 관측에 대해 모든 변수에 '실업'값을 갖는 데 문제가 없습니까? 나는 실제 모델에서 '실업'값을 가진 네 가지 변수를 가지고있다. –
R은 특이성의 문제가있을 때, 즉 모델 행렬의 열 중 하나가 다른 행렬의 선형 조합 일 때 마지막 상호 작용 항을 삭제합니다. 'alias (reg)'함수는 문제를 일으키는 용어를 검사하는 데 사용할 수 있습니다. 이 문제를 피하려면 중복성을 줄이기 위해 코딩을 조정해야합니다. 위의 예제는'reg <- lm (Happiness ~ City + Gender + Employment + Whitecolor + h2, data)'를 사용하면 잘 작동합니다. 여기서'Employment'는 연중 무휴로 일주일의 블루 칼라를 나타냅니다. –