Forståelse af konfidensintervaller med Python

Kildeknude: 1883080

Denne artikel blev offentliggjort som en del af Data Science Blogathon.

Indholdsfortegnelse

  1. Introduktion
  2. Konfidensintervaller med Z-statistik
  3. Tolkning af konfidensintervaller
  4. Antagelser for CI ved hjælp af z-statistik
  5. Konfidensintervaller med t-statistik
  6. Forudsætninger for CI ved hjælp af t-statistik
  7. Lav et t-interval med parrede data
  8. z-værdi vs t-værdi: hvornår skal man bruge hvad?
  9. Konfidensintervaller med python
  10. Slutnote

Introduktion

Når vi løser et statistisk problem, er vi bekymrede over estimeringen af ​​populationsparametre, men oftest er det tæt på umuligt at beregne populationsparametre. Det, vi gør i stedet, er at tage tilfældige prøver fra populationen og beregne stikprøvestatistik, der forventer at tilnærme befolkningsparametre. Men hvordan ved vi, om prøverne er sande repræsentanter for populationen, eller hvor meget disse stikprøvestatistikker afviger fra populationsparametre? Det er her, konfidensintervaller kommer ind i billedet. Så hvad er disse intervaller? Konfidensintervallet er et interval af værdier, der strækker sig over og under stikprøvestatistikken, eller vi kan også definere det som sandsynligheden for, at et interval af værdier omkring stikprøvestatistikken indeholder den sande populationsparameter.

Konfidensintervaller med Z-statistik

Før vi dykker dybt ned i emnet, lad os stifte bekendtskab med nogle statistiske terminologier.

befolkning: Det er sættet af alle lignende individer. For eksempel befolkningen i en by, studerende på et universitet osv.

prøve: Det er et lille sæt af lignende individer hentet fra befolkningen. På samme måde er en tilfældig stikprøve en tilfældig stikprøve fra populationen.

parametre:  Middel(mu), standardafvigelser(sigma), proportion(p) afledt af populationen.

statistik: middelværdi(x bar), standardafvigelse(S), proportioner(p^) vedrørende prøver.

Z-score: det er afstanden af ​​ethvert rådatapunkt på en normalfordeling fra middelværdien normaliseret ved standardafvigelse. Givet af: x-mu/sigma

Okay lige nu er vi klar til at dykke dybt ned i konceptet med konfidensintervaller. Af en eller anden grund mener jeg, at det er meget bedre at forstå begreber gennem relaterbare eksempler frem for rå matematiske definitioner. Så lad os komme i gang.

antag, at du bor i en by med 100,000 indbyggere, og et valg er lige om hjørnet. Som meningsmåler skal du forudsige, hvem der skal vinde valget enten blåt parti eller gult. Så du kan se, at det er næsten umuligt at indsamle oplysninger fra hele befolkningen, så du tilfældigt vælger 100 personer. I slutningen af ​​undersøgelsen fandt du ud af, at 62 % af folk vil stemme på gul. Nu er spørgsmålet, om vi skal konkludere, at gul vil vinde med en sejrssandsynlighed på 62 % eller 62 % af hele befolkningen vil stemme på gul? Nå, svaret er NEJ. Vi ved ikke med sikkerhed, hvor langt vores estimat er fra den sande parameter, hvis vi tager en anden prøve kan resultatet vise sig at være 58% eller 65%. Så det, vi vil gøre i stedet, er at finde en række værdier omkring vores stikprøvestatistik, der højst sandsynligt vil fange den sande befolkningsandel. Her refererer andelen til procentdelen af

Konfidensintervaller med Python

                                                                   billedet tilhører forfatteren

Hvis vi nu tager hundrede sådanne prøver og plotter stikprøveandelen af ​​hver prøve, får vi en normalfordeling af prøveudtagningsforhold, og middelværdien af ​​fordelingen vil være den mest omtrentlige værdi af populationsandelen. Og vores estimat kan ligge hvor som helst på fordelingskurven. I henhold til 3-sigma reglen ved vi, at omkring 95% af de tilfældige variable ligger inden for 2 std afvigelser fra middelværdien af ​​fordelingen. Så vi kan konkludere, at sandsynligheden for, at p^ er inden for 2 std afvigelser fra p er 95 %. Eller vi kan også konstatere, at sandsynligheden for, at p er inden for 2 std afvigelser under og over p^ også er 95%. Disse to udsagn er reelt ækvivalente. Disse to punkter under og over p^ er vores konfidensintervaller.

Konfidensintervaller med Python

                                                           billedet tilhører forfatteren

Hvis vi på en eller anden måde kan finde sigmaen, kan vi beregne vores nødvendige interval. Men sigma her er populationsparameteren, og vi ved, at det ofte er næsten umuligt at beregne, så i stedet vil vi bruge stikprøvestatistikker, dvs. standardfejl. Dette er givet som

hvor p^= stikprøveandel, n=antal prøver

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

så 2xSE = 0.1

Konfidensintervallet for vores data er (0.62-0.1,0.62+0.1) eller (0.52,0.72). Da vi har taget 2xSE, oversættes dette til 95 % konfidensinterval.

Nu er spørgsmålet, hvad hvis vi ønsker at skabe et 92 % konfidensinterval? I det foregående eksempel multiplicerede vi 2 med SE for at konstruere et 95 % konfidensinterval, denne 2 er z-score for et 95 % konfidensinterval (den nøjagtige værdi er 1.96), og denne værdi kan findes fra en z-tabel. Den kritiske værdi af z for et 92 % konfidensinterval er 1.75. Henvise til denne artikel for en bedre forståelse af z-score og z-table.

Intervallet er givet ved: (p^ + z*.SE , p^-z*.SE).

Hvis der i stedet for prøveandel angives prøvegennemsnittet, vil standardfejlen være sigma/sqrt(n). Her sigma er populationens std afvigelse, da vi ofte ikke har, bruger vi stikprøve std afvigelse i stedet for. Men det observeres ofte, at denne form for estimering, hvor gennemsnittet er givet, har en tendens til at være en smule forudindtaget. Så i tilfælde som dette foretrækkes det at bruge t-statistik i stedet for z-statistik.

Den generelle formel for et konfidensinterval med z-statistik er givet ved

Her refererer statistikken til enten stikprøvegennemsnit eller stikprøveandel. sigmas er populationens standardafvigelse.

Tolkning af konfidensintervaller

Det er virkelig vigtigt at fortolke konfidensintervaller korrekt. Overvej det tidligere undersøgelseseksempel, hvor vi beregnede vores 95 % konfidensinterval til at være (0.52,0.62). Hvad betyder det? Nå, et 95 % konfidensinterval betyder, at hvis vi trækker n stikprøver fra populationen, så vil det afledte interval i 95 % af tiden indeholde den sande populationsandel. Husk, at et 95 % konfidensinterval ikke betyder, at der er 95 % sandsynlighed for, at intervallet indeholder den sande populationsandel. For eksempel, for et 90 % konfidensinterval, hvis vi trækker 10 prøver fra en population, vil 9 ud af 10 gange det nævnte interval indeholde sand populationsparameter. Se på billedet nedenfor for en bedre forståelse.

Fortolkning af konfidensintervallet

                                                            billedet tilhører forfatteren

Antagelser for konfidensintervaller ved hjælp af Z-statistik

Der er visse antagelser, vi skal kigge efter for at konstruere et gyldigt konfidensinterval ved hjælp af z-statistik.

  1. Tilfældig stikprøve: Prøverne skal være tilfældige. Der er forskellige prøveudtagningsmetoder som stratificeret prøveudtagning, simpel tilfældig prøveudtagning, klyngeprøvetagning for at få tilfældige prøver.
  2. Normal tilstand: Dataene skal opfylde denne betingelse n.p^>=10 og n.(1-p^)>=10. Det betyder i bund og grund, at vores stikprøvefordeling af stikprøvegennemsnit skal være normal, ikke skæv på nogen af ​​siderne.
  3. Uafhængige: Prøverne skal være uafhængige. Antallet af prøver skal være mindre end eller lig med 10 % af den samlede population, eller hvis prøvetagningen udføres med erstatning.

Konfidensintervaller med T-statistik

Hvad hvis stikprøvestørrelsen er relativt lille, og populationens standardafvigelse ikke er givet eller ikke kan antages? Hvordan konstruerer vi et konfidensinterval? godt, det er her t-statistik kommer ind. Den grundlæggende formel for at finde konfidensinterval her forbliver den samme med blot z* erstattet af t*. Den generelle formel er givet af

hvor S = prøvestandardafvigelse, n = antal prøver

Antag, at du var vært for en fest, og du vil estimere dine gæsters gennemsnitlige ølforbrug. Så du får en tilfældig prøve på 20 personer og målte ølforbruget. Prøvedataene er symmetriske med en gennemsnitlig 0f 1200 ml og standardafvigelse på 120 ml. Så nu ønsker du at konstruere et 95% konfidensinterval.

Så vi har prøvestd-afvigelse, antallet af prøver og prøvegennemsnit. Alt, hvad vi behøver, er t*. Så t* for et 95 % konfidensinterval med en frihedsgrad på 19(n-1 = 20-1) er 2.093. Så vores påkrævede interval er efter beregningen er (1256.16, 1143.83) med en fejlmargin på 56.16. Henvise til denne video for at vide, hvordan man læser t-tabellen.

Antagelser for CI ved hjælp af T-statistik

I lighed med tilfældet med z-statistik er der også her i tilfælde af t-statistik nogle forhold, vi skal være opmærksomme på i givne data.

  1. Prøven skal være tilfældig
  2. Prøven skal være normal. For at være normal skal stikprøvestørrelsen være større eller lig med 30, eller hvis det overordnede datasæt, dvs. populationen er nogenlunde normal. Eller hvis prøvestørrelsen er under 30, skal fordelingen være nogenlunde symmetrisk.
  3. Individuelle observationer skal være uafhængige. Det betyder, at den følger 10 %-reglen, eller at prøveudtagningen udføres med udskiftning.

Lav et T-interval for parrede data

Indtil nu har vi kun brugt data fra én stikprøve. Nu vil vi se, hvordan vi kan konstruere et t-interval for parrede data. I parrede data foretager vi to observationer på det samme individ. For eksempel at sammenligne præ- og post-testkarakterer fra studerende eller data om virkningen af ​​et lægemiddel og placebo på en gruppe personer. I parrede data fandt vi forskellen mellem de to observationer i 3. kolonne. Som sædvanlig vil vi gennemgå et eksempel for også at forstå dette koncept,

Q. En lærer forsøgte at evaluere effekten af ​​en ny læseplan på testresultatet. Nedenfor er resultaterne af observationerne.

T-interval for parrede data

                                                      billedet tilhører forfatteren

Da vi har til hensigt at finde intervaller for middelforskellen, skal vi kun bruge statistikken for forskellene. Vi vil bruge den samme formel, som vi brugte før

statistisk +- (kritisk værdi eller t-værdi) (standardafvigelse for statistik)

xd = middelværdi af forskel, Sd = prøve std afvigelse, for en 95% CI med en frihedsgrad 5 t* er givet ved 2.57. Fejlmarginen = 0.97 og konfidensintervallet (4.18,6.13).

Fortolkning: Fra ovenstående estimater, som vi kan se, indeholder konfidensintervallet ikke nul eller negative værdier. Så vi kan konkludere, at den nye læseplan havde en positiv indvirkning på elevernes prøvepræstationer. Hvis det kun havde negative værdier, kunne vi sige, at læseplanen havde en negativ indvirkning. Eller hvis det indeholdt nul, kunne der være en mulighed for, at forskellen var nul eller ingen effekt af læseplanen på testresultaterne.

Z-værdi vs T-værdi

Der er meget forvirring i starten om, hvornår man skal bruge hvad. Tommelfingerreglen er, når stikprøvestørrelsen er >= 30, og populationens standardafvigelse er kendt for at bruge z-statistik. Hvis stikprøvestørrelsen er < 30, skal du bruge t-statistik. I det virkelige liv har vi ikke befolkningsparametre, så vi vil gå med z eller t baseret på stikprøvestørrelse.

Med mindre samples (n<30) gælder den centrale LImit-sætning ikke, og en anden fordeling kaldet Students t-fordeling bruges. t-fordelingen ligner normalfordelingen, men har forskellige former afhængigt af prøvestørrelsen. I stedet for z-værdier bruges t-værdier, som er større for mindre stikprøver, hvilket giver en større fejlmargin. Da en lille prøvestørrelse vil være mindre præcis.

Konfidensintervaller med Python

Python har et stort bibliotek, der understøtter alle slags statistiske beregninger, hvilket gør vores liv en smule lettere. I dette afsnit vil vi se på data om småbørns søvnvaner. De 20 deltagere i disse observationer var sunde, opførte sig normalt og havde ingen søvnforstyrrelser. Vores mål er at analysere sengetid for småbørn, der sover og ikke sover.

Reference: Akacem LD, Simpkin CT, Carskadon MA, Wright KP Jr, Jenni OG, Achermann P, et al. (2015) Timingen af ​​døgnuret og søvnen er forskellig mellem småbørn, der sover og ikke-lurer. PLoS ONE 10(4): e0125181. https://doi.org/10.1371/journal.pone.0125181

Vi vil importere biblioteker, som vi skal bruge

import numpy som np importer pandaer som pd fra scipy.stats import t pd.set_option('display.max_columns', 30) # indstillet, så kan se alle kolonner i DataFrame-importmatematikken
df = pd.read_csv(nap_no_nap.csv) #læse data
df.head ()
Konfidensintervaller med Python

Opret to 95 % konfidensintervaller for den gennemsnitlige sengetid, et for småbørn, der sover lur, og et for småbørn, der ikke gør det. Først vil vi isolere kolonnen 'nat sengetid' for dem, der lurer ind i en ny variabel, og dem, der ikke lurer ind i en anden ny variabel. Sengetiden her er decimaliseret.

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

print(len(bedtime_nap))

print(len(sengetid_ingen_lur))

output: 15 n 5


Nu vil vi finde prøvens gennemsnitlige sengetid for lur og no_nap.

nap_mean_bedtime = sengetid_nap.mean() #20.304 no_nap_mean_bedtime = sengetid_no_nap.mean() #19.59

Nu finder vi prøvens standardafvigelse for Xnap og Xingen lur 

lur_s_sengetid = np.std(sengetid_nap,ddof=1) no_nap_s_sengetid = np.std(sengetid_ingen_lur,ddof=1)

Bemærk: ddof-parameteren er sat til 1 for prøve std dev, ellers bliver den population std dev.

Nu finder vi prøvestandardfejlen 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(sengetid_ingen_lur)) #0.2270

Så langt så godt, nu da stikprøvestørrelsen er lille, og vi ikke har en standardafvigelse af populationsandelen, vil vi bruge t*-værdien. En måde at finde t*-værdien på er ved at bruge scipy.stats t.ppf fungere. Argumenterne for t.ppf() er q = procent, df = frihedsgrad, skala = std dev, loc = middel. Da t-fordelingen er symmetrisk for et 95 % konfidensinterval, vil q være 0.975. Der henvises til denne for mere 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

Nu vil vi tilføje brikkerne for endelig at konstruere vores konfidensinterval.

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(nap_ci_minus,nap_ci_plus)

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)


output: 19.976680775477412 20.631319224522585 18.95974084563192 20.220259154368087

fortolkning: 

Ud fra ovenstående resultater konkluderer vi, at vi er 95 % sikre på, at den gennemsnitlige sengetid for småbørn, der sover, er mellem klokken 19.98 – 20.63 (pm), mens den for småbørn, der ikke sover, er mellem 18.96 – 20.22 (pm). Disse resultater er i overensstemmelse med vores forventning om, at hvis du tager en lur om dagen, vil du sove sent om natten.

Slutnoter

Så det hele handlede om simple konfidensintervaller ved hjælp af z- og t-værdier. Det er faktisk et vigtigt begreb at kende i tilfælde af enhver statistisk undersøgelse. En fantastisk inferentiel statistisk metode til at estimere populationsparametre fra stikprøvedata. Konfidensintervaller er også forbundet med hypotesetestning om, at for en 95% CI efterlader du 5% plads til anomalier. Hvis nulhypotesen falder inden for konfidensintervallet, vil p-værdien være stor, og vi vil ikke være i stand til at afvise nul. Omvendt, hvis det falder ud over, vil vi have tilstrækkeligt bevis til at afvise nul og acceptere alternative hypoteser.

Håber du kunne lide artiklen og godt nytår (:

Medierne vist i denne artikel ejes ikke af Analytics Vidhya og bruges efter forfatterens skøn.

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

Tidsstempel:

Mere fra Analyse Vidhya