Экспоненциальная кривая

У меня есть два вектора X и y2, и я хочу подогнать экспоненциальную кривую к данным.

Я перепробовал много подходов, описанных в темах переполнения стека, но все они дают мне прямую линию. например, я попробовал это:

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

2 ответа

Решение

Это то, что вы ищите?

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

## Instead of abline(), use this:

lines(model.three$fitted.values)

Ваши данные выражают экспоненциальную связь между 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), но с вашими данными подбор по существу идеален.

Другие вопросы по тегам