用数值变量中的交互绘制二项式glm

时间:2017-02-07 19:39:28

标签: r glm binomial-coefficients

我想知道是否可以在数值变量中使用交互绘制二项式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 个答案:

答案 0 :(得分: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数据框:

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

最后,我们用x轴变量对newdata进行排序(如果没有,我们将在整个绘图中得到锯齿形的线条),然后绘制:

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

输出:

enter image description here