3 votos

Trazado de un modelo en R

He utilizado el vglm() del paquete VGAM para obtener un modelo Weibull para algunos datos. Me gustaría trazar la curva que representa este modelo. ¿Cómo puedo hacerlo?

Aquí está mi entrada y salida (estoy comparando 'p_seen' con 'calculated_logmar', que existen en el marco de datos 'dframe1'):

> my_model <- vglm(formula = p_seen ~ calculated_logmar, family = weibull, data = dframe1)

Pearson Residuals:
  log(shape) log(scale)
1    0.78928  -0.093136
2   -1.21092  -0.978527
3    0.12519   0.020018

Coefficients:
                     Estimate Std. Error   z value
(Intercept):1      1.4797e+01 1.0803e+00  13.69619
(Intercept):2      4.5824e-06 2.3095e-05   0.19841
calculated_logmar -1.5324e+01 1.4448e+00 -10.60582

Number of linear predictors:  2 

Names of linear predictors: log(shape), log(scale)

Dispersion Parameter for weibull family:   1

Log-likelihood: 9.46132 on 3 degrees of freedom

Number of iterations: 30 

Entiendo que los coeficientes deben relacionarse de alguna manera con el propio modelo, pero no tengo ni idea de cómo convertir estos coeficientes en gráficos significativos.

PD: Me gustaría utilizar ggplot2 para visualizar mis datos si es posible.

Editar : He intentado utilizar el comando:

plotvgam(my_model, se = TRUE, lcol = dframe1$calculated_logmar[1], scol = dframe1$calculated_logmar[1], which.term = 1)

Esto me da un gráfico de 'calculado_logmar' contra 'parcial para calculado_logmar'. Lo que estoy buscando es la curva real del modelo, mostrando calculated_logmar trazado contra p_seen. Si es posible, me gustaría renderizar esto usando ggplot2 . Se agradecería cualquier ayuda.

4voto

Jeff Davis Puntos 1999

No estoy seguro de si te refieres a esto, pero puedes trazar los valores ajustados del modelo frente a la variable predictora de forma normal:

## Generate example data
set.seed(123)
n <- 100
x <- runif(n)
d <- data.frame(
  x = x, 
  y = rweibull(n, shape=exp(1+x), scale=exp(-0.5)))

## Fit the model and create a new data set with the fitted values
library(VGAM)
m <- vglm(y ~ x, data=d, family=weibull)
p <- data.frame(
  x = d$x, 
  y.fit = fitted(m))

## Create the plot using ggplot (and mimicking the style in OP's comment link) 
library(ggplot2)
ggplot(p, aes(x, y.fit)) + geom_smooth() + geom_point(size=4, shape=1, alpha=0.6)

enter image description here

Es posible que obtengas una mejor respuesta para este tipo de preguntas en SO, y mi descargo de responsabilidad es que no estoy familiarizado con este tipo de modelo ni con el VGAM paquete, pero espero que esto al menos le indique la dirección correcta. Una mejor respuesta de CV explicaría cómo funcionan todas estas cosas...

3voto

Sonia Puntos 41

Según documentación del paquete hay una función llamada plotvgam para trazar los resultados de vglm:

fit2.ms <- vglm(mstatus ~ poly(age, 2) + foo(age) + age,
+ family = multinomial(refLevel = 2), constraints = clist,
+ data = nzmarital)
par(mfrow = c(2, 2))
plotvgam(fit2.ms, se = TRUE, scale = 12, lcol = mycol[1],
+ scol = mycol[1], which.term = 1)
plotvgam(fit2.ms, se = TRUE, scale = 12, lcol = mycol[2],
+ scol = mycol[2], which.term = 2)
plotvgam(fit2.ms, se = TRUE, scale = 12, lcol = mycol[3],
+ scol = mycol[3], which.term = 3)

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