Dopasowanie modelu wykładniczego do danych

21

Mam 2 zmienne, obie z klasy „numeryczne”:

> 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

Narysowałem je, a teraz chciałbym dopasować model wykładniczy do danych (i dodać go do wykresu), ale nie mogę znaleźć żadnych informacji na temat dopasowania modeli do danych wielowymiarowych w R! Czy ktoś może pomóc tylko w przypadku danych jednowymiarowych? Nie wiem nawet, od czego zacząć ... Dzięki!

sbg
źródło
6
To jest trochę mylące. Mówisz, że masz dwie „niezależne” zmienne (wolę „predyktor”, ale to nie jest ważne). Czy masz jakieś zmienne „zależne” / „odpowiedzi”? Gdyby były to obie zmienne odpowiedzi, mogę sobie wyobrazić dopasowanie parametrycznego, dwuwymiarowego rozkładu prawdopodobieństwa (ze zmiennymi predykcyjnymi lub bez nich, od których zależały parametry rozkładu) - lub oszacowania gęstości jądra 2D. Być może mógłbyś bardziej wyjaśnić kontekst. (PS ktokolwiek głosuje pytanie, musi wiedzieć, co to znaczy ... ktoś chce
wtrącić się
W każdym razie lepiej przejdź do crossvalidated.com, aby uzyskać takie pytania. lub w mało znanej witrynie Google. Znaleziono informacje na temat dopasowania modeli do danych wielowymiarowych. Całkiem sporo (dokładnie 4 miliony dwieście trzydzieści tysięcy)
Joris Meys,
Polecam bing - to w końcu silnik decyzyjny, wyszukiwarki są tak XX wieku ... wystarczy spojrzeć na Yahoo i zapytać Jeevesa, jak ważne są dzisiaj?!?
Chase
@Ben Bolker - Dzięki za pomoc, usunąłem niezależnego, ponieważ to nie było poprawne. Co mam jest odległość między lokalizacjami (x) i korelacje opadów pomiędzy lokalizacjami (y)
zwróć uwagę, że będziesz musiał użyć specjalnych metod, jeśli chcesz dokonać wnioskowania statystycznego na tych danych, ponieważ jeśli odległości zostały obliczone na wspólnym zbiorze lokalizacji, nie są one niezależne - wyszukaj np. „test Mantela”
Ben Bolker

Odpowiedzi:

20

Nie jestem do końca pewien, o co pytasz, ponieważ twoje lingo jest wyłączone. Ale zakładając, że twoje zmienne nie są od siebie niezależne (jeśli tak, to nie można ich znaleźć), spróbuję. Jeśli xjest to zmienna niezależna (lub predyktorowa) i zmienna yzależna (lub reakcyjna), to powinno działać.

# 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
źródło
dzięki za odpowiedź. Wyjąłem słowo „niezależny”, jak zauważyłeś, nie miało to sensu. Używając twojego kodu do moich danych, mogę dopasować model, ale wynikiem jest dziesiątki linii na wykresie zamiast tylko jednej. Masz pomysł, dlaczego?
@sbg - Nie, przepraszam, nie mogę wymyślić przyczyny. Czy nls()pasuje do modelu?
Richard Herron,
Myślę, że tak, otrzymuję: Model regresji nieliniowej: y ~ exp (a + b * x) dane: DF ab -0,535834 -0,002024 suma kwadratów resztkowych: 18,62 Liczba iteracji do konwergencji: 6 Osiągnięta tolerancja konwergencji: 8,08 e-06
3
@sbg spróbuj posortować xzmienną:lines(sort(temp$x),predict(mod, list(x=sort(temp$x)))
Ben Bolker