【发布时间】:2013-02-22 17:12:25
【问题描述】:
这是我目前所处的位置:
我有一个数据框df 有两列A 和B(均包含实数),其中b 依赖于a。我将列相互绘制:
p = ggplot(df, aes(A, B)) + geom_point()
并看到这种关系是非线性的。添加:
p = p + geom_smooth(method = 'loess', span = 1)
给出了最合适的“好”线。给定A 的新值a 然后我用下面的方法来预测B 的值:
B.loess = loess(B ~ A, span = 1, data = df)
predict(B.loess, newdata = a)
到目前为止,一切都很好。但是,然后我意识到我无法使用loess 进行推断(大概是因为它是非参数的?!)。推断似乎很自然——这种关系看起来像是一种权力类型的事情,例如:
x = c(1:10)
y = 2^x
df = data.frame(A = x, B = y)
这就是我不解的地方。首先,在不使用loess 的情况下,我可以使用哪些方法来绘制最适合这种(“功率”)数据的线?可悲的尝试,例如:
p = ggplot(df, aes(A, B)) + geom_point() +
geom_smooth(method = 'lm', formula = log(y) ~ x)
给我错误。此外,假设我实际上能够绘制一条我满意的最佳拟合线,我在使用predict 时遇到了问题,就像我在使用loess 时所做的那样。例如,假设我对最佳拟合线感到满意:
p = ggplot(df, aes(A, B)) + geom_point() +
geom_smooth(method = 'lm', formula = y ~ x)
那么如果我想预测A 等于11(理论上是2^11)时B 会取什么值,下面的方法不起作用:
B.lm = lm(B ~ A)
predict(B.lm, newdata = 11)
非常感谢任何帮助。干杯。
【问题讨论】:
标签: r ggplot2 prediction loess