R 如何将截距拟合到ggplot线性模型图的特定值中?

R 如何将截距拟合到ggplot线性模型图的特定值中?,r,ggplot2,lm,intercept,R,Ggplot2,Lm,Intercept,我想使用R中的ggplot生成分解与时间图,如下代码所示: ggplot(data=deco, aes(x = week, y = mass, group=interaction(treatment,habitat), colour=habitat, linetype=treatment)) + geom_point() + theme_classic() + geom_smooth(method='lm',formula=y~x)

我想使用R中的ggplot生成分解与时间图,如下代码所示:

ggplot(data=deco, aes(x = week, y = mass, group=interaction(treatment,habitat),
                      colour=habitat, linetype=treatment)) +   
 geom_point() +  
 theme_classic() + 
 geom_smooth(method='lm',formula=y~x)
因为最初的产仔重量是5克,所以我预计在0周内所有的线都会从5克开始。然而,我意识到所有的线都有不同的起点。我试图找到任何解决办法,但所有的方法都不适合我。如果你们能解决这个问题就太好了


正如Gregor所指出的,这并不是一件小事,因为组大小未知,
geom_smooth
有点有限。有两种选择,或者在
ggplot
外部适合您的模型。或者抑制截距、移动y轴并重新标记轴

ggplot(mtcars, aes(wt, drat, col = factor(am))) + 
  geom_point() + 
  geom_smooth(method = 'lm') +
  xlim(0, 6)


Intercept <- 5
ggplot(mtcars, aes(wt, drat - Intercept, col = factor(am))) + 
  geom_point() + 
  geom_smooth(method = 'lm', formula = y ~ x + 0) +
  scale_y_continuous(labels = function(x) x + Intercept) +
  xlim(0, 6)
ggplot(mtcars,aes(wt,drat,col=因子(am))+
几何点()
几何平滑(方法='lm')+
xlim(0,6)

Intercept正如Gregor所指出的,这并不是一件小事,因为组大小未知,
geom_smooth
有点有限。有两种选择,或者在
ggplot
外部适合您的模型。或者抑制截距、移动y轴并重新标记轴

ggplot(mtcars, aes(wt, drat, col = factor(am))) + 
  geom_point() + 
  geom_smooth(method = 'lm') +
  xlim(0, 6)


Intercept <- 5
ggplot(mtcars, aes(wt, drat - Intercept, col = factor(am))) + 
  geom_point() + 
  geom_smooth(method = 'lm', formula = y ~ x + 0) +
  scale_y_continuous(labels = function(x) x + Intercept) +
  xlim(0, 6)
ggplot(mtcars,aes(wt,drat,col=因子(am))+
几何点()
几何平滑(方法='lm')+
xlim(0,6)

截取请发布一个可复制的示例。对于单个组,您可以执行
formula=y~x+0
method.args=list(offset=rep(5,nrow(data))
但如果您的组大小不同,这将很困难,太糟糕了
lm
无法回收长度为1的偏移。一个简单的解决方法是转换数据,使截距为
0
(即从响应中减去5),并拟合没有截距的模型。然后,您可以在y刻度上使用变换,以便标记正确。谢谢,Gregor,我最终通过从响应变量数据中减去5来解决这个问题。请发布一个可复制的示例。对于单个组,您可以执行
formula=y~x+0
method.args=list(offset=rep(5,nrow(data)))
但如果您的组大小不同,这将很难做到——很遗憾
lm
无法回收长度为1的偏移量。一个简单的解决方法是转换数据,使截距为
0
(即从响应中减去5),并拟合没有截距的模型。然后你可以在y刻度上使用一个变换,这样标签就正确了。谢谢,Gregor,我最终解决了这个问题,从响应变量数据中减去了5。哇-我想我没见过有人用
drat
作为响应而不是
mpg
。但是对于OP的例子来说,这个比例非常有效。(很好的方法演示:)我想要更接近原点的东西!:)哇-我想我没见过有人用
drat
而不是
mpg
作为响应。但是对于OP的例子来说,这个比例非常有效。(很好的方法演示:)我想要更接近原点的东西!:)