7 votos

Cómo utilizar boxplots para encontrar el punto donde los valores son más probable que venga de condiciones diferentes?

Me han conspirado algunos datos usando diagramas de caja. Estoy comparando la Condición 1 (izquierda) y la Condición 2 (Derecha) de los valores. Mi objetivo es encontrar un punto en el que tomamos una decisión, donde los cambios de valor desde el punto de Condición 1 Condición 2.

Se esta conclusión tiene sentido, si yo digo que si tengo que hacer el experimento de nuevo y obtener cualquier valor de la mediana de la Condición 1, entonces es probable que el valor de la Condición 2?

O hay alguna otra manera que yo puedo representar estos datos para obtener conclusión de que si yo obtengo un valor aleatorio me puede decir si es a partir de la condición 1 condición o 2?

Datos presentados como código para la entrada R:

Cond.1 <- c(2.9, 3.0, 3.1, 3.1, 3.1, 3.3, 3.3, 3.4, 3.4, 3.4, 3.5, 3.5, 3.6, 3.7, 3.7,
            3.8, 3.8, 3.8, 3.8, 3.9, 4.0, 4.0, 4.1, 4.1, 4.2, 4.4, 4.5, 4.5, 4.5, 4.6,
            4.6, 4.6, 4.7, 4.8, 4.9, 4.9, 5.5, 5.5, 5.7)
Cond.2 <- c(2.3, 2.4, 2.6, 3.1, 3.7, 3.7, 3.8, 4.0, 4.2, 4.8, 4.9, 5.5, 5.5, 5.5, 5.7,
            5.8, 5.9, 5.9, 6.0, 6.0, 6.1, 6.1, 6.3, 6.5, 6.7, 6.8, 6.9, 7.1, 7.1, 7.1,
            7.2, 7.2, 7.4, 7.5, 7.6, 7.6, 10, 10.1, 12.5)

Cada condición tiene 39 valores.

enter image description here

13voto

Nick Cox Puntos 22819

enter image description here

Aquí es una de las muchas posibilidades. En 1979, Emanuel Parzen propuso cruzar el cuantil de la trama y el diagrama de caja. Algunas referencias se indican a continuación. Claramente, el cuadro del diagrama de caja muestra la mediana y los cuartiles, que son la clave de cuantiles. Mostrando todos los datos, es decir, todos los cuantiles o el fin de las estadísticas, es totalmente posible, al menos con un pequeño número de grupos (como en este hilo) y un moderado o pequeño número de observaciones (como en este hilo también). De hecho, el diseño se extiende bastante bien para tamaños de muestras más grandes. Los valores atípicos, granularidad, lazos, agrupación y lagunas (cualquiera que sea la forma que quiera pensar acerca de tales características) son siempre evidentes, así como a nivel general, la extensión y forma. El gráfico no está sujeto a artefactos o efectos secundarios de las reglas arbitrarias de pulgar como lo está o no dentro de 1.5 IQR de los más cercanos cuartil. Por el contrario, puede ofrecer mucho detalle para algunos gustos, pero ante una menos que ideal gráfico sólo se mueve en.

Es razonable señalar que cuantil parcelas son sólo acumulativa de la distribución de las parcelas con ejes invertidos, a pesar de que son más a menudo se muestra como patrones de puntos que como líneas conectadas.

Cox (2012) reportaron una Stata aplicación y su stripplot (Stata los usuarios pueden descargar desde SSC) ofrece otra. La implementación debe ser trivial en cualquiera de las principales estadísticos o de software matemático.

Pienso que este tipo de pantalla ofrece mucho más detalle que el de una convencional diagrama de caja, que aquí no explotar plenamente el espacio disponible. Convencional diagrama de caja puede ser útil para 10-100 grupos o variables, donde algunos severa reducción de los datos puede ser necesaria, pero se tira posiblemente interesante estructura fina para el común de los pocos del grupo o de algunos de la variable de caso.

Otra de las claves virtud de este gráfico es que los ecos de la escuela primaria, pero el hecho fundamental de que sólo la mitad de los valores están dentro de la caja, por lo que también la mitad de los valores están fuera de la caja (y a menudo el más interesante o más importante de la mitad). He visto ni experimentado estadística gente engañada por el marcado contraste entre la grasa y el cuadro de finos bigotes. El ejemplo clásico de esto es cualquier forma de U de la distribución o distribución con dos grandes grupos de aproximadamente el mismo tamaño. El cuadro entonces será largo y la grasa y las patillas cortas y delgadas. La gente a menudo olvida el hecho de que los bigotes se esconden las mayores densidades. Tukey (1977) dio un ejemplo de esto con Rayleigh de datos.

En este caso y en muchos otros, la escala logarítmica se utiliza. En principio, el cuantil-diagrama de caja es fácilmente compatible con cualquier monótona de transformación, como la transformación de los cuantiles es idéntica a la de cuantiles de la transformación de los valores. (Hay alguna letra pequeña de clasificación que, que surge debido a la mediana y los cuartiles, pueden ser producidos por el promedio de las estadísticas de orden, que no pican.)

Yo no ofrecen la presente ningún tipo de gráfica sustituto para una significación de la prueba. Este es un estudio exploratorio dispositivo.

Cox, N. J. 2012. Eje de la práctica, o lo que pasa cuando en un gráfico. Stata Journal 12(3): 549-561. .pdf accesibles de aquí

Parzen, E. 1979a. Estadística no paramétrica de modelado de datos. Diario, La Asociación Americana De Estadística 74: 105-121.

Parzen, E. 1979b. Una densidad-cuantil función de la perspectiva en la solidez de la estimación. En Launer, R. L. y G. N. Wilkinson (Eds) Solidez en las estadísticas. Nueva York: Academic Press, 237-258.

Parzen, E. 1982. Modelado de datos utilizando los cuantiles y de la densidad de la cuantil funciones. En Tiago de Oliveira, J. y Epstein, B. (Eds) Algunos avances recientes en las estadísticas. London: Academic Press, 23-52.

Tukey, J. W. Análisis Exploratorio De Datos. Reading, MA: Addison-Wesley.

12voto

Sean Hanley Puntos 2428

@NickCox ha presentado una buena manera de visualizar los datos. Yo lo tome usted quiere encontrar una regla para decidir cuándo se debe clasificar un valor como condition1 vs condition2.

En una versión anterior de su pregunta, usted se preguntó si debería llamar a cualquier valor mayor que la mediana de condition1 como miembro de condition2. Esto no es una buena regla para utilizar. Tenga en cuenta que, por definición, el 50% de una distribución está por encima de la mediana. Por lo tanto, que necesariamente va a clasificar erróneamente a 50% de los verdaderos condition1 miembros. Basada en los datos, deduzco que también clasificar erróneamente a un 18% de su verdadera condition2 miembros.

Una manera de pensar a través del valor de una regla como la tuya es la de formar una matriz de confusión. En R, se puede utilizar ?confusionMarix en el símbolo de intercalación paquete. Aquí es un ejemplo del uso de sus datos y su sugirió regla:

library(caret)

dat  = stack(list(cond1=Cond.1, cond2=Cond.2))
pred = ifelse(dat$values>median(Cond.1), "cond2", "cond1")
confusionMatrix(pred, dat$ind) 
# Confusion Matrix and Statistics
# 
#           Reference
# Prediction cond1 cond2
#      cond1    20     7
#      cond2    19    32
# 
#                Accuracy : 0.6667          
# ...       
#                                           
#             Sensitivity : 0.5128          
#             Specificity : 0.8205          
#          Pos Pred Value : 0.7407          
#          Neg Pred Value : 0.6275          
#              Prevalence : 0.5000          
#          Detection Rate : 0.2564          
#    Detection Prevalence : 0.3462          
#       Balanced Accuracy : 0.6667          

Apuesto a que podemos hacerlo mejor.

Un enfoque natural es el uso de un CARRO (árbol de decisión) del modelo, la cual, cuando sólo hay una variable) simplemente se encuentra el óptimo split. En R, se puede hacer con ?ctree de la parte del paquete.

library(party)

cart.model = ctree(ind~values, dat)
windows()
  plot(cart.model)

enter image description here

Se puede ver que el modelo va a llamar a un valor "condition1" si es <=5.7, y "condition2" de lo contrario (nota de que la mediana de condition1 3.9). Aquí está la matriz de confusión:

confusionMatrix(predict(cart.model), dat$ind)
# Confusion Matrix and Statistics
# 
#           Reference
# Prediction cond1 cond2
#      cond1    39    15
#      cond2     0    24
#     
#                Accuracy : 0.8077          
# ...       
#                                           
#             Sensitivity : 1.0000          
#             Specificity : 0.6154          
#          Pos Pred Value : 0.7222          
#          Neg Pred Value : 1.0000          
#              Prevalence : 0.5000          
#          Detection Rate : 0.5000          
#    Detection Prevalence : 0.6923          
#       Balanced Accuracy : 0.8077          

Esta regla da una precisión de 0.8077, en lugar de 0.6667. De la parcela y la matriz de confusión, se puede ver que la verdadera condition1 miembros nunca se ha clasificado erróneamente como condition2. Esto se cae de la optimización de la exactitud de la regla y la suposición de que ambos tipos de errores de clasificación son igual de mal; se puede ajustar el ajuste del modelo de proceso si es que no es cierto.


Por otro lado, sería negligente si no me señalar que un clasificador necesariamente tira a la basura una gran cantidad de información y es típicamente subóptima (a menos que usted realmente necesita clasificaciones). Puede que desee un modelo de los datos, de modo que usted puede obtener la probabilidad de un valor que será un miembro de condition2. La regresión logística es la elección natural aquí. Tenga en cuenta que, debido a su condition2 es mucho más dispersos que condition1, he añadido un cuadrado plazo para permitir un ajuste curvilíneo:

lr.model = glm(ind~values+I(values^2), dat, family="binomial")
lr.preds = predict(lr.model, type="response")
ord      = order(dat$values)
dat      = dat[ord,]
lr.preds = lr.preds[ord]

windows()
  with(dat, plot(values, ifelse(ind=="cond2",1,0), 
                 ylab="predicted probability of condition2"))
  lines(dat$values, lr.preds)

enter image description here

Esto es claramente lo que le da más y mejor información. No se recomienda que usted desecha la información extra en tu predicción de probabilidades y dividir en las clasificaciones, pero por el bien de la comparación con las normas anteriores, yo te puedo mostrar la matriz de confusión que viene de hacerlo con el modelo de regresión logística:

lr.class = ifelse(lr.preds<.5, "cond1", "cond2")
confusionMatrix(lr.class, dat$ind)
# Confusion Matrix and Statistics
# 
#           Reference
# Prediction cond1 cond2
#     cond1    36     8
#     cond2     3    31
# 
#                Accuracy : 0.859           
# ...
# 
#             Sensitivity : 0.9231          
#             Specificity : 0.7949          
#          Pos Pred Value : 0.8182          
#          Neg Pred Value : 0.9118          
#              Prevalence : 0.5000          
#          Detection Rate : 0.4615          
#    Detection Prevalence : 0.5641          
#       Balanced Accuracy : 0.8590          

La precisión es de ahora 0.859, en lugar de 0.8077.

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