Installer une fonction dans R
J'ai quelques points de données (x et y) qui semblent avoir une relation logarithmique.
> 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")
Maintenant, je voudrais trouver une fonction sous-jacente qui s'adapte sur le graphique et me permet d'en déduire d'autres points de données (c'est à dire 3
ou 82
). J'ai lu sur lm
et nls
mais je ne suis pas aller nulle part vraiment.
Au premier abord, j'ai créé une fonction dont j'ai pensé qu'il ressemblait à l'intrigue le plus:
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")
Par la suite, j'ai essayé de générer un modèle de montage à l'aide de 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
Quelqu'un peut me pointer dans la bonne direction sur quoi faire à partir d'ici?
Suivi
Après la lecture de vos commentaires et de googler un peu plus loin j'ai ajusté les paramètres de départ pour a
b
et c
et puis, soudain, le modèle de convergence.
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)
source d'informationauteur jnns
Vous devez vous connecter pour publier un commentaire.
Peut-être l'aide d'un cube de spécification du modèle et l'estimation par
lm
vous donnera un bon ajustement.Essayez de prendre le journal de votre réponse à la variable, puis à l'aide de
lm
à l'ajustement d'un modèle linéaire:La adjusted R-squared est 0.8486, à la valeur nominale n'est pas mauvaise. Vous pouvez regarder l'ajustement à l'aide de la parcelle, par exemple:
Mais peut-être, il n'est pas un bon ajustement, après tout:
Vérifier ce document: http://cran.r-project.org/doc/contrib/Ricci-distributions-en.pdf
En bref, vous devez d'abord décider sur le modèle pour s'adapter sur vos données (par exemple, exponentielle) et ensuite l'estimation de ses paramètres.
Voici quelques largement utilisé distributions:
http://www.itl.nist.gov/div898/handbook/eda/section3/eda366.htm