2016-05-23 2 views
2

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

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

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 
+0

'log (y) ~ log (x)' будет давать * степенной закон * подгонку к данным, а не экспоненциальную кривую: вы хотите 'log (y) ~ x'? Обратите внимание: ваша главная проблема связана с 'abline()'. –

ответ

1

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

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

## Instead of abline(), use this: 

lines(model.three$fitted.values) 
+0

Я знаю, что это старо, но это неправильно. Вы не берете журнал обеих переменных, если хотите, чтобы экспоненциально лучше всего соответствовало. –

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), но с вашими данными идеально подходит.

Смежные вопросы