Подбор функции в R

У меня есть несколько точек данных (x и y ), которые, кажется, имеют логарифмическую зависимость.

> mydata
    x   y
1   0 123
2   2 116
3   4 113
4  15 100
5  48  87
6  75  84
7 122  77

> qplot(x, y, data=mydata, geom="line")

plot

Теперь я хотел бы найти базовую функцию, которая соответствует графику и позволяет мне делать выводы о других точках данных (, то есть 3или 82).. Я читал о lmи nls, но на самом деле ничего не понял.

Сначала я создал функцию, которая, как мне показалось, больше всего походит на сюжет:

f <- function(x, a, b) {
    a * exp(b *-x)
}
x <- seq(0:100)
y <- f(seq(0:100), 1,1)
qplot(x,y, geom="line")

plot2

После этого я попытался создать подходящую модель, используяnls:

> fit <- nls(y ~ f(x, a, b), data=mydata, start=list(a=1, b=1))
   Error in numericDeriv(form[[3]], names(ind), env) :
   Missing value or an Infinity produced when evaluating the model

Может ли кто-нибудь указать мне в правильном направлении, что делать дальше?

Последующие действия

Прочитав ваши комментарии и немного погуглив, я скорректировал начальные параметры для a, bи c, и затем внезапно модель сошлась.

fit <- nls(y~f(x,a,b,c), data=data.frame(mydata), start=list(a=1, b=30, c=-0.3))
x <- seq(0,120)
fitted.data <- data.frame(x=x, y=predict(fit, list(x=x))
ggplot(mydata, aes(x, y)) + geom_point(color="red", alpha=.5) + geom_line(alpha=.5) + geom_line(data=fitted.data)

plot3

9
задан Benjamin 11 July 2014 в 11:22
поделиться