2016-05-21 2 views
-5

У меня есть набор данных с 3240 наблюдениями в 16 разных странах. Я хотел бы запустить 16 отдельных логистических моделей для каждой страны, так как я ожидаю, что влияние моей предикторной переменной будет варьироваться между странами.Отдельные логистические модели в рамках dataframe

Data <- data.frame(
X = sample(1:100), 
Y = sample(c("yes", "no"), 100, replace=TRUE),  
country=sample(c("UK","USA","Denmark","Norway","Iceland","Ireland","Sweden","Italy","France","Germany","Luxembourg","Belgium","Netherlands","Spain","Portugal","Greece"),100, replace=TRUE)) 

Кто-нибудь знает, как это сделать в R?

+0

Проводка воспроизводимого примера с образцом ваших входных данных - хороший способ получить помощь. Есть способы решить вашу проблему в R. – Gopala

+0

Я попытался ее отредактировать сейчас, так что это может быть немного больше смысла :) – champlos

+1

Есть много вопросов, которые показывают, как запустить регрессию с помощью переменной группировки ([это one] (http://stackoverflow.com/questions/1169539/linear-regression-and-group-by-in-r) [хотя я бы использовал цикл]. (ps my2c, возможно, стоит попробовать, если они по-другому, путем подгонки термина взаимодействия, а не принятия) – user20650

ответ

2

Конечно, вы можете. В зависимости от вашего вопроса об основах другие подходы могут быть более подходящими (например, модель смешанного эффекта).

Следующие два примера эквивалентны. Вы можете добавить к нему мясо (например, извлечение коэффициентов).

sapply(Data$country, FUN = function(ctry) { 
    summary(glm(Y ~ X, data = Data, family = binomial, subset = country == ctry)) 
}, simplify = FALSE) # if simplify = FALSE, it is coerced to a matrix 

for (ctry in Data$country) { 
    print(# print has to be called explicitly inside a for loop 
    summary(glm(Y ~ X, data = Data, family = binomial, subset = country == ctry)) 
) 
} 
Смежные вопросы