¿Cómo puedo trazar un objeto fda usando ggplot2?
Sep 04 2020
Usando el paquete fda he creado el objeto fd llamado "curva":
splinebasis = create.bspline.basis(rangeval = c(0,100),
nbasis = 23,
norder = 4)
curve = smooth.basis(x, y, splinebasis)$fd
En este punto, puedo trazar fácilmente mi objeto fd a través del comando:
plot(curve)
Obteniendo un buen resultado.
Lo que me gustaría hacer es trazar el objeto usando el paquete ggplot2, pero desafortunadamente no tengo ni idea de cómo codificar el ggplot2 st, usa la base y el coeficiente para devolver la curva continua *.
- De hecho, lo hice usando eval.fd, pero deseo trazar la función B spline real usando ggplot, en lugar de algunos puntos discretos generados nuevos.
Respuestas
1 MarcoSandri Sep 04 2020 at 21:32
Aquí hay una solución simple que se usa predictdesde el fdapaquete.
library(fda)
set.seed(1)
x <- 0:100
y <- cumsum(rnorm(101))
splinebasis <- create.bspline.basis(rangeval = c(0,100),
nbasis = 23,
norder = 4)
curve <- smooth.basis(x, y, splinebasis)
# Plot using base graphic engine
plot(curve$fd)
# Plot using ggplot2
library(ggplot2)
xx <- seq(0,100,0.1)
df <- data.frame(x=xx, yhat = predict(curve, newdata=xx))
ggplot(data=df, aes(x=x, y=yhat)) +
geom_line() +
geom_hline(aes(yintercept=0), linetype=2) +
labs(x="time", y="value") +
theme_bw()