Tracciare le barre dellintervallo di confidenza dalle statistiche di riepilogo
Su Febbraio 14, 2021 da adminUn po come un diagramma a scatola. Non intendo necessariamente lintervallo di confidenza superiore standard, lintervallo di confidenza inferiore, la media e i box plot che mostrano lintervallo di dati, ma intendo come un box plot con solo i tre dati: lintervallo di confidenza del 95% e la media .
Questo è uno screenshot di un articolo di giornale che aveva esattamente quello che desideravo:
Vorrei anche sapere come utilizzerei il software menzionato dal rispondente per creare una trama di questo tipo.
Commenti
- Ciò che chiami ” intervallo di confidenza superiore standard, intervallo di confidenza inferiore, media e box plot che mostrano lintervallo di dati ” non sono affatto box plot standard. Il box plot standard mostra mediana, quartili, minimo e massimo e spesso altri dettagli.
- @Nick Right: ma come sono tali grafici effettivamente chiamati? (Non ‘ non sono sicuro.)
- Questo tipo di trama è standard (‘ non è una scatola plot, però) e può essere prodotto da tutti i principali pacchetti statistici: Stata, SAS, R , MATLAB. Immagino che potresti farlo anche con Excel.
- @COOLSerdash fantastico! Potresti scrivere una risposta per MATLAB dato che ho già MATLAB?
- I ‘ chiamo questi grafici dellintervallo di confidenza, ma non tutti i grafici hanno davvero bisogno di un nome distinto . Ogni trama merita una didascalia di testo, tuttavia …
Risposta
In MATLAB, potresti volerlo prova la funzione errorbar : http://www.mathworks.de/de/help/matlab/ref/errorbar.html
In alternativa, può farlo in modo stupido e manuale. Ad esempio, data una matrice di punti dati “a”, puoi calcolare le tue medie utilizzando la funzione m = mean (a), calcolare i tuoi CI (a seconda dellIC di cui hai bisogno) e tracciare i risultati a mano.
Dimostrazione se conosci già la media e lIC, supponendo che gli IC siano in una matrice CI (prima e seconda colonna) e le medie siano in una matrice 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
Dimostrazione nel caso in cui conosci misurazioni singole, per un esperimento a misure ripetute, 3+ condizioni, una condizione per colonna, un soggetto per riga nella matrice a, nessun campione mancante, IC al 95% come da MATLAB “s 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
Commenti
- Leggi la mia ultima modifica, ‘ mi dispiace ma alcune persone che mi stanno infastidendo a morte, hanno eliminato il fatto che conosco solo il 95% CI e significa nessun dato aggiuntivo.
- @BrentonHorne il collegamento alla funzione errorbar non ha aiutato? Sembra essere esattamente quello che vuoi.
- Come ha detto Peter, usa errorbar () quindi. Oppure usa lo script che ho scritto, ma ignora la prima riga con ttest e inserisci semplicemente significare e CI direttamente. Lo ‘ lo modificherò in immagino.
- @BrentonHorne Per essere onesti, non hai mai discusso ampiamente il punto e nemmeno lo hai menzionato nel corpo del domanda. Era implicito nel titolo, ma questo titolo menzionava anche erroneamente box plot, che è il problema che la modifica ha cercato di risolvere. ‘ è un peccato che la parola “solo” sia scomparsa durante il processo, ma nessuno ha modificato di proposito gran parte della tua domanda. Inoltre, la risposta conteneva una soluzione e il resto del testo potrebbe essere interessante per altri lettori.
- Ho eseguito il codice è andato bene, il problema è che mi piacerebbe se ci fosse qualche mezzo per che potrei unire al CI superiore e inferiore con una linea come nello screenshot della mia domanda.
Risposta
Guarda se questo ti aiuta. Soluzione R:
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)
Commenti
- e come faccio a eseguire un codice del genere? Sono completamente nuovo su R, quindi ‘ dovrai spiegarmelo perché non ho idea.
- Posso aiutarti a provare, ma prima devi seguire due passaggi: i) installare R Studio sul tuo PC, ii) fornire un esempio riproducibile: stackoverflow.com/questions/5963269/…
- @AndreSilva, penso che tu abbia fatto il possibile. Ottimo supporto e mentoring!
- Questo è ciò che ho ottenuto eseguendo il tuo codice i.stack.imgur.com/yrZaJ.png
- @BrentonHome. Strano. Ho appena provato e ha funzionato. Le barre ” di errore ” non vengono visualizzate. Hai installato il pacchetto
plotrix
? Ho aggiunto una riga di comando del programma nel codice che installa il pacchetto plotrix. Per favore, riprova e faccelo sapere.
Risposta
Questo tipo di grafico in R utilizza ggplot2, anche se potresti dover armeggiare con il dimensione del carattere dellasse:
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")
Risposta
In Stata usa serrbar
o ciplot
(SSC) o eclplot
(Stata Journal, SSC).
Risposta
Supponendo che tu abbia accesso ai dati originali puoi farlo in R con la funzione lineplot.CI nello sciplot libreria
Esempio con il set di dati mtcars:
lineplot.CI(x.factor=gear, response=mpg, group=vs, data=mtcars)
Nota che lineplot.CI per impostazione predefinita traccia le barre SE (può essere modificato definendo un nuovo funzione con largomento ci.fun per tracciare intervalli CI al 95%)
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)))
Risposta
Questa operazione può essere eseguita in R con points()
(o plot(..., type="p")
) e segments()
. Potrebbero esserci anche funzioni R progettate per creare gli elementi della configurazione per te, ma potrebbero richiedere i dati originali. I pannelli multipli nella stessa figura creati con par(mfrow=c(4,1))
. Se non lo fai ” Non conosco nessuna R, sarebbe difficile da fare facilmente (come in, dovresti imparare un po di più R o chiedere a qualcuno di aiutarti con il tuo specifico set di dati).
Risposta
GraphPad Prism può facilmente creare questo tipo di grafico, tracciando le barre di errore dai valori di errore immessi. Crea una tabella raggruppata formattata per linserimento di media, – errore e + errore.
Commenti
- È possibile ottenerne una copia gratuita che non sia ‘ solo un Versione di prova di 30 giorni?
- @BrentonHorne: No. Non è un software libero.
Lascia un commento