Ajuster un modèle exponentiel aux données

21

J'ai 2 variables, toutes deux de la classe "numérique":

> head(y)
[1] 0.4651804 0.6185849 0.3766175 0.5489810 0.3695258 0.4002567

> head(x)
[1] 59.32820 68.46436 80.76974 132.90824 216.75995 153.25551

Je les ai tracées, et maintenant je voudrais ajuster un modèle exponentiel aux données (et l'ajouter au tracé) mais je ne trouve aucune information sur l'ajustement des modèles aux données multivariées dans R! Uniquement pour les données univariées, quelqu'un peut-il aider? Je ne sais même pas par où commencer ... Merci!

sbg
la source
6
C'est un peu déroutant. Vous dites que vous avez deux variables "indépendantes" (je préfère "prédicteur", mais ce n'est pas important). Avez-vous des variables "dépendantes" / "réponse"? S'il s'agissait de deux variables de réponse, je peux imaginer ajuster une distribution de probabilité paramétrique et bivariée (avec ou sans variables prédictives dont dépendaient les paramètres de la distribution) - ou une estimation de densité de noyau 2D. Peut-être pourriez-vous expliquer un peu plus le contexte. (PS, celui qui vote pour la question doit savoir ce que cela signifie ... quelqu'un veut-il sonner?)
Ben Bolker
Dans tous les cas, vous feriez mieux d'aller sur crossvalidated.com pour de telles questions. ou à un site Web obscur appelé Google. Il a trouvé des informations sur l'ajustement des modèles aux données multivariées. Beaucoup (4 millions deux cent trente mille pour être exact)
Joris Meys
Je recommanderais Bing - c'est un moteur de décision après tout, les moteurs de recherche sont tellement du 20e siècle ... il suffit de regarder Yahoo et Ask Jeeves, à quel point sont-ils sans importance aujourd'hui?!?
Chase
@Ben Bolker - Merci d'avoir aidé, j'ai retiré les indépendants, car ce n'était pas correct. Ce que j'ai, c'est la distance entre les emplacements (x) et les corrélations des précipitations entre les emplacements (y)
notez que vous devrez utiliser des méthodes spéciales si vous voulez faire des inférences statistiques sur ces données, car si les distances ont été calculées sur un ensemble commun de localisations, elles ne sont pas indépendantes - recherchez par exemple "Test de Mantel"
Ben Bolker

Réponses:

20

Je ne sais pas exactement ce que vous demandez, car votre jargon est éteint. Mais en supposant que vos variables ne sont pas indépendantes les unes des autres (si elles l'étaient, alors elles n'auraient aucune relation à trouver), je vais essayer. Si xest votre variable indépendante (ou prédictive) et yvotre variable dépendante (ou réponse), alors cela devrait fonctionner.

# generate data
beta <- 0.05
n <- 100
temp <- data.frame(y = exp(beta * seq(n)) + rnorm(n), x = seq(n))

# plot data
plot(temp$x, temp$y)

# fit non-linear model
mod <- nls(y ~ exp(a + b * x), data = temp, start = list(a = 0, b = 0))

# add fitted curve
lines(temp$x, predict(mod, list(x = temp$x)))
Richard Herron
la source
merci pour votre réponse, j'ai retiré le mot "indépendant", comme vous l'avez souligné, cela n'avait pas de sens. En utilisant votre code pour mes données, je peux adapter le modèle, mais le résultat est des dizaines de lignes dans le graphique au lieu d'une seule. Une idée pourquoi?
@sbg - Non, désolé, je ne vois pas pourquoi. Convient-il à nls()un modèle?
Richard Herron
Je pense que oui, j'obtiens: Modèle de modèle de régression non linéaire: y ~ exp (a + b * x) données: DF ab -0.535834 -0.002024 somme des carrés résiduels: 18.62 Nombre d'itérations vers la convergence: 6 Tolérance de convergence atteinte: 8.08 e-06
3
@sbg essayez de trier votre xvariable:lines(sort(temp$x),predict(mod, list(x=sort(temp$x)))
Ben Bolker