geom_smooth的formula参数是否与aes()映射匹配及拟合正确性咨询
问题结论
先直接回答两个核心疑问:
- 基于公式
y ~ log(TENURE)的线性模型生成拟合线的是第一张图(对应第一段代码) - 拟合是否正确取决于你的分析目标:如果你预设的是检验
GROWTH_RATE与TENURE的对数项呈线性关系,那么第一张图的拟合是符合设定的正确写法,第二张图的写法不符合你的初始目标。
原理说明
你需要先明确:geom_smooth的formula参数里的x、y,指代的是aes()中映射给x轴、y轴的变量,不是你原始数据里的变量。
你两段代码的x轴映射都是log(TENURE),我们把这个映射后的x轴变量记为x_mapped = log(TENURE):
- 第一段代码的
formula = y ~ x,实际拟合的模型是:GROWTH_RATE = a + b * x_mapped = a + b * log(TENURE)
完全对应你要的y ~ log(TENURE)的线性模型。 - 第二段代码的
formula = y ~ log(x),实际拟合的模型是:GROWTH_RATE = a + b * log(x_mapped) = a + b * log(log(TENURE))
相当于在TENURE的对数基础上又做了一次对数转换,和你说的y ~ log(TENURE)没有关系。
如果你观察到第二张图拟合效果更好,只能说明你的样本数据中GROWTH_RATE和log(log(TENURE))的线性相关性更强,并不代表它符合你最初设定的分析逻辑。如果你的研究目标本身就是探索最优拟合形式,可以考虑这个双对数的转换,但如果是要验证和log(TENURE)的线性关系,第一张的结果才是你需要的。
内容的提问来源于stack exchange,提问作者Doug Fir
相关产品推荐
相关产品推荐

