我正在尝试可视化连续预测变量(范围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")
我正在R中工作。欢迎提出所有建议。
答案 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)
从此箱形图中,您可以看到Petal.width
在每个Species
中的分布以及正关系。对于定性预测变量,变量的编码方式如下:
contrasts(iris$Species)
#> versicolor virginica
#> setosa 0 0
#> versicolor 1 0
#> virginica 0 1
使模型变为
其中
和
因此,每个拟合值将变为
根据这些估计
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
或者,注意每个拟合值是样本均值
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)