Ajustar un modelo exponencial a los datos

21

Tengo 2 variables, ambas de la clase "numérica":

> 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

Los tracé, y ahora me gustaría ajustar un modelo exponencial a los datos (y agregarlo al diagrama) pero no puedo encontrar ninguna información sobre cómo ajustar modelos a datos multivariados en R. Solo para datos univariantes, ¿alguien puede ayudar? Ni siquiera sé por dónde empezar ... ¡Gracias!

sbg
fuente
66
Esto es un poco confuso. Dices que tienes dos variables "independientes" (prefiero "predictor", pero eso no es importante). ¿Tiene alguna variable "dependiente" / "respuesta"? Si estas fueran ambas variables de respuesta, me imagino ajustando una distribución de probabilidad paramétrica y bivariada (con o sin variables predictoras de las que dependían los parámetros de la distribución), o una estimación de densidad de kernel en 2D. Quizás podrías explicar el contexto un poco más. (PD: quienquiera que esté votando la pregunta debe saber lo que significa ... ¿a alguien le
gustaría intervenir
En cualquier caso, será mejor que visite crossvalidated.com para tales preguntas. o a un sitio web oscuro llamado Google. Encontró información sobre modelos de ajuste a datos multivariados. Bastante (4 millones doscientos treinta mil para ser exactos)
Joris Meys
Recomiendo Bing: después de todo, es un motor de decisión, los motores de búsqueda son tan del siglo XX ... solo mira Yahoo y Pregúntale a Jeeves, ¿qué tan irrelevantes son hoy?
Chase
@Ben Bolker - Gracias por ayudar, he eliminado a los independientes, porque no era correcto. Lo que tengo es la distancia entre ubicaciones (x) y las correlaciones de lluvia entre ubicaciones (y)
tenga en cuenta que tendrá que usar métodos especiales si desea hacer inferencias estadísticas sobre estos datos, porque si las distancias se calcularon en un conjunto común de ubicaciones, no son independientes - busque, por ejemplo, "Prueba de Mantel"
Ben Bolker

Respuestas:

20

No estoy completamente seguro de lo que estás preguntando, porque tu jerga está apagada. Pero suponiendo que sus variables no sean independientes entre sí (si lo fueran, entonces no serán una relación para encontrar) Lo intentaré. Si xes su variable independiente (o predictor) y yes su variable dependiente (o de respuesta), entonces esto debería funcionar.

# 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
fuente
gracias por su respuesta, he eliminado la palabra "independiente", como usted señaló, no tenía sentido. Usando su código para mis datos, puedo ajustar el modelo, pero el resultado son docenas de líneas en el gráfico en lugar de solo una. ¿Alguna idea de por qué?
@sbg - No, lo siento, no puedo pensar en una razón. ¿Se nls()ajusta a un modelo?
Richard Herron
Creo que sí, obtengo: Modelo de modelo de regresión no lineal: y ~ exp (a + b * x) datos: DF ab -0.535834 -0.002024 suma de cuadrados residuales: 18.62 Número de iteraciones a la convergencia: 6 Tolerancia de convergencia lograda: 8.08 e-06
3
@sbg intenta ordenar tu xvariable:lines(sort(temp$x),predict(mod, list(x=sort(temp$x)))
Ben Bolker