绘制glm()

时间:2017-12-19 18:53:25

标签: r plot regression logistic-regression glm

我是R初学者(第一学期 - 我们这个程序用于单变量统计),目前正在努力策划我的glm()的结果。我在互联网上阅读了不少线程和帮助文件,但我有两个问题:1)我不明白这个建议,因为它太先进了或者2)我理解这个建议但是当我复制代码时,它没有'工作。

我认为我接近解决方案,但我的曲线并没有按照预期的方式发挥作用。谁能告诉我我做错了什么?

new.data<-data.frame(x=rnorm(50,0,1), y=c("yes", "no")) 
mock_model<-glm(y~x, data=new.data, family=binomial) 
x1<-seq(min(new.data$x), max(new.data$x), 0.01) 
y1<-predict(mock_model, list(x=x1), type="response") 
plot(new.data$x, new.data$y, xlab="numeric var", ylab="binary var") 
points(x1, y1)

我是编码和这个平台的新手,如果我提供的信息不充分,请提前道歉。

非常感谢任何建议。

1 个答案:

答案 0 :(得分:1)

以下是使用mtcarsggplot2包的示例。 ggplot2的语法大致如下:您使用ggplot()命令开始绘图,您可以在其中(但不必)定义美学(aes()选项),其中包括选择轴变量,但也可以包含更改视觉效果的选项,如颜色,线宽等。如果在ggplot()中定义轴变量,请不要忘记放置data赋值(见aes()之外的以下示例。

之后,您可以添加多个地图以绘制特定内容,例如geom_point()的数据点,geom_line()行或许多其他有趣的内容。如果要使用ggplot()命令中指定的变量和数据,只需将geom留空(除了要用于特定aes()的任何可视geom选项外})。但是,您可以为geom定义新数据和变量,例如在同一图中使用不同的数据源。

data(mtcars)

model_shift <- glm(am ~ mpg, data = mtcars, family = 'binomial')
x <- seq(min(mtcars$mpg), max(mtcars$mpg), .1)
y <- predict(model_shift, list(mpg = x), type = 'response')
plot_data <- data.frame(mpg = x, am = y)

library(ggplot2)
ggplot(aes(x = mpg, y = am), data = plot_data) +
  geom_point()

enter image description here

或者用一条线代替点:

ggplot(aes(x = mpg, y = am), data = plot_data) +
  geom_line()

enter image description here

要了解ggplot2看似无穷无尽的可能性,请查看these 'Top 50' ggplot2 visualizations。要了解特定于软件包的语言,请参阅this tutorial或查看大学图书馆中的Hadley Wickham的书ggplot2: elegant graphics for data analysis