Plotte konfidensintervallfelt fra oppsummeringsstatistikk
On februar 14, 2021 by adminLitt som en boksplott. Jeg mener ikke nødvendigvis standard øvre konfidensintervall, lavere konfidensintervall, middelverdi og datoperiode som viser boksplott, men jeg mener som en boksplott med bare de tre dataene: 95% konfidensintervall og middel .
Dette er et skjermbilde av en journalartikkel som hadde akkurat det jeg vil ha:
Jeg vil også vite hvordan jeg vil bruke programvaren svareren nevner for å lage et slikt plot.
Kommentarer
- Det du kaller » standard øvre konfidensintervall, lavere konfidensintervall, gjennomsnitt og datoperiode som viser feltplott » er ikke standard bokseplott i det hele tatt. Standard ruteplott viser median, kvartiler, minimum og maksimum og ofte andre detaljer.
- @Nick Right: men hva heter slik grafikk egentlig? (Jeg ‘ er ikke sikker.)
- Denne typen plot er standard (det ‘ er ikke en rute plott, skjønt) og kan produseres av alle større statistiske pakker: Stata, SAS, R , MATLAB. Jeg antar at du også kan gjøre det med Excel.
- @COOLSerdash flott! Kan du skrive opp et svar for MATLAB siden jeg allerede har MATLAB?
- Jeg ‘ Jeg kaller disse konfidensintervall-plottene, men ikke alle plottene trenger virkelig et tydelig navn . Hvert plott fortjener en teksttekst, men ….
Svar
I MATLAB vil du kanskje prøv feilfelt -funksjonen: http://www.mathworks.de/de/help/matlab/ref/errorbar.html
Alternativt kan du kan gjøre det stumt og manuelt. For eksempel, gitt en matrise med datapunkter «a», kan du beregne middelverdiene dine ved hjelp av funksjonen m = gjennomsnitt (a), beregne CI-ene dine (avhengig av hvilken CI du trenger), og plotte resultatene for hånd.
Demonstrasjon hvis du allerede vet gjennomsnittet og CI, forutsatt at CI er i en matrise CI (første og andre kolonne) og betyr er i en matrise 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
Demonstrasjon i tilfelle der du kjenner individuelle målinger, for et eksperiment gjentatte mål, 3+ betingelser, en betingelse per kolonne, ett emne per linje i matrise a, ingen manglende prøver, 95% CI som av 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
Kommentarer
- Les min siste redigering, jeg ‘ beklager, men noen mennesker som irriterer helvete ut av meg, redigerte det faktum at jeg bare vet 95% CI og betyr ingen tilleggsdata.
- @BrentonHorne hjalp ikke lenken til feilfeltfunksjonen? Det ser ut til å være akkurat det du vil ha.
- Som Peter sa, bruk errorbar () da. Eller bruk skriptet jeg skrev, men ignorer den første linjen med ttesten og bare mat det middel og CI direkte. Jeg ‘ Jeg redigerer det, antar jeg.
- @BrentonHorne For å være rettferdig har du aldri diskutert poenget grundig eller til og med nevnt det i det hele tatt spørsmål. Det ble antydet av tittelen, men denne tittelen nevnte også feilaktig boksplott, som er problemet redigeringen prøvde å fikse. Det ‘ er uheldig at ordet «bare» forsvant i prosessen, men ingen redigerte det målrettet en stor del av spørsmålet ditt. Dessuten inneholdt svaret en løsning, og resten av teksten kan være interessant for andre lesere.
- Jeg kjørte koden, det gikk bra, problemet er at jeg vil gjerne ha det hvis det var noen midler ved som jeg kunne bli med i øvre CI og nedre CI med en linje som i skjermbildet i spørsmålet mitt.
Svar
Se om dette hjelper deg. R-løsning:
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)
Kommentarer
- og hvordan kjører jeg en slik kode? Jeg er helt ny på R, så du ‘ må gå meg gjennom den fordi jeg er uklar.
- Jeg kan hjelpe deg med å gi et skudd, men først du må følge to trinn: i) installere R Studio på din pc, ii) gi et reproduserbart eksempel: stackoverflow.com/questions/5963269/…
- @AndreSilva, jeg tror du gikk den ekstra milen der. God støtte og veiledning!
- Dette fikk jeg for å kjøre koden din i.stack.imgur.com/yrZaJ.png
- @BrentonHome. Rar. Jeg testet bare, og det fungerte. » feil » stolper vises ikke. Installerte du
plotrix
-pakken? Jeg la til en programkommandolinje i koden som installerer plotrix-pakken. Vennligst prøv igjen og gi beskjed.
Svar
Denne typen plot i R bruker ggplot2, selv om du kanskje trenger å fikle med aksestørrelse på aksen:
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")
Svar
I Stata bruk serrbar
eller ciplot
(SSC) eller eclplot
(Stata Journal, SSC).
Svar
Forutsatt at du har tilgang til originaldataene, kan du gjøre dette i R med lineplot.CI-funksjonen i sciplot bibliotek
Eksempel med mtcars-datasett:
lineplot.CI(x.factor=gear, response=mpg, group=vs, data=mtcars)
Merk at lineplot.CI som standard plotter SE-søyler (det kan endres og definere en ny funksjon med argumentet ci.fun for å plotte 95% CI-intervaller)
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)))
Svar
Dette kan gjøres i R med points()
(eller plot(..., type="p")
) og segments()
. Det kan også være R-funksjoner designet for å lage CI-er for deg, men de kan kreve originale data. Flere paneler i samme figur opprettet med par(mfrow=c(4,1))
. Hvis du ikke gjør det » ikke kjenner noen R, vil dette være vanskelig å gjøre enkelt (som i, må du lære litt mer R eller få noen til å hjelpe deg med ditt spesifikke datasett).
Svar
GraphPad Prism kan enkelt lage denne typen graf, og tegne feilfelt fra feilverdiene du angir. Lag en gruppert tabell formatert for entery av gjennomsnitt, – feil og + feil.
Kommentarer
- Er det mulig å få en gratis kopi av den som ikke er ‘ t bare en 30 dagers prøveversjon?
- @BrentonHorne: Nei. Det er ikke gratis programvare.
Legg igjen en kommentar