Estoy corriendo de regresión logística en R (glm). Me administrar para trazar el resultado. Mi código es como sigue:

 temperature.glm = glm(Response~Temperature, data=mydata,family=binomial)

 plot(mydata$Temperature,mydata$Response, ,xlab="Temperature",ylab="Probability of Response")
 curve(predict(temperature.glm,data.frame(Temperature=x),type="resp"),add=TRUE, col="red")
 points(mydata$Temperature,fitted(temperature.glm),pch=20)
 title(main="Response-Temperature with Fitted GLM Logistic Regression Line") 

Mis preguntas son:

  1. ¿Cómo podría trazar dos de regresión logística de la curva en una parcela?
  2. Tengo estas dos coeficiente de otras estadística de software. ¿Cómo podría yo crear datos aleatorios, conecte estos dos conjuntos de coef(Set 1 y Set 2) y, a continuación, se obtienen dos curvas de regresión logística?

Los modelos:

                   SET 1
 (Intercept)     -88.4505
 Temperature       2.9677

                  SET 2
 (Intercept)    -88.585533
 Temperature      2.972168

mydata es en 2 columnas y ~ 700 filas.

Response Temperature 
1 29.33 
1 30.37 
1 29.52 
1 29.66 
1 29.57 
1 30.04 
1 30.58 
1 30.41 
1 29.61 
1 30.51 
1 30.91 
1 30.74 
1 29.91 
1 29.99 
1 29.99 
1 29.99 
1 29.99 
1 29.99 
1 29.99 
1 30.71 
0 29.56 
0 29.56 
0 29.56 
0 29.56 
0 29.56 
0 29.57 
0 29.51
¿Por qué no puede usted acaba de llamar curve (o lines) dos veces, con valores para las diferentes curvas?
También, es mucho más fácil responder a tu pregunta si usted proporciona un conjunto de datos reproducibles. En este caso, no tenemos acceso a mydata, que hace las cosas más difíciles.
Por último, retira el sig. Poner tu nombre en tu perfil si quieres que la gente sepa que usted está Eddie. Bienvenido, por cierto.
Si desea parcela de lado a lado, el uso de par(mfrow=c(1, 2)) antes de su plot llamada. De lo contrario, Richie sugerencia para llamar curve dos veces deben trabajar por la sobreposición de dos curvas.
No estoy seguro si te refieres a producir al azar dos conjuntos de datos, cada uno de los cuales se ajusta a uno de los dos modelos, pero si es así, usted podría tratar de rbinom(1000, 1, (1/(1+exp(-88.4505 + 2.9677*x))) (para el primer modelo, similar para el 2do, donde x es temp).

OriginalEl autor Eddie | 2012-02-13

1 Comentario

  1. 16
    1. Para trazar una curva, tan solo necesita definir la relación entre la respuesta y el predictor, y especificar el rango de la predictor de valor para el cual desea que la curva trazada. por ejemplo:

      dat <- structure(list(Response = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
      1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 
      0L, 0L), Temperature = c(29.33, 30.37, 29.52, 29.66, 29.57, 30.04, 
      30.58, 30.41, 29.61, 30.51, 30.91, 30.74, 29.91, 29.99, 29.99, 
      29.99, 29.99, 29.99, 29.99, 30.71, 29.56, 29.56, 29.56, 29.56, 
      29.56, 29.57, 29.51)), .Names = c("Response", "Temperature"), 
      class = "data.frame", row.names = c(NA, -27L))
      temperature.glm <- glm(Response ~ Temperature, data=dat, family=binomial)
      plot(dat$Temperature, dat$Response, xlab="Temperature", 
      ylab="Probability of Response")
      curve(predict(temperature.glm, data.frame(Temperature=x), type="resp"), 
      add=TRUE, col="red")
      # To add an additional curve, e.g. that which corresponds to 'Set 1':
      curve(plogis(-88.4505 + 2.9677*x), min(dat$Temperature), 
      max(dat$Temperature), add=TRUE, lwd=2, lty=3)
      legend('bottomright', c('temp.glm', 'Set 1'), lty=c(1, 3), 
      col=2:1, lwd=1:2, bty='n', cex=0.8)

      En la segunda curve la llamada anterior, estamos diciendo que la función logística se define la relación entre x y y. El resultado de plogis(z) es equivalente a la obtenida al evaluar 1/(1+exp(-z)). El min(dat$Temperature) y max(dat$Temperature) argumentos definir el rango de x para que y debe ser evaluado. No necesitamos decirle a la función que x se refiere a la temperatura; esto está implícito cuando se especifica que la respuesta debe ser evaluado para ese rango de valores predictores.

      Parcela de dos curvas de regresión logística en R

    2. Como se puede ver, la curve función le permite trazar una curva sin necesidad de simular predictor (por ejemplo, temperatura) de datos. Si usted todavía necesita para hacer esto, por ejemplo, para trazar algunas simulada de los resultados de ensayos de Bernoulli que se ajustan a un modelo en particular, entonces usted puede intentar las siguientes:

      n <- 100 # size of random sample
      # generate random temperature data (n draws, uniform b/w 27 and 33)
      temp <- runif(n, 27, 33)
      # Define a function to perform a Bernoulli trial for each value of temp, 
      #   with probability of success for each trial determined by the logistic
      #   model with intercept = alpha and coef for temperature = beta.
      # The function also plots the outcomes of these Bernoulli trials against the 
      #   random temp data, and overlays the curve that corresponds to the model
      #   used to simulate the response data.
      sim.response <- function(alpha, beta) {
      y <- sapply(temp, function(x) rbinom(1, 1, plogis(alpha + beta*x)))  
      plot(y ~ temp, pch=20, xlab='Temperature', ylab='Response')
      curve(plogis(alpha + beta*x), min(temp), max(temp), add=TRUE, lwd=2)    
      return(y)
      }

      Ejemplos:

      # Simulate response data for your model 'Set 1'
      y <- sim.response(-88.4505, 2.9677)
      # Simulate response data for your model 'Set 2'
      y <- sim.response(-88.585533, 2.972168)
      # Simulate response data for your model temperature.glm
      # Here, coef(temperature.glm)[1] and coef(temperature.glm)[2] refer to
      #   the intercept and slope, respectively
      y <- sim.response(coef(temperature.glm)[1], coef(temperature.glm)[2])

      La figura de abajo se muestra la trama producida por el primer ejemplo de arriba, es decir, los resultados de un único ensayo de Bernoulli para cada valor del vector aleatorio de la temperatura, y la curva que describe el modelo a partir de la cual los datos fueron simulados.

      Parcela de dos curvas de regresión logística en R

    esto es exactamente lo que estoy buscando. U me salvó!. 🙂

    OriginalEl autor jbaums

Dejar respuesta

Please enter your comment!
Please enter your name here