2 votos

Surf3D, ejemplo de ggRandomForests: Bosques aleatorios para regresión

Tengo un modelo y quiero utilizar la función surf3D en R, y producir un gráfico similar al siguiente (la imagen es el ejemplo de "ggRandomForests: Random Forests for Regression").

Ejemplos de datos disponibles en

https://www.dropbox.com/s/hho5sgwjhlk4185/data.csv?dl=0

rfsrc_data <- rfsrc(rtp~., data=data)

A partir de aquí, entiendo que tengo que crear una superficie parcial y luego utilizar el surf3D de forma similar al ejemplo de ggRandomForests: Random Forests for Regression, sin embargo, estoy perdido con las superficies parciales.

surf3D(x=srf$x, y=srf$y, z=srf$z, col=topo.colors(10),
 colkey=FALSE, border = "black", bty="b2",
 shade = 0.5, expand = 0.5,
 lighting = TRUE, lphi = -50,
 xlab="Lower Status", ylab="Average Rooms", zlab="Median Value"

enter image description here

3voto

Dan Puntos 16

Primero debe crear un gráfico de dependencia parcial bivariante. Creo que la función que está buscando para crear el objeto para pasar a plot3D::surf3D es ggRandomForests::partial.rfsrc , ggRandomForests::gg_partial_coplot o ggRandomForests::gg_partial y puede llamar al objeto de trazado utilizando la función plot genérico pero, probablemente no sea un objeto 3D.

Sinceramente, te recomiendo que, a menos que busques algo específico en el paquete ggRandomForests, utilices el paquete paquete pdp es mucho más flexible para explorar la dependencia parcial y puede admitir objetos randomForest o ranger, junto con una gran variedad de otros tipos de objetos modelo. Para la dependencia parcial bivariante y los gráficos 3D asociados, véase la sección sobre PDP multipredictores en la viñeta enlazada.

He aquí un ejemplo rápido de cómo crear un gráfico de dependencia parcial bivariante, con pdp, utilizando sus datos y los bosques aleatorios del paquete ranger.

library(ranger)
library(pdp)

rtp <- read.csv("https://www.dropbox.com/s/hho5sgwjhlk4185/data.csv?raw=1")

( mdl <- ranger::ranger(rtp~., data=rtp) )

bvpd <- pdp::partial(mdl, pred.var = c("pp", "mv"), 
                     grid.resolution = 40)                
  pdp::plotPartial(bvpd, levelplot = FALSE, zlab = "rtp", drape = TRUE,
                   colorkey = FALSE, screen = list(z = -20, x = -60),
                   palette = c("viridis", "magma", "inferno",
                   "plasma", "cividis"))    

Bivariate partial plot of pp and mv

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X