Wie kann man Boxplots verwenden, um den Punkt zu finden, an dem Werte eher von unterschiedlichen Bedingungen stammen?

7

Ich habe einige Daten mithilfe von Boxplots aufgezeichnet. Ich vergleiche die Werte von Bedingung 1 (links) und Bedingung 2 (rechts). Mein Ziel ist es, einen Punkt zu finden, an dem wir eine Entscheidung treffen, bei der sich der Wert von Punkt Bedingung 1 zu Bedingung 2 ändert.

Ist diese Schlussfolgerung sinnvoll, wenn ich sage, wenn ich das Experiment erneut durchführe und einen Wert als den Median von Bedingung 1 erhalte, ist es wahrscheinlich, dass der Wert von Bedingung 2 ist?

Oder gibt es eine andere Möglichkeit, diese Daten darzustellen, um zu dem Schluss zu kommen, dass ich, wenn ich einen zufälligen Wert erhalte, sagen kann, ob er von Bedingung 1 oder Bedingung 2 stammt?

Daten als Code für die R-Eingabe dargestellt:

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)

Jede Bedingung hat 39 Werte.

Boxplot der Daten

Umar
quelle

Antworten:

12

@NickCox hat eine gute Möglichkeit zur Visualisierung Ihrer Daten vorgestellt. Ich nehme an, Sie möchten eine Regel finden, mit der Sie entscheiden können, wann ein Wert als Bedingung1 oder Bedingung2 klassifiziert werden soll.

In einer früheren Version Ihrer Frage haben Sie sich gefragt, ob Sie als Mitglied von Bedingung2 einen Wert nennen sollten, der größer als der Median von Bedingung1 ist. Dies ist keine gute Regel. Beachten Sie, dass per Definition einer Verteilung über dem Median liegen. Daher werden Sie notwendigerweise der Mitglieder von true condition1 falsch klassifizieren . Ich gehe davon aus, dass Sie aufgrund Ihrer Daten auch Ihrer Mitglieder von true condition2 falsch klassifizieren werden . 50%.50%.18%.

Eine Möglichkeit, den Wert einer Regel wie Ihrer zu überdenken, besteht darin, eine Verwirrungsmatrix zu bilden . In R können Sie ? ConfusionMatrix im Caret-Paket verwenden . Hier ist ein Beispiel mit Ihren Daten und Ihrer vorgeschlagenen Regel:

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          

Ich wette, wir können es besser machen.

Ein natürlicher Ansatz besteht darin, ein CART- Modell ( Entscheidungsbaummodell ) zu verwenden, das (wenn nur eine Variable vorhanden ist) einfach die optimale Aufteilung findet. In R können Sie dies mit ? Ctree aus dem Party-Paket tun .

library(party)

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

CART-Plot (Entscheidungsbaum)

Sie können sehen, dass das Modell einen Wert "Bedingung1" , wenn es , und andernfalls "Bedingung2" (beachten Sie, dass der Median von Bedingung1 ). Hier ist die Verwirrungsmatrix: 5.73.9

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          

Diese Regel ergibt eine Genauigkeit von anstelle von . Aus dem Diagramm und der Verwirrungsmatrix können Sie ersehen, dass echte Mitglieder von Bedingung1 niemals als Bedingung2 falsch klassifiziert werden. Dies ergibt sich aus der Optimierung der Genauigkeit der Regel und der Annahme, dass beide Arten der Fehlklassifizierung gleich schlecht sind. Sie können den Modellanpassungsprozess optimieren, wenn dies nicht der Fall ist. 0,80770,6667


Andererseits wäre ich mir nicht sicher, wenn ich nicht darauf hinweisen würde, dass ein Klassifikator notwendigerweise viele Informationen wegwirft und normalerweise nicht optimal ist (es sei denn, Sie benötigen wirklich Klassifikationen). Möglicherweise möchten Sie die Daten so modellieren, dass Sie die Wahrscheinlichkeit erhalten, dass ein Wert Mitglied von Bedingung2 ist. Logistische Regression ist hier die natürliche Wahl. Beachten Sie, dass ich einen quadratischen Term hinzugefügt habe, um eine krummlinige Anpassung zu ermöglichen, da Ihre Bedingung2 viel weiter verteilt ist als Bedingung1:

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)

vorhergesagte Wahrscheinlichkeit der Bedingung 2

Dies gibt Ihnen eindeutig mehr und bessere Informationen. Es wird nicht empfohlen, die zusätzlichen Informationen in Ihren vorhergesagten Wahrscheinlichkeiten wegzuwerfen und sie in Klassifikationen zu dichotomisieren. Zum Vergleich mit den oben genannten Regeln kann ich Ihnen jedoch die Verwirrungsmatrix zeigen, die sich aus Ihrem logistischen Regressionsmodell ergibt:

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          

Die Genauigkeit beträgt jetzt anstelle von . 0,8590,8077

gung - Monica wieder einsetzen
quelle
@gung Das ist eine großartige Antwort, ich verstehe den letzten Wahrscheinlichkeitsgraphen einfach nicht, dh "vorhergesagte Wahrscheinlichkeit von Bedingung2". Können Sie mir bitte davon erzählen
Umar
@Umar, es ist nur eine grafische Darstellung Ihrer Daten und der Vorhersagen aus dem logistischen Regressionsmodell. Wenn Sie mit LR nicht vertraut sind, wird die vorhergesagte Wahrscheinlichkeit ermittelt, dass die Antwort Bedingung2 für jeden möglichen Eingabewert ist. Weitere Informationen zu LR finden Sie in den unter logistic gekennzeichneten Threads . Einige meiner Antworten, die Ihnen helfen könnten, wären 1 , 2 und 3 .
Gung - Reinstate Monica
Kommentare sind nicht für eine ausführliche Diskussion gedacht. Dieses Gespräch wurde in den Chat verschoben .
Gung - Reinstate Monica
11

Geben Sie hier die Bildbeschreibung ein

Hier ist eine von vielen Möglichkeiten. Bereits 1979 schlug Emanuel Parzen vor, das Quantil-Diagramm und das Box-Diagramm zu hybridisieren. Einige Referenzen sind unten angegeben. Die Box des Boxplots zeigt eindeutig Median und Quartile, die nur Schlüsselquantile sind. Das Anzeigen aller Daten, nämlich aller Quantile oder Ordnungsstatistiken, ist durchaus möglich, zumindest mit einer kleinen Anzahl von Gruppen (wie in diesem Thread) und einer kleinen oder moderaten Anzahl von Beobachtungen (wie auch in diesem Thread). Tatsächlich erstreckt sich das Design recht gut auf größere Stichproben. Ausreißer, Granularität, Bindungen, Gruppierungen und Lücken (je nachdem, wie Sie über solche Merkmale denken möchten) sind immer offensichtlich, ebenso wie allgemeine Ebene, Verbreitung und Form. Der Graph unterliegt keinen Artefakten oder Nebenwirkungen willkürlicher Faustregeln, wie z. B. was innerhalb von 1,5 IQR des näheren Quartils liegt oder nicht. Umgekehrt,

Es ist vernünftig darauf hinzuweisen, dass Quantildiagramme nur kumulative Verteilungsdiagramme mit umgekehrten Achsen sind, obwohl sie häufiger als Punktmuster als als verbundene Linien dargestellt werden.

Cox (2012) berichtete über eine Stata-Implementierung und seine stripplot(Stata-Benutzer können von SSC herunterladen) bietet eine andere an. Die Implementierung sollte in jeder wichtigen statistischen oder mathematischen Software trivial sein.

Ich denke, diese Art der Anzeige bietet viel mehr Details als ein herkömmliches Box-Plot, das hier den verfügbaren Platz nicht vollständig ausnutzt. Ein herkömmliches Box-Diagramm kann für 10 bis 100 Gruppen oder Variablen hilfreich sein, bei denen eine erhebliche Reduzierung der Daten erforderlich sein kann, aber möglicherweise eine interessante Feinstruktur für den üblichen Fall mit wenigen Gruppen oder wenigen Variablen ergibt.

Ein weiterer wichtiger Vorteil dieses Diagramms besteht darin, dass es die elementare, aber grundlegende Tatsache widerspiegelt, dass sich genau die Hälfte der Werte innerhalb der Box befindet, also auch die Hälfte der Werte außerhalb der Box (und häufig die interessanteste oder wichtigere Hälfte). Ich habe sogar erfahrene statistische Personen gesehen, die durch den starken Kontrast zwischen Fat Box und dünnen Whiskern in die Irre geführt wurden. Das klassische Beispiel dafür ist eine U-förmige Verteilung oder eine Verteilung mit zwei großen Klumpen von ungefähr gleicher Größe. Die Schachtel ist dann lang und fett und die Schnurrhaare kurz und dünn. Menschen vermissen oft die Tatsache, dass solche Schnurrhaare die höchsten Dichten verstecken. Tukey (1977) gab ein Beispiel dafür mit Rayleighs Daten.

In diesem Fall und in vielen anderen Fällen wird eine logarithmische Skala verwendet. Im Prinzip ist das Quantil-Box-Diagramm leicht mit jeder monotonen Transformation kompatibel, da die Transformation der Quantile mit den Quantilen der transformierten Werte identisch ist. (Es gibt einige Kleingedruckte, die dies qualifizieren, weil Median und Quartile durch Mittelung benachbarter Ordnungsstatistiken erzeugt werden können, die normalerweise nicht beißen.)

Ich biete hiermit keinen grafischen Ersatz für einen Signifikanztest an. Dies ist ein Erkundungsgerät.

Cox, NJ 2012. Achsenpraxis oder was wohin in einem Diagramm geht. Stata Journal 12 (3): 549 & ndash; 561. .pdf hier zugänglich

Parzen, E. 1979a. Nichtparametrische statistische Datenmodellierung. Journal, American Statistical Association 74: 105 & ndash; 121.

Parzen, E. 1979b. Eine Dichte-Quantil-Funktionsperspektive auf robuste Schätzung. In Launer, RL und GN Wilkinson (Hrsg.) Robustheit in der Statistik. New York: Academic Press, 237-258.

Parzen, E. 1982. Datenmodellierung unter Verwendung von Quantil- und Dichte-Quantil-Funktionen. In Tiago de Oliveira, J. und Epstein, B. (Hrsg.) Einige jüngste Fortschritte in der Statistik. London: Academic Press, 23-52.

Tukey, JW Exploratory Data Analysis. Reading, MA: Addison-Wesley.

Nick Cox
quelle
Können wir die von Ihnen erstellte Analyse (dh die Handlung) reproduzieren? (Können Sie den Code einschließen, wenn Sie in R oder einer ähnlichen Software gezeichnet haben)
Umar
Die Handlung wurde mit stripplotin Stata produziert. Ich weiß nicht, ob Sie der Meinung sind, dass "ähnlich wie" R. @Glen_b in seiner Antwort auf stats.stackexchange.com/questions/114744/…
Nick Cox