这是我目前所处的位置:
我有一个df
包含两列A
和B
(均包含实数)的数据框,其中b
取决于a
. 我将列相互绘制:
p = ggplot(df, aes(A, B)) + geom_point()
并看到这种关系是非线性的。添加:
p = p + geom_smooth(method = 'loess', span = 1)
给出最合适的“好”线。给定一个新值a
IA
然后使用以下方法来预测 的值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)
那么如果我想预测B
如果等于 11(理论上是 2^11)会取什么值A
,则以下方法不起作用:
B.lm = lm(B ~ A)
predict(B.lm, newdata = 11)
非常感谢任何帮助。干杯。