2017-02-07 22 views
0

Я хочу знать, возможно ли построить двучленное glm с взаимодействием в числовых переменных. В моем случае:Построение биномиального glm с взаимодействиями в числовых переменных

##Data set artificial 
set.seed(20) 
d <- data.frame(
    mating=sample(0:1, 200, replace=T), 
    behv = scale(rpois(200,10)), 
    condition = scale(rnorm(200,5)) 
) 

#Binomial GLM ajusted 
model<-glm(mating ~ behv + condition, data=d, family=binomial) 
summary(model) 

В ситуации, когда behv и условия являются существенными в модели

#Plotting first for behv 
x<-d$behv ###Take behv values 
x2<-rep(mean(d$condition),length(d_p[,1])) ##Fixed mean condition 

# Points 
plot(d$mating~d$behv) 

#Curve 
curve(exp(model$coefficients[1]+model$coefficients[2]*x+model$coefficients[3]*x2) 
/(1+exp(model$coefficients[1]+model$coefficients[2]*x+model$coefficients[3]*x2))) 

Но не работает !! Существует еще один правильный подход?

Благодаря

ответ

1

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

Я собираюсь немного изменить ваш пример, чтобы получить приятный результат.

d$mating <- ifelse(d$behv > 0, rbinom(200, 1, .8), rbinom(200, 1, .2)) 
model <- glm(mating ~ behv + condition, data = d, family = binomial) 
summary(model) 

Теперь мы делаем newdata dataframe с заданными значениями:

newdata <- d 
newdata$condition <- mean(newdata$condition) 
newdata$yhat <- predict(model, newdata, type = "response") 

Наконец, мы сортируем newdata переменной по оси Х (если нет, то мы получим линии, зигзагообразный весь участок), а затем участок:

newdata <- newdata[order(newdata$behv), ] 
plot(newdata$mating ~ newdata$behv) 
lines(x = newdata$behv, y = newdata$yhat) 

Выход:

enter image description here