对于我在这个平台上的第一个问题,我提前道歉.我浏览过很多线程,但我发现的大部分内容都不涉及任何伪变量. 然而,经过大约4个小时的调查,我似乎找不出出问题了.

出于教学和演示的目的,我目前正在try 使用众所周知的虹膜数据集来设置虚拟变量线性模型的小图.

然而,无论我try 什么,我都无法让它同时绘制多条回归线,而我预计有两条回归线:一条从花斑到setosa,一条从virginica到setosa,setosa是第一组因素.

这是我的代码以及迄今为止我try 过的内容.

#正在加载tidyverse.

library(tidyverse)

#加载iris数据集并将其保存为对象.

dataset <- as_tibble(iris)

#作为背景:我想可视化以下线性回归.

ols_lm_iris_all <- lm(Petal.Length ~ Species,
                      data = dataset)

summary(ols_lm_iris_all)

#这会产生下面的lm模型,该模型给出了以下两的比较:versicolor与setosa以及virginica与setosa.到目前为止一切顺利.

#我用于可视化数据的代码如下.

iris_lm_plot_all <- ggplot(dataset, aes(x = Species, y = Petal.Length, colour = Species)) +
                    geom_smooth(method = lm, aes(group = Species)) +
                    geom_jitter(width = 0.2) +
                    labs(title = "Linear OLS regression with two regression lines for three types of Iris.")

iris_lm_plot_all

#然而,最后我得到的是一个有抖动但根本没有任何回归线的散点图.

#这是我也try 过的,部分成功了.如果我们指定"aes(group = 1)"而不是group = Species,我们会得到从最后一个因子virginica到setosa的一条lm线.这只是工作的一半,但现在我们没有将花彩变成setosa.

iris_lm_plot_all <- ggplot(dataset, aes(x = Species, y = Petal.Length, colour = Species)) +
                    geom_smooth(method = lm, aes(group = 1)) +
                    geom_jitter(width = 0.2) +
                    labs(title = "Linear OLS regression with two regression lines for three types of Iris.")

我还想到了:geom_smooth是否没有正确处理Species的虚拟化?

推荐答案

最后的情节并没有完全按照你的期望进行.物种被转换为数字,然后lm与所有三个因子进行匹配.在这个例子中,它很好地通过了第一个和最后一个集群,但如果重新排序因素,情况就不会发生.

您可以手动编辑数据以进行两次比较/三个因素,但这不容易概括:

dataset <- as.tibble(iris)

dataset <- rbind(
  cbind(subset(dataset, as.numeric(Species) %in% c(1,2)),comparison="A"),
  cbind(subset(dataset, as.numeric(Species) %in% c(1,3)),comparison="B")
)

ggplot(dataset, aes(x = Species, y = Petal.Length, colour = Species)) +
    geom_smooth(method = lm, aes(group=comparison)) +
  geom_jitter(width = 0.2, ) +
  labs(title = "Linear OLS regression mit with two regression line for three types of Iris.")

Output plot

This question还有其他方法来绘制成对比较.

R相关问答推荐

过滤矩阵以获得R中的唯一组合

R的GG平行坐标图中的排序变量

x[[1]]中的错误:脚注越界

通过使用str_detect对具有相似字符串的组进行分组

如何在R中合并和合并多个rabrame?

删除列表中存储的数据帧内和数据帧之间的重复行

为什么我的基准测试会随着样本量的增加而出现一些波动?

如何删除仅在数据集顶部和底部包含零的行

如何将R中数据帧中的任何Nas替换为最后4个值

`lazy_dt`不支持`dplyr/across`?

如何指定我的函数应该查找哪个引用表?

Data.table';S GForce-将多个函数应用于多列(带可选参数)

随机 Select 的非NA列的行均数

基于R中的辅助向量中的值有条件地连接向量中的字符串

ggplot斜体轴刻度标签中的单个字符-以前的帖子建议不工作

为什么不能使用lApply在包装函数中调用子集

如何使用循环从R中的聚合函数创建列,而不会在名称中给出&q;$&q;?

将边列表转换为路径长度列表

对一个数据帧中另一个数据帧中的值进行计数

带查找数据的FCT_REORDER.帧