R ggplot2:逻辑回归点在回归线上,而不是在0和1上

R ggplot2:逻辑回归点在回归线上,而不是在0和1上,r,ggplot2,plot,statistics,logistic-regression,R,Ggplot2,Plot,Statistics,Logistic Regression,我试图用回归线上的点生成逻辑回归图,如本例所示: 我得到的是: 我在互联网上到处搜索,但找不到任何有用的东西,我自己也在ggplot上尝试了不同的组合,但没有找到好的结果 以下是我正在使用的代码: g <- ggplot(myData, aes(speed, GetResp.RESP)) g + geom_point(aes(color = PadLen, shape = PadLen), size = 2.5) + geom_smooth(method = "glm", meth

我试图用回归线上的点生成逻辑回归图,如本例所示:

我得到的是:

我在互联网上到处搜索,但找不到任何有用的东西,我自己也在ggplot上尝试了不同的组合,但没有找到好的结果

以下是我正在使用的代码:

g <- ggplot(myData, aes(speed, GetResp.RESP))
g + geom_point(aes(color = PadLen, shape = PadLen), size = 2.5) +
  geom_smooth(method = "glm", method.args = list(family = "quasibinomial"), aes(color = PadLen), se = FALSE, size = 1.1) +
  scale_color_manual(values = c("black", "red"), labels = c("SmallPaddle", "BigPaddle")) +
  scale_shape_manual(values = c(1, 2), labels = c("SmallPaddle", "BigPaddle")) +
  theme_classic() + theme(legend.title = element_blank(), legend.position = c(0.8, 0.20)) +
  xlab("Ball Speed (cm/s)") +
  ylab('Proportion of "Fast" Responses') +
  scale_y_continuous(breaks = c(.0, .2, .4, .6, .8, 1.0), labels = c(".0", ".2", ".4", ".6", ".8", "1.0"))

我做了下面的情节,因为它有点太长,无法评论。所以我不太确定你在第一个曲线图中显示的回归线上的曲线图到底是什么。如果它们是回归线的点,它们应该正好落在回归线上。我认为它们可能是由另一个与生产线不同的拟合生成的。无论如何,要显示每个唯一数据点的预测值:

# basic plot with points
g <- ggplot(myData, aes(speed, GetResp.RESP,color = PadLen,shape = PadLen)) +
  geom_smooth(method = "glm", method.args = list(family = "quasibinomial") , se = FALSE, size = 1.1) +
  scale_color_manual(values = c("black", "red"), labels = c("SmallPaddle", "BigPaddle")) +
  scale_shape_manual(values = c(1, 2), labels = c("SmallPaddle", "BigPaddle")) +
  theme_classic() + 
  xlab("Ball Speed (cm/s)") +
  ylab('Proportion of "Fast" Responses') 

#with data points
g1 = g+geom_point(size = 2.5)

# with predicted values from data points
fit = glm(GetResp.RESP~speed*PadLen,family=quasibinomial,data=myData)
datapts = sort(unique(myData$speed))
plotdf = data.frame(speed=rep(datapts,2),
PadLen=factor(rep(0:1,each=length(datapts))))
plotdf$GetResp.RESP = predict(fit,plotdf,type="response")

g2 = g + geom_point(data=plotdf)
#带点的基本绘图

我被你想要改变的东西弄糊涂了。您在y轴上绘制的变量只有0和1,所以这就是绘图上显示的全部内容。您是否希望绘制每个观测值为1或0的概率?这些数据实际上不在这个样本中。是的,我想画出概率。它以前使用我提供的代码工作,但在更新ggplot2后,它变为0和1。我以为他们改变了一些函数或参数,但看起来好像没有。你肯定以前同样的代码处理过同样的数据吗?因为你画的是1s和0s,所以我不知道其他数据会如何显示是的,非常积极。这可能是由拟合模型而不是数据本身生成绘图的特征,然后他们改变了它。我不确定这一点,但100%是关于代码的,因为我从一个存档中得到了它,我曾经在某个时候工作过这个项目,它当时确实工作过。我认为他们设置了从数据生成的点,而不是从模型生成的点,这有点奇怪,因为行是基于模型的。而且,您的代码按照我的要求工作,所以谢谢您!
# basic plot with points
g <- ggplot(myData, aes(speed, GetResp.RESP,color = PadLen,shape = PadLen)) +
  geom_smooth(method = "glm", method.args = list(family = "quasibinomial") , se = FALSE, size = 1.1) +
  scale_color_manual(values = c("black", "red"), labels = c("SmallPaddle", "BigPaddle")) +
  scale_shape_manual(values = c(1, 2), labels = c("SmallPaddle", "BigPaddle")) +
  theme_classic() + 
  xlab("Ball Speed (cm/s)") +
  ylab('Proportion of "Fast" Responses') 

#with data points
g1 = g+geom_point(size = 2.5)

# with predicted values from data points
fit = glm(GetResp.RESP~speed*PadLen,family=quasibinomial,data=myData)
datapts = sort(unique(myData$speed))
plotdf = data.frame(speed=rep(datapts,2),
PadLen=factor(rep(0:1,each=length(datapts))))
plotdf$GetResp.RESP = predict(fit,plotdf,type="response")

g2 = g + geom_point(data=plotdf)