2017-01-14 13 views
0

Я пытаюсь создать модель DiD с R. У меня есть базовая фаза и группа лечения. Я пытаюсь рассмотреть базовую и возрастную нагрузку в модели. Поэтому я создал две фиктивные переменные.R - DiD (Разница в разнесении) Модель

young <- Shower_data$Age %in% c("20-29", "30-39") 
old <- Shower_data$Age %in% c("40-49", "50-64", "65+") 

Shower_data$young_pos <- ifelse(Shower_data$young>0, 1, 0) 
Shower_data$young_neg <- ifelse(Shower_data$young<=0, 1, 0) 

Shower_data$young_pos <- 1 
Shower_data$young_pos [ old ] <- 0 
Shower_data$young_neg <- 0 
Shower_data$young_neg [ old ] <- 1 

#Create a model that considers the baseline and age 
model4 <- lm(Volume ~ (Shower + dummy_phase * dummy_exp_group) * (young_pos + young_neg), data = Shower_data) 
summary(model4) 

Без возраста все шло, как и ожидалось, но когда я добавляю возраста я только получить результаты для young_pos переменной, но не для young_neg. Как вы можете увидеть здесь:

#Coefficients: (5 not defined because of singularities) 
#            Estimate Std. Error t value Pr(>|t|)  
#(Intercept)         45.07006 1.65499 27.233 < 2e-16 *** 
#Shower           -0.04725 0.00819 -5.769 8.09e-09 *** 
#dummy_phase         -5.35647 1.72401 -3.107 0.00189 ** 
#dummy_exp_grouptreatment      -9.33660 1.95433 -4.777 1.79e-06 *** 
#young_pos          8.11264 2.78459 2.913 0.00358 ** 
#young_neg           NA   NA  NA  NA  
#dummy_phase:dummy_exp_grouptreatment   6.23700 2.06968 3.014 0.00259 ** 
#Shower:young_pos        0.07690 0.01361 5.652 1.61e-08 *** 
#Shower:young_neg          NA   NA  NA  NA  
#dummy_phase:young_pos       -1.38223 2.87629 -0.481 0.63084  
#dummy_phase:young_neg        NA   NA  NA  NA  
#dummy_exp_grouptreatment:young_pos    1.94658 3.19773 0.609 0.54271  
#dummy_exp_grouptreatment:young_neg     NA   NA  NA  NA  
#dummy_phase:dummy_exp_grouptreatment:young_pos 2.56634 3.39298 0.756 0.44944  
#dummy_phase:dummy_exp_grouptreatment:young_neg  NA   NA  NA  NA 

Как вы можете видеть только NA в этой переменной. Благодаря

+0

Мое предположение, что у вас нет большого количества данных ('# ... (5 не определено из-за особенностей)') ... –

+0

Сложно сказать, не видя ваши данные, но похоже, что вы делают ваши переменные young_neg и young_pos зеркальными отображениями друг друга, поэтому, когда каждый равен одному, другой равен нулю и наоборот. Это будет соответствовать тому факту, что вы никогда не сможете оценить параметр, включая переменную young_neg. – gfgm

ответ

1

Посмотрите на эту часть вас код:

Shower_data$young_pos <- 1 
Shower_data$young_pos [ old ] <- 0 
Shower_data$young_neg <- 0 
Shower_data$young_neg [ old ] <- 1 

Вектор young_pos включает 0 с и 1 с. Вектор young_neg включает в себя 0 s и 1 s тоже. Однако один вектор является полной противоположностью другой. Следовательно, оба вектора кодируют такую ​​же информацию, и модель может оценить эффект только для одного из них.

 Смежные вопросы

  • Нет связанных вопросов^_^