经过多次谷歌搜索后,我决定向你寻求帮助。
我正在不同的时间点绘制一些观察结果,我想添加一个stat_smooth的线性回归。但是,我希望线性模型的截距为100(因为数据是相对于时间0的百分比)。为此,我发现最简单的方法是在lm中使用offset参数。问题是如何获得' y'每组观察(col和facet组)将其传递给offset参数。
如果我使用每组具有相同观察次数的数据(在我的情况下为10),我可以只写出数字并且效果很好:
myplot <- ggplot(mydt2, aes(x=Time_point, y=GFP_rel, col=Gene, fill=Gene,group=Gene))
myplot <- myplot + stat_smooth(method='lm', formula = y ~ x + 0, method.args=list(offset=rep(100,10))) +
facet_wrap(~Cell_line)
然而,这不是非常优雅和/或灵活。我的问题是:如何将观察次数传递给method.args?我尝试了offset(100,.. count ..),但是我得到了错误:( list)对象无法强制键入&#39;整数&#39;)。
有什么建议吗?
由于
答案 0 :(得分:0)
您可以使用公式中的I(y - 100)
编码,如here所示,而不是使用偏移量。
然而,stat_smooth
的预测值将是y - 100
的预测值,而不是y
的预测值。此行将通过0.您可以使用y
将行移回位置以显示原始position_nudge
变量的预测。
所以stat_smooth
代码看起来像
stat_smooth(method = "lm", formula = I(y - 100) ~ x + 0,
position = position_nudge(y = 100))