Forstå konfidensintervaller med Python

Kilde node: 1883080

Denne artikkelen ble publisert som en del av Data Science Blogathon.

Innholdsfortegnelse

  1. Introduksjon
  2. Konfidensintervaller med Z-statistikk
  3. Tolking av konfidensintervaller
  4. Forutsetninger for CI ved bruk av z-statistikk
  5. Konfidensintervaller med t-statistikk
  6. Forutsetninger for CI ved bruk av t-statistikk
  7. Lage et t-intervall med sammenkoblede data
  8. z-verdi vs t-verdi: når skal man bruke hva?
  9. Konfidensintervaller med python
  10. Sluttnotat

Introduksjon

Hver gang vi løser et statistisk problem er vi bekymret for estimeringen av populasjonsparametere, men oftere enn ikke er det nesten umulig å beregne populasjonsparametere. Det vi gjør i stedet er å ta stikkprøver fra populasjonen og beregne prøvestatistikk som forventer å tilnærme populasjonsparametere. Men hvordan vet vi om prøvene er sanne representanter for populasjonen eller hvor mye disse utvalgsstatistikkene avviker fra populasjonsparametere? Det er her konfidensintervaller kommer inn i bildet. Så, hva er disse intervallene? Konfidensintervallet er et verdiområde som strekker seg over og under prøvestatistikken, eller vi kan også definere det som sannsynligheten for at et verdiområde rundt prøvestatistikken inneholder den sanne populasjonsparameteren.

Konfidensintervaller med Z-statistikk

Før vi går dypt inn i emnet, la oss bli kjent med noen statistiske terminologier.

befolkningen: Det er settet med alle lignende individer. For eksempel befolkningen i en by, studenter ved en høyskole, etc.

sample: Det er et lite sett med lignende individer hentet fra befolkningen. Tilsvarende er et tilfeldig utvalg et utvalg trukket tilfeldig fra populasjonen.

parametere: Gjennomsnitt(mu), standardavvik(sigma), proporsjon(p) avledet fra populasjonen.

statistikk: gjennomsnitt(x bar), standardavvik(S), proporsjoner(p^) knyttet til prøver.

Z-poengsum: det er avstanden til ethvert rådatapunkt på en normalfordeling fra gjennomsnittet normalisert ved standardavvik. Gitt av: x-mu/sigma

Akkurat nå er vi klare til å dykke dypt inn i konseptet med konfidensintervaller. Av en eller annen grunn tror jeg det er mye bedre å forstå konsepter gjennom relaterte eksempler i stedet for rå matematiske definisjoner. Så la oss komme i gang.

anta at du bor i en by med 100,000 100 innbyggere og et valg er rundt hjørnet. Som meningsmåler må du spå hvem som kommer til å vinne valget enten blått parti eller gult. Så du ser at det er nesten umulig å samle informasjon fra hele befolkningen, så du velger 62 personer tilfeldig. På slutten av undersøkelsen fant du at 62 % av folk kommer til å stemme på gult. Nå er spørsmålet om vi skal konkludere med at gult kommer til å vinne med en vinnersannsynlighet på 62 % eller at 58 % av hele befolkningen vil stemme på gult? Vel, svaret er NEI. Vi vet ikke sikkert hvor langt estimatet vårt er fra den sanne parameteren, hvis vi tar en ny prøve kan resultatet vise seg å være 65 % eller XNUMX %. Så det vi vil gjøre i stedet er å finne en rekke verdier rundt prøvestatistikken vår som mest sannsynlig vil fange opp den sanne populasjonsandelen. Her refererer andelen til prosentandelen av

Konfidensintervaller med Python

                                                                   bildet tilhører forfatteren

Nå, hvis vi tar hundre slike prøver og plotter prøveandelen av hver prøve, vil vi få en normalfordeling av prøveproporsjoner og gjennomsnittet av fordelingen vil være den mest omtrentlige verdien av populasjonsandelen. Og vårt estimat kan ligge hvor som helst på distribusjonskurven. I henhold til 3-sigma-regelen vet vi at rundt 95 % av de tilfeldige variablene ligger innenfor 2 std-avvik fra gjennomsnittet av fordelingen. Så kan vi konkludere med at sannsynligheten for at p^ er innenfor 2 std avvik fra p er 95 %. Eller vi kan også slå fast at sannsynligheten for at p er innenfor 2 std avvik under og over p^ også er 95%. Disse to utsagnene er faktisk likeverdige. Disse to punktene under og over p^ er våre konfidensintervaller.

Konfidensintervaller med Python

                                                           bildet tilhører forfatteren

Hvis vi på en eller annen måte kan finne sigmaen, kan vi beregne vårt nødvendige intervall. Men sigma her er populasjonsparameteren, og vi vet at det ofte er nesten umulig å beregne, så i stedet vil vi bruke prøvestatistikk, dvs. standardfeil. Dette er gitt som

hvor p^= prøveandel, n=antall prøver

SE =√(0.62 . 0.38/100) = 0.05

så, 2xSE = 0.1

Konfidensintervallet for våre data er (0.62-0.1,0.62+0.1) eller (0.52,0.72). Ettersom vi har tatt 2xSE betyr dette 95 % konfidensintervall.

Nå er spørsmålet hva om vi ønsker å lage et 92 % konfidensintervall? I forrige eksempel multipliserte vi 2 med SE for å konstruere et 95 % konfidensintervall, denne 2 er z-skåren for et 95 % konfidensintervall (nøyaktig verdi er 1.96), og denne verdien kan finnes fra en z-tabell. Den kritiske verdien av z for et 92 % konfidensintervall er 1.75. Referere til denne artikkel for en bedre forståelse av z-score og z-table.

Intervallet er gitt av: (p^ + z*.SE , p^-z*.SE).

Hvis i stedet for prøveandel er prøvegjennomsnittet gitt, vil standardfeilen være sigma/sqrt(n). Her sigma er populasjonens std-avvik, da vi ofte ikke har, bruker vi utvalgets std-avvik i stedet. Men det er ofte observert at denne typen estimering der gjennomsnittet er gitt resultatet har en tendens til å være litt partisk. Så i tilfeller som dette er det foretrukket å bruke t-statistikk i stedet for z-statistikk.

Den generelle formelen for et konfidensintervall med z-statistikk er gitt av

Her refererer statistikken til enten prøvegjennomsnitt eller prøveandel. sigmas er befolkningens standardavvik.

Tolking av konfidensintervaller

Det er veldig viktig å tolke konfidensintervaller riktig. Tenk på det forrige eksempelet på spørreundersøkelsen der vi beregnet vårt 95 % konfidensintervall til å være (0.52,0.62). Hva betyr det? Vel, et 95 % konfidensintervall betyr at hvis vi trekker n utvalg fra populasjonen, vil 95 % av tiden det utledede intervallet inneholde den sanne populasjonsandelen. Husk at et 95 % konfidensintervall ikke betyr at det er 95 % sannsynlighet for at intervallet inneholder den sanne populasjonsandelen. For eksempel, for et 90 % konfidensintervall hvis vi trekker 10 prøver fra en populasjon, vil 9 av 10 ganger det nevnte intervallet inneholde sann populasjonsparameter. Se på bildet nedenfor for en bedre forståelse.

Tolking av konfidensintervallet

                                                            bildet tilhører forfatteren

Forutsetninger for konfidensintervaller ved bruk av Z-statistikk

Det er visse antakelser vi må se etter for å konstruere et gyldig konfidensintervall ved å bruke z-statistikk.

  1. Tilfeldig utvalg: Prøvene må være tilfeldige. Det er forskjellige prøvetakingsmetoder som stratifisert prøvetaking, enkel tilfeldig prøvetaking, klyngeprøvetaking for å få tilfeldige prøver.
  2. Normal tilstand: Dataene må tilfredsstille denne betingelsen np^>=10 og n.(1-p^)>=10. Det betyr i hovedsak at vår samplingsfordeling av utvalgsmidler må være normal, ikke skjev på noen av sidene.
  3. Uavhengig: Prøvene må være uavhengige. Antall prøver må være mindre enn eller lik 10 % av den totale populasjonen, eller hvis prøvetakingen er gjort med erstatning.

Konfidensintervaller med T-statistikk

Hva om utvalgsstørrelsen er relativt liten og populasjonsstandardavviket ikke er gitt eller ikke kan antas? Hvordan konstruerer vi et konfidensintervall? vel, det er der t-statistikk kommer inn. Den grunnleggende formelen for å finne konfidensintervall her forblir den samme med bare z* erstattet av t*. Den generelle formelen er gitt av

hvor S = prøvestandardavvik, n = antall prøver

Tenk deg at du var vertskap for en fest og du vil anslå det gjennomsnittlige forbruket av øl til gjestene dine. Så du får et tilfeldig utvalg på 20 individer og målte ølforbruket. Prøvedataene er symmetriske med en gjennomsnittlig 0f 1200 ml og standardavvik på 120 ml. Så nå ønsker du å konstruere et 95 % konfidensintervall.

Så vi har prøvestd-avvik, antall prøver og prøvegjennomsnitt. Alt vi trenger er t*. Så, t* for et 95 % konfidensintervall med en frihetsgrad på 19(n-1 = 20-1) er 2.093. Så det nødvendige intervallet vårt er etter beregningen er (1256.16, 1143.83) med en feilmargin på 56.16. Referere til denne video for å vite hvordan du leser t-tabellen.

Forutsetninger for CI ved bruk av T-statistikk

I likhet med tilfellet med z-statistikk også her, når det gjelder t-statistikk, er det noen forhold vi må se etter i gitte data.

  1. Utvalget må være tilfeldig
  2. Prøven må være normal. For å være normal bør prøvestørrelsen være større eller lik 30 eller hvis overordnet datasett, dvs. populasjonen er omtrent normal. Eller hvis prøvestørrelsen er under 30, må fordelingen være omtrent symmetrisk.
  3. Individuelle observasjoner må være uavhengige. Det betyr at den følger 10 %-regelen eller prøvetakingen utføres med erstatning.

Lage et T-intervall for sammenkoblede data

Til nå har vi kun brukt ett-utvalgsdata. Nå skal vi se hvordan vi kan konstruere et t-intervall for sammenkoblede data. I sammenkoblede data gjør vi to observasjoner på samme individ. For eksempel å sammenligne pre- og post-testkarakterer for studenter eller data om effekten av et medikament og placebo på en gruppe personer. I sammenkoblede data fant vi forskjellen mellom de to observasjonene i 3. kolonne. Som vanlig vil vi gå gjennom et eksempel for å forstå dette konseptet også,

Sp. En lærer prøvde å evaluere effekten av en ny læreplan på prøveresultatet. Nedenfor er resultatene av observasjonene.

T-intervall for sammenkoblede data

                                                      bildet tilhører forfatteren

Siden vi har til hensikt å finne intervaller for gjennomsnittlig forskjell, trenger vi kun statistikken for forskjellene. Vi vil bruke samme formel som vi brukte før

statistikk +- (kritisk verdi eller t-verdi) (standardavvik for statistikk)

xd = gjennomsnitt av forskjellen, Sd = prøve std avvik, for en 95 % KI med en frihetsgrad 5 t* er gitt med 2.57. Feilmarginen = 0.97 og konfidensintervallet (4.18,6.13).

Tolkning: Fra anslagene ovenfor, som vi kan se, inneholder ikke konfidensintervallet null eller negative verdier. Så vi kan konkludere med at den nye læreplanen hadde en positiv innvirkning på prøveprestasjonene til elevene. Hvis den bare hadde negative verdier, kan vi si at læreplanen hadde en negativ innvirkning. Eller hvis den inneholdt null, kan det være en mulighet for at forskjellen var null eller ingen effekt av læreplanen på testresultatene.

Z-verdi vs T-verdi

Det er mye forvirring i begynnelsen om når du skal bruke hva. Tommelfingerregelen er når utvalgsstørrelsen er >= 30 og populasjonsstandardavvik er kjent for å bruke z-statistikk. Hvis prøvestørrelsen er < 30, bruk t-statistikk. I det virkelige liv har vi ikke populasjonsparametere, så vi vil gå med z eller t basert på utvalgsstørrelse.

Med mindre samples(n<30) gjelder ikke den sentrale LImit-teoremet, og en annen fordeling kalt Students t-fordeling brukes. T-fordelingen ligner normalfordelingen, men har forskjellige former avhengig av prøvestørrelsen. I stedet for z-verdier brukes t-verdier som er større for mindre utvalg, noe som gir en større feilmargin. Som en liten prøvestørrelse vil være mindre presis.

Konfidensintervaller med Python

Python har et stort bibliotek som støtter alle slags statistiske beregninger som gjør livet vårt litt enklere. I denne delen skal vi se på dataene om småbarns søvnvaner. De 20 deltakerne i disse observasjonene var sunne, oppførte seg normalt og hadde ingen søvnforstyrrelser. Målet vårt er å analysere leggetiden til småbarn som sover og ikke sover.

Referanse: Akacem LD, Simpkin CT, Carskadon MA, Wright KP Jr, Jenni OG, Achermann P, et al. (2015) Tidspunktet for døgnklokken og søvnen er forskjellig mellom småbarn som sover og ikke sover. PLoS ONE 10(4): e0125181. https://doi.org/10.1371/journal.pone.0125181

Vi skal importere biblioteker som vi trenger

importer numpy som np importer pandaer som pd fra scipy.stats import t pd.set_option('display.max_columns', 30) # satt slik at kan se alle kolonnene i DataFrame-importmatematikken
df = pd.read_csv(nap_no_nap.csv) #lese data
df.head ()
Konfidensintervaller med Python

Lag to 95 % konfidensintervaller for gjennomsnittlig leggetid, ett for småbarn som sover og ett for småbarn som ikke gjør det. Først vil vi isolere kolonnen 'natt sengetid' for de som lurer inn i en ny variabel, og de som ikke lurer inn i en annen ny variabel. Leggetiden her er desimalisert.

bedtime_nap = df['night sengetid'].loc[df['napping'] == 1] bedtime_no_nap = df['night sengetid'].loc[df['napping'] == 0]

print(len(bedtime_nap))

print(len(sengetid_ingen_lur))

utgang: 15 n 5


Nå finner vi prøvens gjennomsnittlige sengetid for lur og no_nap.

nap_mean_bedtime = bedtime_nap.mean() #20.304 no_nap_mean_bedtime = bedtime_no_nap.mean() #19.59

Nå finner vi prøvestandardavviket for XNAP og Xingen lur 

nap_s_bedtime = np.std(bedtime_nap,ddof=1) no_nap_s_bedtime = np.std(bedtime_no_nap,ddof=1)

Merk: ddof-parameteren er satt til 1 for sample std dev, ellers vil den bli population std dev.

Nå finner vi prøvestandardfeilen for XNAP og Xingen lur 

nap_se_mean_bedtime = nap_s_bedtime/math.sqrt(len(bedtime_nap)) #0.1526 no_nap_se_mean_bedtime = no_nap_s_bedtime/math.sqrt(len(bedtime_no_nap)) #0.2270

Så langt så bra, nå som utvalgsstørrelsen er liten og vi ikke har et standardavvik for populasjonsandel, vil vi bruke t*-verdien. En måte å finne t*-verdien på er å bruke scipy.stats t.ppf funksjon. Argumentene for t.ppf() er q = prosent, df = frihetsgrad, skala = std dev, loc = gjennomsnitt. Siden t-fordelingen er symmetrisk for et 95 % konfidensintervall vil q være 0.975. Referere til denne for mer info om t.ppf().

nap_t_star = t.ppf(0.975,df=14) #2.14 no_nap_t_star = t.ppf(0.975,df=5) #2.57

Nå vil vi legge til brikkene for å endelig konstruere vårt konfidensintervall.

nap_ci_plus = nap_mean_bedtime + nap_t_star*nap_se_bedtime

nap_ci_minus = nap_mean_bedtime – nap_t_star*nap_se_bedtime

print(lur_ci_minus,lur_ci_pluss)

no_nap_ci_plus = no_nap_mean_bedtime + no_nap_t_star*nap_se_bedtime

no_nap_ci_minus = no_nap_mean_bedtime – no_nap_t_star*nap_se_bedtime

print(no_nap_ci_minus,no_nap_ci_plus)


utgang: 19.976680775477412 20.631319224522585 18.95974084563192 20.220259154368087

Tolkning: 

Fra resultatene ovenfor konkluderer vi med at vi er 95 % sikre på at gjennomsnittlig leggetid for småbarn som sover er mellom klokken 19.98 – 20.63 (pm), mens den for småbarn som ikke sover, er mellom 18.96 – 20.22 (pm). Disse resultatene er i henhold til vår forventning om at hvis du tar en lur på dagtid, vil du sove sent på kvelden.

EndNotes

Så dette handlet om enkle konfidensintervaller ved å bruke z- og t-verdier. Det er virkelig et viktig konsept å vite når det gjelder statistiske studier. En flott inferensiell statistisk metode for å estimere populasjonsparametere fra prøvedata. Konfidensintervaller er også knyttet til hypotesetesting om at for en 95 % CI gir du 5 % plass til anomalier. Hvis nullhypotesen faller innenfor konfidensintervallet vil p-verdien være stor og vi vil ikke kunne avvise null. Omvendt, hvis det faller forbi, vil vi ha tilstrekkelig bevis til å avvise null og akseptere alternative hypoteser.

Håper du likte artikkelen og godt nytt år (:

Mediene vist i denne artikkelen eies ikke av Analytics Vidhya og brukes etter forfatterens skjønn.

Kilde: https://www.analyticsvidhya.com/blog/2022/01/understanding-confidence-intervals-with-python/

Tidstempel:

Mer fra Analytics Vidhya