Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
添加带有geom_平滑的回归线,以在R中绘制离散x轴_R_Ggplot2_Regression_Linear Regression - Fatal编程技术网

添加带有geom_平滑的回归线,以在R中绘制离散x轴

添加带有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)

我想把线性模型中的回归线添加到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) %>%
  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")