Luottamusvälipalkkien piirtäminen yhteenvetotilastoista
On helmikuu 14, 2021 by adminVähän kuin laatikkokaavio. Tarkoitan, ettei välttämättä vakio ylemmän luottamusvälin, alemman luottamusvälin, keskiarvon ja tietoalueen näyttäviä laatikkokaavioita, mutta tarkoitan kuin laatikkokaaviota, jossa on vain kolme tietoa: 95%: n luottamusväli ja keskiarvo .
Tämä on kuvakaappaus päiväkirjaartikkelista, jossa oli juuri sitä mitä haluan:
Haluaisin myös tietää, miten käytän ohjelmistoa, jonka vastaaja mainitsee tällaisen juovan luomiseen.
Kommentit
- Sitä, mitä kutsut ” normaaliksi ylemmäksi luottamusväliksi, alemmaksi luottamusväliksi, keskiarvoksi ja data-alueeksi näyttäviksi ruutukaavioiksi ” eivät ole lainkaan tavallisia laatikkotontteja. Vakiolaatikkokaavio näyttää mediaanin, kvartiilin, vähimmäis- ja maksimiarvot sekä usein muut yksityiskohdat.
- @Nick Right: mutta mitä kutsutaan tällaisiksi grafiikoiksi? (En ’ ole varma.)
- Tällainen juoni on vakiona (se ’ ei ole laatikko plot), ja kaikki tärkeimmät tilastopaketit voivat tuottaa sen: Stata, SAS, R , MATLAB. Luulen, että voit tehdä sen myös Excelin kanssa.
- @COOLSerdash loistava! Voisitko kirjoittaa vastauksen MATLAB: lle, koska minulla on jo MATLAB?
- I ’ kutsun näitä luottamusväliajoja, mutta kaikki juovat eivät todellakaan tarvitse erillistä nimeä . Jokainen juoni ansaitsee kuitenkin tekstityksen.
Vastaa
MATLABissa haluat ehkä kokeile virhepalkki -toimintoa: http://www.mathworks.de/de/help/matlab/ref/errorbar.html
Vaihtoehtoisesti voit voi tehdä sen tyhmällä ja manuaalisella tavalla. Esimerkiksi, kun annetaan datapisteiden matriisi ”a”, voit laskea keskiarvosi funktiolla m = keskiarvo (a), laskea CI: si (riippuen tarvitsemastasi CI: stä) ja piirtää tulokset käsin.
Osoitus, jos tiedät jo keskiarvon ja CI: n, olettaen, että CI: t ovat matriisissa CI (ensimmäinen ja toinen sarake) ja keskiarvot ovat matriisissa 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
Esittely siinä tapauksessa, että tiedät yksittäiset mittaukset, toistuvien mittausten kokeelle, 3+ ehtoa, yksi ehto saraketta kohti, yksi aihe per matriisin rivi a, ei puuttuvia näytteitä, 95%: n luottamusväli kuten MATLAB: n ”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
kommentit
- Lue viimeisin muokkaukseni, olen ’ pahoillani, mutta jotkut ihmiset, jotka ärsyttävät minua, muokkaivat tosiasiaa, jonka tiedän vain 95%: n luottamusväli eikä tarkoita lisätietoa.
- @BrentonHorne linkki virhepalkkitoimintoon ei auttanut? Se näyttää olevan juuri se, mitä haluat.
- Kuten Peter sanoi, käytä sitten virhepalkkia () . Tai käytä kirjoittamaani komentosarjaa, mutta ohita ensimmäinen rivi ttestillä ja syötä se vain tarkasti ja CI: llä. ’ muokkaan sitä luultavasti.
- @BrentonHorne Ollakseni rehellinen, et koskaan keskustellut asiasta perusteellisesti tai edes maininnut sitä lainkaan kysymys. Otsikko viittasi siihen, mutta tässä otsikossa mainittiin myös virheellisesti laatikkokaaviot, mikä on asia, jota muokkaus yritti korjata. ’ on valitettavaa, että sana ”vain” katosi prosessissa, mutta kukaan ei muokannut sitä tarkoituksellisesti suureksi osaksi kysymystäsi. Lisäksi vastaus sisälsi ratkaisun ja loput tekstistä saattaisi olla mielenkiintoista muille lukijoille.
- Suoritin koodin, joka meni hyvin, ongelmana on, että haluaisin sen jos jokin keino oli jonka voisin liittää ylempään ja alempaan CI: hen viivalla, kuten kysymyksessä olevassa kuvakaappauksessa.
Vastaa
Katso, auttaako tämä sinua. R-ratkaisu:
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)
kommentit
- ja miten suoritan tällaisen koodin? Olen R: lle aivan uusi, joten ’ minun täytyy käydä läpi se, koska olen tietämätön.
- Voin auttaa sinua ampumaan, mutta ensinnäkin sinun on noudatettava kahta vaihetta: i) asennetaan R Studio tietokoneellesi, ii) annetaan toistettava esimerkki: stackoverflow.com/questions/5963269/…
- @AndreSilva, luulen, että menit sinne ylimääräisen mailin. Suuri tuki ja mentorointi!
- Tämän sain koodisi ajamisesta i.stack.imgur.com/yrZaJ.png
- @BrentonHome. Outo. Testasin juuri ja se toimi. Palkkeja ” -virhe ” ei näy. Asensitko
plotrix
-paketin? Lisäsin ohjelman komentorivin koodiin, joka asentaa plotrix-paketin. Yritä uudelleen ja ilmoita siitä.
Vastaa
Tämäntyyppinen juoni R: ssä käyttäen ggplot2: ta, vaikka saatat joutua tekemään jonkin verran hämmennystä akselin kirjasinkoko:
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")
Vastaa
Käytä Statassa serrbar
tai ciplot
(SSC) tai eclplot
(Stata Journal, SSC).
vastaus
Jos olet päässyt alkuperäisiin tietoihin, voit tehdä tämän R: ssä skriptin lineplot.CI-toiminnolla. kirjasto
Esimerkki mtcars-tietojoukosta:
lineplot.CI(x.factor=gear, response=mpg, group=vs, data=mtcars)
Huomaa, että lineplot.CI kuvaa oletuksena SE-palkit (sitä voidaan muuttaa määrittelemällä uusi funktio argumentilla ci.fun piirtämään 95%: n luottamusvälit)
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)))
Vastaa
Tämä voidaan tehdä R: ssä points()
(tai plot(..., type="p")
) ja segments()
kanssa . Saattaa olla myös R-toimintoja, jotka on suunniteltu luomaan CI: t sinulle, mutta ne saattavat vaatia alkuperäiset tiedot. Samassa kuvassa olevat useat paneelit on luotu kohdalla par(mfrow=c(4,1))
. Jos et ” en tiedä yhtään R: tä, sitä olisi vaikea tehdä helposti (kuten joissakin tapauksissa, sinun on opittava hieman enemmän R: tä tai saatava joku auttamaan tietyssä tietojoukossa).
Vastaa
GraphPad Prism voi helposti tehdä tällaisen kaavion ja piirtää virhepalkit antamiesi virheiden arvoista. Luo ryhmitelty taulukko, joka on muotoiltu keskiarvon, – virheen ja + virheen enteeriksi.
kommentit
- Onko mahdollista saada ilmainen kopio siitä, joka ei ole ’ vain 30 päivän kokeiluversio?
- @BrentonHorne: Ei. Se ei ole ilmainen ohjelmisto.
Vastaa