[R-es] Representar datos longitudinales mediante splines

Carlos Ortega cof en qualityexcellence.es
Vie Mar 4 22:47:27 CET 2016


Hola,

Claro, es que con "lowes()" para la cantidad tan pequeña de datos que
tienes para cada clase, no tiene mucho sentido la interpolación local que
realiza "lowess" teniendo en cuenta los puntos próximos.

Fíjate que si no diferencias entre las clases de cada punto, sí que
"lowess()" interpola:

plot(df$x, df$y, xlab = "time", ylab="value", type="n", xlim = c(0,25),
ylim=c(20,120))
lines(lowess(df$x, df$y, f=2/3))
points(x = df$x, y = df$y, pch=16)

[image: Imágenes integradas 1]

El 4 de marzo de 2016, 17:46, Francisco Javier <iterador10 en hotmail.com>
escribió:

>
> En primer lugar, muchas gracias a Carlos, Javier Rubén y Olivier por
> vuestras respuestas.
>
> Carlos: Logro egectivamente el gráfico que me adjuntas cuando aplico tu
> código. Lo que sucede es que me doy cuenta de que con loess no consigo
> ningún suavizado, pues únicamente tengo los puntos de cada sujeto unidos
> mediante líneas. Así, el siguiente código me proporciona el mismo resultado
> que con el loess:
>
> plot(df$x, df$y, xlab = "time", ylab="value", type="n")
> for(i in unique(df$id)) {
>   lines((df$y[df$id == i] ~ df$x[df$id == i]), col = df$id)  }     #
> Grafico simplemente las líneas
>   points(x = df$x, y = df$y, pch=16, col = df$id)
> title("Scatter Plot of value vs. time")
>
> Lo que se más se asemejaría a la solución que busco es la propuesta de
> Olivier, salvo por dos aspectos: Dicha propuesta exige recurrir al uso de
> la librería ggplot2 y además impone que el suavizado pase por los puntos
> originales, lo cual es algo que no necesariamente quiero imponer.
>
> Finalmente, atendiendo a lo que me dice Javier Rubén, he pensado en cargar
> la librería splines y aplicar:
>
> plot(df$x, df$y, xlab = "time", ylab="value", type="n")
> for(i in unique(df$id)) {
>   lines((df$y[df$id == i] ~ bs(df$x[df$id == i]), col = df$id))  }   #
> Intento aplicar un ajuste B-spline a cada individuo con la función bs
>   points(x = df$x, y = df$y, pch=16, col = df$id)
> title("Scatter Plot of value vs. time")
>
> Pero no obtengo resultado. Quizás me estoy preguntando por algo que no se
> puede hacer en R, pero en cualquier caso muchas gracias por vuestras
> sugerencias.
>
> Francisco javier




-- 
Saludos,
Carlos Ortega
www.qualityexcellence.es
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20160304/f0bfe00b/attachment-0001.html>
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: image.png
Type: image/png
Size: 21311 bytes
Desc: no disponible
URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20160304/f0bfe00b/attachment-0001.png>


Más información sobre la lista de distribución R-help-es