Anpassen eines Exponentialmodells an Daten

21

Ich habe 2 Variablen, beide aus der Klasse "numerisch":

> 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

Ich habe sie geplottet und möchte jetzt ein Exponentialmodell an die Daten anpassen (und zum Plot hinzufügen), aber ich kann keine Informationen zum Anpassen von Modellen an multivariate Daten in R finden! Kann jemand helfen, nur um Daten zu univariieren? Ich weiß nicht mal, wo ich anfangen soll ... Danke!

sbg
quelle
6
Das ist etwas verwirrend. Sie sagen, Sie haben zwei "unabhängige" Variablen (ich bevorzuge "Prädiktor", aber das ist nicht wichtig). Haben Sie irgendwelche "abhängigen" / "Antwort" -Variablen? Wenn dies beide Antwortvariablen wären, könnte ich mir vorstellen, eine parametrische, bivariate Wahrscheinlichkeitsverteilung (mit oder ohne Prädiktorvariablen, von denen die Verteilungsparameter abhängen) oder eine Schätzung der 2D-Kerneldichte anzupassen. Vielleicht könnten Sie den Kontext etwas näher erläutern. (PS, wer die Frage abstimmt, muss wissen, was es bedeutet ... jemand daran interessiert, sich
Ben Bolker
In jedem Fall gehen Sie für solche Fragen besser zu crossvalidated.com . oder auf eine obskure Website namens Google. Es wurden Informationen zur Anpassung von Modellen an multivariate Daten gefunden. Sehr viel (4 Millionen zweihundertdreißigtausend um genau zu sein)
Joris Meys
Ich würde Bing empfehlen - es ist immerhin eine Entscheidungsmaschine, Suchmaschinen sind so alt wie im 20. Jahrhundert ... schauen Sie sich nur Yahoo und Ask Jeeves an, wie irrelevant sie heute sind?!?
Chase
@Ben Bolker - Danke für die Hilfe, ich habe den Independent rausgenommen, weil es nicht korrekt war. Was ich habe, ist die Entfernung zwischen Standorten (x) und Korrelationen der Niederschläge zwischen Standorten (y)
Beachten Sie, dass Sie spezielle Methoden anwenden müssen, wenn Sie statistische Rückschlüsse auf diese Daten ziehen möchten, da die Entfernungen, wenn sie an einem gemeinsamen Satz von Orten berechnet wurden, nicht unabhängig voneinander sind - suchen Sie z. B. nach "Mantel-Test"
Ben Bolker

Antworten:

20

Ich bin mir nicht ganz sicher, wonach du fragst, denn dein Jargon ist aus. Aber unter der Annahme, dass Ihre Variablen nicht unabhängig voneinander sind (wenn ja, dann sind sie nicht zu finden), werde ich es versuchen. Wenn dies xIhre unabhängige (oder Prädiktor-) Variable und yIhre abhängige (oder Antwort-) Variable ist, sollte dies funktionieren.

# 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
quelle
danke für deine antwort, ich habe das wort "unabhängig" gestrichen, wie du betont hast, es ergab keinen sinn. Wenn ich Ihren Code für meine Daten verwende, kann ich das Modell anpassen, aber das Ergebnis sind Dutzende von Linien im Diagramm anstatt nur einer. Irgendeine Idee warum?
@sbg - Nein, sorry, ich kann mir keinen Grund vorstellen warum. Passt nls()ein Model?
Richard Herron
Ich denke schon, ich bekomme: Nichtlineares Regressionsmodell Modell: y ~ exp (a + b * x) Daten: DF ab -0.535834 -0.002024 Restsumme der Quadrate: 18.62 Anzahl der Iterationen zur Konvergenz: 6 Erreichte Konvergenztoleranz: 8.08 e-06
3
@sbg versuchen Sie, Ihre xVariable zu sortieren :lines(sort(temp$x),predict(mod, list(x=sort(temp$x)))
Ben Bolker