6 votos

Creación de diagrama de dispersión suavizado univariable en escala logit usando R

Estoy aprendiendo de regresión logística modelos de el libro de Aplicar la Regresión Logística por Hosmer.

Necesito crear una parcela denominada "crear univariable alisado diagrama de dispersión en la escala logit", algo parecido a este (Figura 4.2 página 107): enter image description here

Alguien puede ayudar? Gracias.

edición 01

Gracias por todas las respuestas. Yo intenté crear la trama, y descubrir que smooth.spline creado el gráfico con el porcentaje (nrow((df[df[,"dfree"]==1,]))/nrow(df)), en lugar de logit (log(nrow(df[df[,"dfree"]==1,])/nrow(df[df[,"dfree"]==0,]))) a la hora de crear el eje. Sí, la gráfica es similar, pero me pregunto si podemos crear una copia exacta de que? Gracias.

Una cosa más, cuando se utiliza logit, algunos de los logit valor en los datos.el marco es de -Inf y Inf, lo cual no está permitido en smooth.spline.

edición 02

Tengo una pregunta acerca de mi edición: Lo que si me manualmente dejó todo lo Inf y -Inf mis datos.marco y hacer smooth.spline en los datos.marco? Es apropiado?

7voto

Rob Wells Puntos 361

Puede encontrar el H & L ALR en la web. Creo que lo que L & H está haciendo es simplemente ajustar un loess a la relación de dfree-age y luego transformar las probabilidades esperadas en logits. Vea abajo.

 uis<-read.delim("http://www.umass.edu/statdata/statdata/data/uis.dat",                  
                skip=4, sep="", header=FALSE) 
names(uis)<-c("id","age","beck","ivhx","ndrugx","race","reat","site","dfree")  
lfit<-loess(uis$dfree~uis$age) 
lgpred<-log(predict(lfit)/(1-predict(lfit))) 
plot(lgpred~uis$age)
 

enter image description here

Como dijo @Momo, desde allí puedes jugar con el parámetro de suavizado para obtener una mejor reproducción.

4voto

Mark S. Rasmussen Puntos 13313

No sucedió en este ejemplo, pero hay que ver que el loess modelo no se dejen llevar y producir "suavizada' las probabilidades de que se encuentran fuera de (0,1). Siguiendo con el ejemplo de Brett

lprob <- predict(lfit)
lprob <- apply(cbind(lprob, 0.01), MARGIN=1, FUN=max)
lprob <- apply(cbind(lprob, 0.99), MARGIN=1, FUN=min)

Como un novato de trabajo a través de Hosmer y Lemeshow, me pareció interesante para trazar el loess de ajuste (como una probabilidad) en contra de la edad, puede obtener una buena idea de cómo es la formación de un "promedio ponderado" entre el sin alisamiento 0's y 1's medida que aumenta la edad.

Por el camino hasta llegar muy cerca de la gráfica de H+L hecho, trate de

lfit <- loess(uis$dfree ~ uis$age, span=.6, degree=1)

4voto

Sean Hanley Puntos 2428

La clave aquí es que el logit se traza en el eje y. Cuando se está ejecutando una regresión logística, normalmente, los datos son de una columna de 1's y 0's. Cuando los valores sólo se producen en un número limitado de unidades de los valores de x, que puede ser "agrupan", o convertido en porcentajes. Vamos a suponer que sus datos están en porcentajes. El logit de transformación es:

$$l=\ln\left(\frac{p}{1-p}\right)$$

where $l$ is the logit, $p$ is the percentage and $\ln$ (obviously) is the natural log. Given these values, the plot could be created in R with plot(lowess(logit~age)).

If your data are not grouped (or group-able), then this would not work. (For example, the natural log of $0$ is -Inf. and $1/0$ is undefined. In such a case, you might fit a lowess to your untransformed $de$ y el primero (que daría probabilidades pronosticadas) y asignar el lowess ajuste a una variable. A continuación, la variable puede ser transformado, como en el anterior, y se representan.

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