Tegning af konfidensintervalbjælker fra oversigtsstatistikker
On februar 14, 2021 by adminLidt som en boksplot. Jeg mener ikke nødvendigvis standard øvre konfidensinterval, lavere konfidensinterval, middelværdi og datainterval, der viser boksdiagrammer, men jeg mener som et boksdiagram med kun de tre stykker data: 95% konfidensintervallet og middelværdien .
Dette er et screenshot af en tidsskriftartikel, der havde nøjagtigt hvad jeg vil have:
Jeg vil også gerne vide, hvordan jeg vil bruge softwaren, som svareren nævner, til at skabe et sådant plot.
Kommentarer
- Hvad du kalder ” standard øvre konfidensinterval, lavere konfidensinterval, middelværdi og datainterval, der viser feltplotter ” er slet ikke standardkasser. Standardboksplottet viser median, kvartiler, minimum og maksimum og ofte andre detaljer.
- @Nick Right: men hvad hedder sådan grafik egentlig? (Jeg ‘ er ikke sikker.)
- Denne form for plot er standard (det ‘ er ikke en boks plot) og kan produceres af alle større statistiske pakker: Stata, SAS, R , MATLAB. Jeg gætter på, at du også kunne gøre det med Excel.
- @COOLSerdash fantastisk! Kunne du skrive et svar til MATLAB, da jeg allerede har MATLAB?
- Jeg ‘ kalder jeg disse konfidensintervaller, men ikke alle plot har virkelig brug for et særskilt navn . Hvert plot fortjener dog en teksttekst ….
Svar
I MATLAB vil du muligvis prøv fejlfelt -funktionen: http://www.mathworks.de/de/help/matlab/ref/errorbar.html
Alternativt kan du kan gøre det stumt og manuelt. For eksempel, givet en matrix af datapunkter “a”, kan du beregne dine midler ved hjælp af funktionen m = middelværdi (a), beregne dine CIer (afhængigt af hvilket CI du har brug for) og plotte resultaterne manuelt.
Demonstration, hvis du allerede kender middelværdien og CI, forudsat at CIer er i en matrix CI (første og anden kolonne) og middelværdierne er i en 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 i det tilfælde, hvor du kender individuelle målinger, for et gentaget mål eksperiment, 3+ betingelser, en betingelse pr. kolonne, et emne pr. linje i matrix a, ingen manglende prøver, 95% CI som af 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
- Læs min seneste redigering, jeg ‘ undskyld, men nogle mennesker, der irriterer helvede ud af mig, redigerede det faktum, at jeg kun kender 95% CI og betyder ingen yderligere data.
- @BrentonHorne hjalp linket til fejlfeltfunktionen ikke? Det ser ud til at være præcis, hvad du vil have.
- Som Peter sagde, brug derefter errorbar () . Eller brug det script, jeg skrev, men ignorér den første linje med ttest og bare fodre det middel og CI direkte. Jeg ‘ Jeg redigerer det, tror jeg.
- @BrentonHorne For at være retfærdig har du aldrig diskuteret pointen grundigt eller endda nævnt det overhovedet i kroppen af spørgsmål. Det blev antydet af titlen, men denne titel nævnte også fejlagtigt boksplots, hvilket er det problem, redigeringen forsøgte at rette. Det ‘ er uheldigt, at ordet “kun” forsvandt i processen, men ingen redigerede det med vilje en stor del af dit spørgsmål. Desuden indeholdt svaret en løsning, og resten af teksten kunne være interessant for andre læsere.
- Jeg kørte koden, det gik godt, problemet er, at jeg gerne vil have det, hvis der var nogle midler ved som jeg kunne slutte mig til det øvre CI og det nedre CI med en linje som i skærmbilledet i mit spørgsmål.
Svar
Se om dette hjælper dig. 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 kører jeg en sådan kode? Jeg er helt ny på R, så du ‘ bliver nødt til at gå mig igennem det, fordi jeg er uklart.
- Jeg kan hjælpe dig med at give et skud, men først du skal følge to trin: i) installere R Studio på din pc, ii) give et reproducerbart eksempel: stackoverflow.com/questions/5963269/…
- @AndreSilva, jeg tror, du gik den ekstra mil der. Stor support og vejledning!
- Dette er hvad jeg fik for at køre din kode i.stack.imgur.com/yrZaJ.png
- @BrentonHome. Mærkelig. Jeg testede lige, og det fungerede. ” fejl ” bjælker vises eller vises. Installerede du
plotrix
-pakken? Jeg tilføjede en programkommandolinje i koden, der installerer plotrix-pakken. Prøv igen, og lad det vide.
Svar
Denne type plot i R ved hjælp af ggplot2, selvom du måske bliver nødt til at fikle med aksestørrelse:
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 skal du bruge serrbar
eller ciplot
(SSC) eller eclplot
(Stata Journal, SSC).
Svar
Forudsat at du har adgang til de originale data, kan du gøre dette i R med lineplot.CI-funktionen i sciplot bibliotek
Eksempel med mtcars-datasæt:
lineplot.CI(x.factor=gear, response=mpg, group=vs, data=mtcars)
Bemærk, at lineplot.CI som standard plotter SE-bjælker (det kan ændres, der definerer en ny funktion med argumentet ci.fun for at 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 kunne gøres i R med points()
(eller plot(..., type="p")
) og segments()
. Der kan også være R-funktioner designet til at oprette CIerne til dig, men disse kan kræve de originale data. De flere paneler i samme figur oprettet med par(mfrow=c(4,1))
. Hvis du ikke ” ikke kender nogen R, det ville være svært at gøre let (som i, ville du skulle lære lidt mere R eller få nogen til at hjælpe med dit specifikke datasæt).
Svar
GraphPad Prism kan let lave denne form for graf ved at tegne fejlfelt fra de fejlværdier, du indtaster. Opret en grupperet tabel formateret til entery af middelværdi, – fejl og + fejl.
Kommentarer
- Er det muligt at få en gratis kopi af den, der ikke er ‘ t bare en 30 dages prøveversion?
- @BrentonHorne: Nej. Det er ikke gratis software.
Skriv et svar