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 plot) pero no puedo encontrar ninguna información sobre cómo ajustar modelos a datos multivariantes en R! Solo para datos univariados, ¿alguien puede ayudar? Ni siquiera sé por dónde empezar … ¡Gracias!
Comentarios
- Esto es un poco confuso. Dices que tienes dos " variables " independientes (prefiero " predictor ", pero eso ' no es importante). ¿Tiene algún " dependiente " / " respuesta " variables? Si ambas fueran 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 la densidad del kernel en 2D. Quizás podrías explicar un poco más el contexto. «>
s votando a favor la pregunta debe saber lo que significa … ¿alguien quiere intervenir?)
Respuesta
No estoy completamente seguro de lo que está preguntando, porque su jerga no es correcta. Pero suponiendo que sus variables no son independientes entre sí (si lo fueran, entonces no hay relación que encontrar). Lo intentaré. Si x
es su variable independiente (o predictor) y y
es 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)))
Comentarios
- gracias por tu respuesta, he tomado la palabra " independiente ", como señaló, no ' tiene 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. ¿
nls()
se ajusta a un modelo? - 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 residual: 18.62 Número de iteraciones hasta la convergencia: 6 Tolerancia de convergencia lograda: 8.08e-06
- @sbg intente ordenar su
x
variable:lines(sort(temp$x),predict(mod, list(x=sort(temp$x)))