可视化连续预测变量与分类结果之间的关系

时间:2018-11-06 23:33:14

标签: r ggplot2 plot relationship

我正在尝试可视化连续预测变量(范围0-0.8)和离散结果(计数变量,可能值:0、1、2)之间的关系。

有很多选项可以在x轴上显示离散变量,在y轴上显示连续变量(例如,点图,小提琴,箱形图等)。这些选项显示了连续预测变量的分布,其中每组离散变量的中心度都在其中。但是,这不会显示我要描述的消息。我想展示一种可能性,即离散变量的值随连续变量分数的增加而增加。

我尝试使用geom_smooth进行此操作,但是由于结果是离散的,因此似乎具有误导性:

p <- ggplot(pheno, aes(adhdanx, polye))
p + geom_smooth(method = "lm", colour = "#007ea7", size = 0.5, fill = "#007ea7")

Plot

我正在R中工作。欢迎提出所有建议。

1 个答案:

答案 0 :(得分:1)

据我所知,对于仅具有分类预测变量的线性回归模型,不可能存在线拟合。您可以绘制每个。在这里,我将使用iris数据集。

library(tidyverse)
as_tibble(iris)
#> # A tibble: 150 x 5
#>    Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#>           <dbl>       <dbl>        <dbl>       <dbl> <fct>  
#>  1          5.1         3.5          1.4         0.2 setosa 
#>  2          4.9         3            1.4         0.2 setosa 
#>  3          4.7         3.2          1.3         0.2 setosa 
#>  4          4.6         3.1          1.5         0.2 setosa 
#>  5          5           3.6          1.4         0.2 setosa 
#>  6          5.4         3.9          1.7         0.4 setosa 
#>  7          4.6         3.4          1.4         0.3 setosa 
#>  8          5           3.4          1.5         0.2 setosa 
#>  9          4.4         2.9          1.4         0.2 setosa 
#> 10          4.9         3.1          1.5         0.1 setosa 
#> # ... with 140 more rows

考虑回归问题Petal.width ~ Species

iris %>%
  ggplot() +
  aes(x = Species, y = Petal.Width, colour = Species) +
  geom_boxplot(show.legend = FALSE)

enter image description here

从此箱形图中,您可以看到Petal.width在每个Species中的分布以及正关系。对于定性预测变量,变量的编码方式如下:

contrasts(iris$Species)
#>            versicolor virginica
#> setosa              0         0
#> versicolor          1         0
#> virginica           0         1

使模型变为

enter image description here

其中

enter image description here

enter image description here

因此,每个拟合值将变为

enter image description here

根据这些估计

lm(Petal.Width ~ Species, data = iris)
#> 
#> Call:
#> lm(formula = Petal.Width ~ Species, data = iris)
#> 
#> Coefficients:
#>       (Intercept)  Speciesversicolor   Speciesvirginica  
#>             0.246              1.080              1.780

如上所述,有了这些事实,每个拟合值都可以绘制在图上。

来自lm()

iris %>%
  select(Species, Petal.Width) %>% # just for clarity
  mutate(pred = lm(Petal.Width ~ Species)$fitted.values) %>% # linear regression
  ggplot() +
  aes(x = Species, y = Petal.Width) +
  geom_point() +
  geom_point(aes(x = Species, y = pred), col = "red", size = 3) # fitted values

enter image description here

或者,注意每个拟合值是样本均值

iris %>%
  select(Species, Petal.Width) %>%
  group_by(Species) %>% # for each category
  mutate(pred = mean(Petal.Width)) %>% # sample mean of response in each category
  ggplot() +
  aes(x = Species, y = Petal.Width) +
  geom_point() +
  geom_point(aes(x = Species, y = pred), col = "red", size = 3)

enter image description here