2

我有两个向量 X 和 y2,我希望将指数曲线拟合到数据中。

我尝试了许多有关 Stack Overflow 主题的方法,但它们都给了我一条直线。例如我试过这个:

model.three <- lm(log(y2) ~ log(X))
plot(X,predict(model.three))
abline(model.three)

我的数据:

X <- seq(1:50)
Y <- rnorm(50,mean=0,sd=1)
y2 <- exp(X)
y2 <- Y+y2
4

2 回答 2

1

这是你想要的?

model.three <- lm(log(y2) ~ log(X))
plot(X,predict(model.three))

## Instead of abline(), use this:

lines(model.three$fitted.values)
于 2016-05-23T19:54:42.697 回答
1

您的数据表示 Y 和 X 之间的指数关系,这Y = exp(X) + eps就是eps一些噪音。因此,我建议在log(Y)和之间拟合一个模型X,以捕捉两者之间的线性关系:

model.three <- lm(log(y2) ~ X) summary(model.three)

总结确认所捕获的关系符合预期(即 X 的系数非常接近 1)。

由于以线性比例绘制数据没有用,我认为用 绘制拟合直线是个好主意abline

注意:确切地说,捕获 y2 和 exp(X) 之间的关系会更准确,但是根据您的数据,拟合基本上是完美的。

于 2016-05-23T20:14:58.227 回答