Выбор переменной модели R logit

#r

#r

Вопрос:

У меня есть набор данных, в котором каждое домохозяйство имеет наблюдение для каждого из пяти методов выработки электроэнергии (таким образом, каждое домохозяйство появляется 5 раз). Существует фиктивная переменная, указывающая, какой метод они используют, поэтому пример домохозяйства может выглядеть так —

 hh_id  choice     choice_dummy  
1      Grid        0
1      Diesel      0
1      Ownsolar    1
1      Solargrid   0
1      None        0
 

У меня есть некоторые другие переменные (цена, доступность, загрузка, пиковые часы), которые мне нужно запустить в логит-модели, чтобы увидеть, что влияет на решение выбрать конкретный выбор. Я знаю, что для этого нужно использовать glm(), но я не уверен, что ввести для зависимой переменной. «Выбор» фактически не фиксирует принятое решение, потому что «choice_dummy» фактически отмечает решение, но «choice_dummy» сам по себе не дает никакой информации.

Я не могу просто фильтровать для choice_dummy значение 1, потому что при этом я потеряю значения для всех других переменных. Кто-нибудь знает, как я мог бы запустить логит-модель, которая связывает вероятность выбора каждым домохозяйством источника энергии с переменными «цена», «доступность», «нагрузка» и «пиковые часы», в идеале с кодом?

Комментарии:

1. Похоже, у вас есть данные многочленного выбора, поэтому вам нужно соответствовать многочленной или условной логит-модели. Например, с помощью пакета gmnl или mlogit. В Mlogit есть виньетка, которая может помочь вам начать работу ( cran.r-project.org/web/packages/mlogit/vignettes/e1mlogit.html ). Если вы опубликуете повторное выражение с помощью dput функции, я мог бы предложить более конкретную помощь.

2. Рассмотрим многочленную логистическую регрессию? Определите ‘power_choice’, где выбор является одним из 5 вариантов мощности и choice_dummy = 1. Перекодируйте переменные-предсказатели таким образом, затем укажите модель регрессии.

3. #TJ87 Похоже, что мне нужно идти именно так, но у меня возникли проблемы с определением того, как я буду определять «power_choice» с помощью mutate. Я не совсем понимаю, как бы я таким образом изменил новый столбец в двух условиях. Есть ли шанс, что вы могли бы ускорить эту строку?

4. Вероятно, вы захотите сначала преобразовать свои данные из длинных (несколько строк на hh_id) в широкие (1 строка на hh_id) с помощью reshape::cast или reshape2::dcast . Тогда кодирование ‘power_choice’ и т. Д. Должно быть Проще сделать. Я постараюсь продолжить позже.

Ответ №1:

Отвечая на комментарий OP 5/22/20:

 hh_id<-c("1","1","1","1","1")
choice <- c("Grid","Diesel","Ownsolar","Solargrid","None")
choice_dummy <- c("0","0","1","0","0")
df <- data.frame(hh_id,choice,choice_dummy)

library(reshape2)

df2 <- dcast(df, hh_id ~ choice)

df2$power_choice <- ifelse(df2$Grid==1,"Grid",
ifelse(df2$Diesel==1,"Diesel",
ifelse(df2$Ownsolar==1,"Ownsolar",
ifelse(df2$Solargrid==1,"Solargrid",
ifelse(df2$None==1,"None",NA)))))