添加带有geom_平滑的回归线,以在R中绘制离散x轴
我想把线性模型中的回归线添加到R中的绘图中 我创建了以下示例数据集:添加带有geom_平滑的回归线,以在R中绘制离散x轴,r,ggplot2,regression,linear-regression,R,Ggplot2,Regression,Linear Regression,我想把线性模型中的回归线添加到R中的绘图中 我创建了以下示例数据集: # Load libraries library(tidyverse) library(ggbeeswarm) # Set seed set.seed(123) # Create dataset ID <- sprintf("ID-%s",seq(1:30)) baseline <- rnorm(30, mean = 50, sd = 3) df <- data.frame(ID, baseline)
# Load libraries
library(tidyverse)
library(ggbeeswarm)
# Set seed
set.seed(123)
# Create dataset
ID <- sprintf("ID-%s",seq(1:30))
baseline <- rnorm(30, mean = 50, sd = 3)
df <- data.frame(ID, baseline) %>%
mutate(`1` = baseline - rnorm(1, mean = 5, sd = 4),
`2` = `1` - rnorm(1, mean = 7, sd = 5),
`3` = `2` - rnorm(1, mean = 10, sd = 9)) %>%
pivot_longer(-ID) %>%
rename(time = name) %>%
mutate(time = as.factor(time))
如果我在绘图中添加geom_smooth(method='lm')
,什么都不会发生,我认为这与时间是一个因素有关。但是,添加geom_smooth(method='lm',formula=y~as.numeric(x)
也不起作用
如何在这张图的顶部绘制回归线
EDIT1.0:
我已经能够使用geom_smooth用geom_smooth(aes(x=as.numeric(time),y=value),method=“lm”,formula=y~x)绘制回归线
,但遗憾的是,回归线不正确…尝试此操作。添加回归线的一个选项是手动计算回归线,并通过组
上的几何线
和映射ID
将其添加到绘图中。红线是值~时间
的回归线,而对于蓝线I r将时间编码为数字,将“基线”设置为0
#加载库
图书馆(tidyverse)
图书馆(ggbeeswarm)
#播种
种子集(123)
#创建数据集
ID%
重命名(时间=名称)%%>%
变异(时间=因子(时间),
time1=ifelse(time==“baseline”,0,作为.numeric(time)),
平滑=预测(lm(值~时间,数据=),
smooth1=预测(lm(值~time1,数据=))
#密谋
ggplot(数据=df,aes(x=时间,y=值))+
geom_quasirandom()+
#回归线
几何线(aes(x=时间,y=平滑,组=ID),颜色=“红色”)+
几何图形线(aes(x=时间,y=平滑1,组=ID),颜色=“蓝色”)+
theme_classic()+
刻度x离散(限值=c(“基线”、“1”、“2”、“3”))+
实验室(x=“时间”,y=“价值”)
由(v0.3.0)于2020年4月15日创建,使用有序因子启用与aes(如数字(时间)、值)的叠加怎么样
#加载库
图书馆(tidyverse)
图书馆(ggbeeswarm)
#播种
种子集(123)
#创建数据集
ID%
重命名(时间=名称)%%>%
#创建有序因子以允许在as.numeric之后同步x的顺序
突变(时间=因子(时间,顺序=T,c(“基线”、“1”、“2”、“3”))
##渲染结果
ggplot(数据=df,aes(x=时间,y=值))+
geom_quasirandom()+
theme_classic()+
实验室(x=“时间”,y=“价值”)+
geom_smooth(aes)(如数值(时间)、值、方法=“lm”)
##用这个来验证
ggplot(数据=df,aes(x=时间,y=值))+
几何点()+
theme_classic()+
实验室(x=“时间”,y=“价值”)+
geom_smooth(aes)(如数值(时间)、值、方法=“lm”)
(v0.3.0)于2020年4月15日创建,感谢您的响应!在本例中,似乎有3个不同的线性模型适合于数据,而我希望将一个线性模型适合于所有数据点。使用geom_smooth是否可能(特别是因为它有一个方便的se
选项)?是和否。(;我估计了一个线性模型。但是,由于时间是一个因素,它是一个模型,每个时间级别有不同的截距(没有斜率)。这就是为什么我们没有一条“好”线。要实现这一点,你必须将该因素转换为数字(正如你已经尝试过的那样)。在这种情况下,问题是如何将“基线”重新编码为数字?
# Plot
ggplot(data = df, aes(x=time, y = value)) +
geom_quasirandom() +
theme_classic() +
scale_x_discrete(limits = c("baseline", "1", "2", "3") ) +
labs(x = "Time", y = "Value")