Estimados,
un cliente pregunta si es posible trazar los contornos de las predicciones de su modelo y/o los intervalos de predicción en todo el rango de valores posibles para mis variables independientes.
Lo obtiene en R (usando la función expand.grid), donde la línea punteada es el intervalo de predicción del 95 % inferior (archivo adjunto 1).
Lo mejor que pudo hacer (y yo también) es el archivo adjunto 2 y, en resumen, él y yo no pudimos tener la línea punteada.(También tengo un conjunto ficticio de datos con el gráfico)
También publicó la pregunta en la comunidad.
¿Tienes alguna sugerencia?
gracias
Hola @MarcoSalfi ,
La función expand.grid actúa como FacetGrid en Seaborn para Python o la función facet_grid en ggplot2 de R. Básicamente hace todas las combinaciones posibles de uno o más factores introducidos como una fórmula o matriz. ¿Cuál es la línea completa de código R utilizada con la función expand.grid? Supongo que el resto del código de trazado es lo que da el gráfico de densidad con el cuadro de línea discontinua.
Hola Marco,
Una opción podría ser crear un diseño de relleno de espacio para cubrir adecuadamente el rango de posibilidades que el usuario desea explorar y luego evaluar la fórmula para todas las combinaciones en el diseño de relleno de espacio.
Sin embargo, intentaría preguntar qué información desea obtener al crear la trama. Una mejor alternativa puede ser un gráfico perfilador de la fórmula o el modelo de regresión, sin y con control de extrapolación. El generador de perfiles es una forma mucho mejor de controlar la complejidad de la alta dimensionalidad de este problema. Podríamos desear dar la advertencia habitual sobre el peligro de extrapolar fuera del rango del espacio X (o espacio de diseño) cuando se utilizan modelos empíricos.
Malcolm
Hola @Chris_Kirchberg , siguiendo el código utilizado por el cliente:
## Transformar variables
log.AlphaLISA = log(AlphaLISA)
registro.conejo = registro(Conejo.Ab)
registro.ratón = registro(Ratón.Ab)
log.lisado = log(Lisado)
ajuste = lm( Log.AlphaLISA ~ Ab*(log.rabbit+log.mouse+log.lysate)^2 +
Ab*I(registro.conejo^2) + Ab*I(registro.ratón^2) +
Ab*I(log.lisado^2) )
d.grid = expandir.grid(
Ab=c("R1-M1", "R1-M2", "R2-M1", "R2-M2", "R3-M1", "R3-M2"),
log.rabbit=seq(log(0.3), log(3), longitud=5),
log.mouse=seq(log(0.3), log(3), longitud=10),
log.lysate=seq(log(0.25), log(2), longitud=10)
)
## Intervalo de predicción 95 % más bajo
d.grid = cbind(d.grid,
predecir (ajuste, nuevos datos = d.grid, intervalo = "predicción", nivel = 0.9))
d.grid[,"lower95p"] = exp(d.grid[,"lwr"])
gracias Malcolm,
la discusión va en esta dirección. En realidad, el cliente también está abierto a otras opciones.