Vytváření grafů intervalů spolehlivosti ze souhrnné statistiky
On 14 února, 2021 by adminTrochu jako krabicový graf. Nemyslím tím nutně standardní horní interval spolehlivosti, dolní interval spolehlivosti, průměr a datové rozsahy zobrazující krabicové grafy, ale myslím to jako krabicový graf pouze se třemi daty: 95% interval spolehlivosti a průměr .
Toto je snímek obrazovky článku v deníku, který měl přesně to, co chci:
Chtěl bych také vědět, jak bych použil software, který uvede odpověď, k vytvoření takového grafu.
Komentáře
- To, co nazýváte “ standardní horní interval spolehlivosti, dolní interval spolehlivosti, průměr a grafy polí zobrazujících rozsah dat “ nejsou vůbec standardní pozemkové grafy. Standardní rámeček zobrazuje medián, kvartily, minimum a maximum a často další podrobnosti.
- @Nick Right: ale jaká se taková grafika vlastně nazývá? (I ‚ si nejsem jistý.)
- Tento druh zápletky je standardní (‚ nejde o políčko i když) a lze je vytvořit všemi hlavními statistickými balíčky: Stata, SAS, R , MATLAB. Myslím, že byste to dokázali i s Excelem.
- @COOLSerdash skvělé! Mohl byste napsat odpověď pro MATLAB, protože už MATLAB mám?
- I ‚ d zavolám tyto spiknutí s intervalem spolehlivosti, ale ne každý spiknutí opravdu potřebuje odlišný název . Každá zápletka si zaslouží textový titulek, nicméně ….
Odpověď
V MATLABu možná budete chtít vyzkoušejte funkci errorbar : http://www.mathworks.de/de/help/matlab/ref/errorbar.html
Případně můžete může to udělat hloupě a ručně. Například vzhledem k matici datových bodů „a“ můžete vypočítat své prostředky pomocí funkce m = průměr (a), vypočítat své CI (v závislosti na tom, jaký CI potřebujete) a výsledky vykreslit ručně.
Demonstrace, pokud již znáte průměr a CI, za předpokladu, že CI jsou v matici CI (první a druhý sloupec) a prostředky jsou v matici 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
Demonstrace v případě, že znáte jednotlivá měření, pro experiment s opakovanými měřeními, podmínky 3+, jedna podmínka na sloupec, jeden předmět na řádek v matici a, žádné chybějící vzorky, 95% CI jako 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
Komentáře
- Přečtěte si moji poslední úpravu, je mi ‚ líto, ale někteří lidé, kteří ze mě sakra otravují, upravili skutečnost, že znám pouze 95% CI a znamená žádná další data.
- @BrentonHorne odkaz na funkci errorbar nepomohl? Vypadá to, že přesně chcete.
- Jak řekl Peter, použijte errorbar () . Nebo použijte skript, který jsem napsal, ale ignorujte první řádek s ttestem a jednoduše jej nakrmte a CI přímo. ‚ Upravím to hádam.
- @BrentonHorne Abych byl spravedlivý, nikdy jste se o tomto bodu nerozebíral obšírně, ba dokonce se o něm vůbec nezmínil v těle otázka. Bylo to naznačeno nadpisem, ale tento nadpis také omylem zmínil grafy polí, což je problém, který se úprava pokusila opravit. ‚ Je politováníhodné, že slovo „pouze“ v procesu zmizelo, ale nikdo ho záměrně nezměnil z velké části vaší otázky. Kromě toho odpověď obsahovala řešení a zbytek textu by mohl být zajímavý pro ostatní čtenáře.
- Spustil jsem kód, který proběhl dobře, problém je, že bych ho rád, kdyby existovaly nějaké prostředky kterou jsem mohl spojit s horním CI a dolním CI s řádkem jako na screenshotu v mé otázce.
Odpověď
Podívejte se, jestli vám to pomůže. Řešení 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)
Komentáře
- a jak spustím takový kód? Jsem pro R úplně nový, takže mě ‚ budete muset projít, protože jsem bezradný.
- Mohu vám pomoci s výstřelem, ale za prvé musíte postupovat podle dvou kroků: i) nainstalovat R Studio do počítače, ii) poskytnout reprodukovatelný příklad: stackoverflow.com/questions/5963269/…
- @AndreSilva, myslím, že jste tam prošli míli navíc. Skvělá podpora a vedení!
- To je to, co jsem dostal za spuštění vašeho kódu i.stack.imgur.com/yrZaJ.png
- @BrentonHome. Zvláštní. Právě jsem testoval a fungovalo to. Tyčinky “ chyby “ se nezobrazují. Nainstalovali jste balíček
plotrix
? Přidal jsem programový příkazový řádek do kódu, který nainstaluje balíček plotrix. Zkuste to prosím znovu a dejte vědět.
Odpověď
Tento typ grafu v jazyce R pomocí ggplot2, i když možná budete muset něco pohrávat s velikost písma osy:
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")
Odpovědět
Ve Stata použijte serrbar
nebo ciplot
(SSC) nebo eclplot
(Stata Journal, SSC).
Odpověď
Za předpokladu, že máte přístup k původním datům, můžete to udělat v R pomocí funkce lineplot.CI ve sciplotu knihovna
Příklad s datovou sadou mtcars:
lineplot.CI(x.factor=gear, response=mpg, group=vs, data=mtcars)
Všimněte si, že lineplot.CI ve výchozím nastavení vykresluje pruhy SE (lze jej změnit definováním nového funkce s argumentem ci.fun k vykreslení 95% intervalů CI)
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)))
odpověď
To lze provést v R pomocí points()
(nebo plot(..., type="p")
) a segments()
. Mohou existovat také funkce R určené k vytvoření CI pro vás, ale ty mohou vyžadovat původní data. Několik panelů na stejném obrázku vytvořených pomocí par(mfrow=c(4,1))
. Pokud tak neučiníte Pokud neznáte žádné R, bylo by těžké to snadno udělat (stejně jako v případě, že byste se museli naučit trochu více R nebo přimět někoho, aby vám pomohl s vaší konkrétní sadou dat).
Odpověď
GraphPad Prism může snadno vytvořit tento druh grafu a vykreslit chybové pruhy ze zadaných chybových hodnot. Vytvořte seskupenou tabulku formátovanou pro zadání střední hodnoty, – chyba a + chyba.
Komentáře
- Je možné získat jeho bezplatnou kopii, která není ‚ pouze 30denní zkušební verze?
- @BrentonHorne: Ne. Není to svobodný software.
Napsat komentář