Zeichnen von Konfidenzintervallbalken aus zusammenfassenden Statistiken
On Februar 14, 2021 by adminEin bisschen wie ein Box-Plot. Ich meine nicht unbedingt das Standard-obere Konfidenzintervall, das untere Konfidenzintervall, den Mittelwert und die Datenbereichs-Box-Plots, aber ich meine wie ein Box-Plot mit nur den drei Daten: das 95% -Konfidenzintervall und der Mittelwert .
Dies ist ein Screenshot eines Zeitschriftenartikels, der genau das hatte, was ich wollte:
Ich möchte auch wissen, wie ich die vom Antwortenden erwähnte Software verwenden würde, um ein solches Diagramm zu erstellen.
Kommentare
- Was Sie “ nennen, ist das Standard-Box-Diagramm für das obere Konfidenzintervall, das untere Konfidenzintervall, den Mittelwert und den Datenbereich “ sind überhaupt keine Standard-Box-Plots. Das Standard-Box-Diagramm zeigt Median, Quartile, Minimum und Maximum sowie häufig andere Details.
- @Nick Right: Aber wie werden solche Grafiken tatsächlich genannt? (Ich ‚ bin mir nicht sicher.)
- Diese Art von Plot ist Standard (‚ ist keine Box Plot) und kann von allen wichtigen Statistikpaketen erstellt werden: Stata, SAS, R , MATLAB. Ich denke, Sie könnten es auch mit Excel machen.
- @COOLSerdash großartig! Könnten Sie eine Antwort für MATLAB schreiben, da ich MATLAB bereits habe?
- Ich ‚ würde diese Konfidenzintervalldiagramme aufrufen, aber nicht jedes Diagramm benötigt wirklich einen eigenen Namen . Jeder Plot verdient jedoch eine Textbeschriftung ….
Antwort
In MATLAB möchten Sie vielleicht Probieren Sie die Funktion errorbar aus: http://www.mathworks.de/de/help/matlab/ref/errorbar.html
Alternativ können Sie kann es auf dumme und manuelle Weise tun. Bei einer Matrix von Datenpunkten „a“ können Sie beispielsweise Ihre Mittelwerte mit der Funktion m = Mittelwert (a) berechnen, Ihre CIs berechnen (je nachdem, welches CI Sie benötigen) und die Ergebnisse von Hand zeichnen. P. >
Demonstration, wenn Sie den Mittelwert und den CI bereits kennen, vorausgesetzt, CIs befinden sich in einer Matrix CI (erste und zweite Spalte) und Mittelwerte befinden sich in einer Matrix a :
plot(1:length(CI),a,"o","markersize", 10) % plot the mean hold on; plot(1:length(CI),CI(1,:),"v","markersize", 6) % plot lower CI boundary hold on; plot(1:length(CI),CI(2,:),"^","markersize", 6) % plot upper CI boundary hold on; for I = 1:length(CI) % connect upper and lower bound with a line line([I I],[CI(1,I) CI(2,I)]) hold on; end; axis([0 length(CI)+1 min(CI(1,:))*0.75 max(CI(2,:))*1.25]) % scale axis
Demonstration in dem Fall, in dem Sie Einzelmessungen kennen, für ein Experiment mit wiederholten Messungen 3+ Bedingungen, eine Bedingung pro Spalte, ein Subjekt pro Zeile in der Matrix a, keine fehlenden Stichproben, 95% CI gemäß MATLABs ttest () :
[H,P,CI] = ttest(a); % calculate 95% CIs for every column in matrix a % CIs are now in the matrix CI! plot(1:length(CI),[mean(a)],"o","markersize", 10) % plot the mean hold on; plot(1:length(CI),CI(1,:),"v","markersize", 6) % plot lower CI boundary hold on; plot(1:length(CI),CI(2,:),"^","markersize", 6) % plot upper CI boundary hold on; for I = 1:length(CI) % connect upper and lower bound with a line line([I I],[CI(1,I) CI(2,I)]) hold on; end; axis([0 length(CI)+1 min(CI(1,:))*0.75 max(CI(2,:))*1.25]) % scale axis
Kommentare
- Lies meine letzte Bearbeitung, es tut mir ‚ leid, aber einige Leute, die mich verdammt nerven, haben die Tatsache herausgeschnitten, dass ich nur die kenne 95% CI und bedeuten keine zusätzlichen Daten.
- @BrentonHorne hat der Link zur Fehlerbalkenfunktion nicht geholfen? Es scheint genau das zu sein, was Sie wollen.
- Wie Peter sagte, benutze dann errorbar () . Oder verwenden Sie das Skript, das ich geschrieben habe, aber ignorieren Sie die erste Zeile mit dem ttest und geben Sie es einfach mean und CI direkt ein. Ich ‚ werde es in bearbeiten, denke ich.
- @BrentonHorne Um fair zu sein, haben Sie den Punkt nie ausführlich besprochen oder ihn überhaupt im Textkörper des. Erwähnt Frage. Es wurde durch den Titel impliziert, aber dieser Titel erwähnte auch fälschlicherweise Box-Plots, was das Problem ist, das die Bearbeitung zu beheben versuchte. ‚ ist bedauerlich, dass das Wort „nur“ dabei verschwunden ist, aber niemand hat es absichtlich einen großen Teil Ihrer Frage herausgearbeitet. Außerdem enthielt die Antwort eine Lösung und der Rest des Textes könnte für andere Leser interessant sein.
- Ich habe den Code ausgeführt, der gut lief. Das Problem ist, dass ich ihn gerne hätte, wenn es Mittel gäbe Ich könnte das obere und das untere CI mit einer Linie wie im Screenshot in meiner Frage verbinden.
Antwort
Schauen Sie, ob dies Ihnen hilft. R-Lösung:
par(mfrow=c(2,1)) # to stack the charts on column #Dataset 1 upperlimit = c(10,12,8,14) lowerlimit = c(5,9,4,7) mean = c(8,10,6,12) df = data.frame(cbind(upperlimit,lowerlimit,mean)) plot(df$mean, ylim = c(0,30), xlim = c(1,4)) install.packages("plotrix") require(plotrix) plotCI(df$mean,y=NULL, uiw=df$upperlimit-df$mean, liw=df$mean-df$lowerlimit, err="y", pch=20, slty=3, scol = "black", add=TRUE) #Dataset 2 upperlimit_2 = upperlimit*1.5 lowerlimit_2 = lowerlimit*0.8 mean_2 = upperlimit_2-lowerlimit_2 df_2 = data.frame(cbind(upperlimit_2,lowerlimit_2,mean_2)) plot(df$mean_2, ylim = c(0,30), xlim = c(1,4)) plotCI(df_2$mean_2,y=NULL, uiw=df_2$upperlimit_2-df_2$mean_2, liw=df_2$mean_2- df_2$lowerlimit_2, err="y", pch=20, slty=3, scol = "black", add=TRUE) rm(upperlimit,lowerlimit,mean,df,upperlimit_2,lowerlimit_2,mean_2,df_2) #remove the objects stored from workspace par(mfrow=c(1,1)) # go back to default (one graph at a time)
Kommentare
- und wie führe ich einen solchen Code aus? Ich bin völlig neu in R, also müssen Sie mich durch ‚ führen, weil ich ahnungslos bin.
- Ich kann Ihnen helfen, einen Schuss zu geben, aber erstens Sie müssen zwei Schritte ausführen: i) Installieren Sie R Studio auf Ihrem PC, ii) Geben Sie ein reproduzierbares Beispiel an: stackoverflow.com/questions/5963269/…
- @AndreSilva, ich denke, Sie sind dort die Extrameile gegangen. Großartige Unterstützung und Betreuung!
- Dies ist, was ich für die Ausführung Ihres Codes bekommen habe i.stack.imgur.com/yrZaJ.png
- @BrentonHome. Seltsam. Ich habe gerade getestet und es hat funktioniert. Die “ Fehler “ Balken werden nicht angezeigt. Haben Sie das Paket
plotrix
installiert? Ich habe dem Code eine Programmbefehlszeile hinzugefügt, die das Plotrix-Paket installiert. Bitte versuchen Sie es erneut und lassen Sie es wissen.
Antwort
Diese Art von Plot in R mit ggplot2, obwohl Sie möglicherweise ein wenig mit dem herumspielen müssen Achsenschriftgröße:
library(ggplot2) data.estimates = data.frame( var = c("1", "2", "3", "4", "5", "6", "7", "8", "9"), par = c(1.12210,0.18489,1.22011,1.027446235,0.43521,0.53464,1.93316,-0.43806,-0.12029), se = c(0.42569,0.32162,0.58351,0.771608551,0.24803,0.65372,0.92717,0.45939,0.51558)) data.estimates$idr <- exp(data.estimates$par) data.estimates$upper <- exp(data.estimates$par + (1.96*data.estimates$se)) data.estimates$lower <- exp(data.estimates$par - (1.96*data.estimates$se)) p2 <- ggplot(data.estimates, aes(var,idr, size=10)) + theme_bw(base_size=10) p2 + geom_point() +geom_errorbar(aes(x = var, ymin = lower, ymax = upper, size=2), width = 0.2) + scale_y_log10(limits=c(0.1, 50), breaks=c(0.1, 0.5, 1, 5, 10, 25, 50)) + xlab("Site") + ylab("RR")
Antwort
Verwenden Sie in Stata serrbar
oder ciplot
(SSC) oder eclplot
(Stata Journal, SSC).
Antwort
Angenommen, Sie haben Zugriff auf die Originaldaten, können Sie dies in R mit der Funktion lineplot.CI im Sciplot tun Bibliothek
Beispiel mit einem mtcars-Dataset:
lineplot.CI(x.factor=gear, response=mpg, group=vs, data=mtcars)
Beachten Sie, dass lineplot.CI standardmäßig SE-Balken zeichnet (es kann geändert werden, um ein neues zu definieren Funktion mit dem Argument ci.fun, um 95% CI-Intervalle zu zeichnen)
lineplot.CI(x.factor=gear, response=mpg, group=vs, data=mtcars, ci.fun=function(x) c(mean(x)-1.96*se(x), mean(x)+1.96*se(x)))
Antwort
Dies kann in R mit points()
(oder plot(..., type="p")
) und segments()
erfolgen . Möglicherweise gibt es auch R-Funktionen, mit denen die CIs für Sie erstellt werden können, für die jedoch möglicherweise die Originaldaten erforderlich sind. Die mehreren Bedienfelder in derselben Abbildung wurden mit par(mfrow=c(4,1))
erstellt. Wenn Sie kein R kennen, ist dies schwer zu bewerkstelligen (wie in, Sie müssten etwas mehr R lernen oder jemanden bitten, mit Ihrem spezifischen Datensatz zu helfen).
Antwort
GraphPad Prism kann diese Art von Diagramm problemlos erstellen und Fehlerbalken aus den von Ihnen eingegebenen Fehlerwerten zeichnen. Erstellen Sie eine gruppierte Tabelle, die für die Eingabe von Mittelwert, – Fehler und + Fehler formatiert ist.
Kommentare
- Ist es möglich, eine kostenlose Kopie davon zu erhalten, die nicht ‚ nicht nur a ist 30-Tage-Testversion?
- @BrentonHorne: Nein. Es handelt sich nicht um freie Software.
Schreibe einen Kommentar