Nyheter, Prylar, Android, Mobiler, Appnedladdningar, Android

En nybörjarguide till Chi-square-test i python från grunden

Följande artikel hjälper dig: En nybörjarguide till Chi-square-test i python från grunden

Tänk på att du utforskar en datauppsättning och du undrar om det finns ett samband mellan de två kategoriska variablerna? För att kontrollera detta kan du gå igenom ett effektivt statistiskt test och i detta scenario är Chi-kvadrattestet det mest lämpliga. Chi-kvadrattestet är ett av de statistiska test vi kan använda för att avgöra om det finns en korrelation mellan de kategoriska variablerna genom att analysera sambandet mellan de observerade och förväntade värdena. I den här artikeln kommer vi att diskutera Chi-square-testet och vi kommer att förstå dess implementering i Python från början genom att ta slumpmässiga data. De viktigaste punkterna som ska diskuteras i den här artikeln listas nedan.

Innehållsförteckning

  1. Vad är chi-kvadrat?
  2. Var används chi-kvadrat?
  3. Introduktion till data
  4. Implementera chi-kvadrat
  5. Yates rättelse

Låt oss börja med att förstå vad chi-kvadrattest är.

Vad är chi-kvadrat?

Chi-kvadrattestet är ett statistiskt test som används för att bestämma sambandet mellan de kategoriska variablerna/kolumnerna i datamängden. Den undersöker korrelationen mellan de variabler som inte innehåller kontinuerliga data.

Hur använder man chi-kvadrattestet?

För att använda chi-kvadrattestet kan vi ta följande steg:

  1. Definiera noll (H0) och alternativ (H1) hypotesen.
  2. Bestäm värdet på alfa (𝞪) för enligt den domän du arbetar. Helst 𝞪=0,05 betyder det att du är villig att ta 0,5% av risken/felmarginalen.
  3. Kontrollera data för Nans eller andra typer av fel.
  4. Kontrollera antagandena för testet.
  5. Utför äntligen testet och dra din slutsats om du ska förkasta eller stödja nollhypotesen (H0) .

Formeln för chi-kvadrattestet ges som:-

Var,

= chi-kvadrat

= observerat värde

= förväntat värde

Chi-kvadratformeln är en statistisk metod för att jämföra två eller flera dataprover. Den används med data som består av variabler fördelade över olika kategorier och betecknas med .

Var används chi-kvadrattestet?

Pearsons chi-kvadrattest är ett hypotestest som används för att avgöra om det finns ett signifikant samband mellan två kategoriska variabler i datan. Testet involverar två hypoteser (H0 & H1):

  • H0 : De två kategoriska variablerna har ingen relation (oberoende)
  • H1: Det finns en relation (beroende) mellan två kategoriska variabler

Så som en nollhypotes behåller vi den positiva aspekten av testet och i den alternativa hypotesen behåller vi den negativa aspekten. Den positiva aspekten av chi-square är att det inte bör finnas någon korrelation eftersom korrelation kan resultera i överanpassning av maskininlärningsalgoritmen. Det negativa är att det finns en korrelation mellan de två kategoriska kolumnerna.

I nästa avsnitt av artikeln skulle jag introducera dig till de data som vi ska implementera chi-kvadrattestet på för att se om de är samrelaterade.

Introduktion till data

Vi kommer att skapa en slumpmässig tabell för implementering av chi-kvadrattestet och kontrollera om det finns en relation mellan kolumnerna. Vi kommer att följa dessa steg för att skapa en beredskapstabell:

Steg 1: Importera bibliotek för att skapa en array och dataram:

importera numpy som np import pandor som pd

Steg 2: Skapa en array och konvertera den arrayen till dataramen:

np.random.seed(10) # Provdata slumpmässigt med fasta sannolikheter type_bottle = np.random.choice(a= [“paper”,”cans”,”glass”,”others”,”plastic”]p = [0.05, 0.15 ,0.25, 0.05, 0.5]storlek=1000) # Slumpmässigt urval av data med fasta sannolikheter månad = np.random.choice(a= [“January”,”February”,”March”]p = [0.4, 0.2, 0.4]storlek=1000) bottles = pd.DataFrame({“types”:type_flaska, “months”:month}) bottles_tab = pd.crosstab(bottles.types, bottles.months, margins = True) bottles_tab.columns = [“January”,”February”,”March”,”row_totals”]

bottles_tab.index = [“paper”,”cans”,”glass”,”others”,”plastic”,”col_totals”]

observerad = bottles_tab.iloc[0:5,0:3] # Få tabell utan totaler för senare användning bottles_tab

Efter att ha kört ovanstående rader med koder, skulle utdata se ut så här:

Ovanstående beredskapstabell visar de olika typerna av flaskor (kategori) som ett index som har återvunnits under januari, februari, mars. Row_total och column_total visar den totala summan av varje kategori (typ av flaskor) respektive månads totala insamling.

Implementering av chi-kvadrattestet

Låt oss implementera chi-kvadrattestet och kontrollera kolumnernas oberoende. Så i formeln som diskuteras ovan behöver vi två saker: observerade värden och förväntas värden. Så vi måste förstå hur man beräknar dessa värden. Det observerade värdet är inget annat än originaldata.

Hur beräknar man förväntade värden?

Multiplicera radsumman till kolumnsumman och dividera med det totala antalet observationer för en cell för att få det förväntade antalet. Så för att beräkna det förväntade antalet i python måste vi använda funktionen np.outer() på radtotal och kolumntotal. Äntligen, dividera utdata från funktionen np.outer() med observationer.

Nu, som förklarat, låt oss koda ovanstående förklaring i python.

förväntat = np.outer(flaskor_tab[“row_totals”][0:5]bottles_tab.loc[“col_totals”][0:3]) / 1000 förväntade = pd.DataFrame(expected) expected.columns = [“Janurary”,”Feburary”,”March”]förväntat.index = [“paper”,”cans”,”glass”,”others”,”plastic”]

förväntas

Här kommer vi att skriva formeln i python för att beräkna det statiska chi-kvadratvärdet.

chi_squared_stat = (((observerad-förväntad)**2)/expected).sum().sum() print(chi_squared_stat)

Notera: Vi anropar .sum() två gånger, en gång för att få kolumnsummorna och en andra gång för att lägga samman kolumnsummorna, vilket returnerar summan av hela 2D-tabellen.

Därefter kommer vi att beräkna p-värdet och det kritiska värdet som hjälper till att acceptera eller förkasta nollhypotesen.

kritisk_värde= chi2.ppf(q = 0,95, # Hitta det kritiska värdet för 95 % konfidens* df = 8) # df= frihetsgrad print(“Kritiskt värde:”,kritiskt_värde) p_värde = 1 – chi2.cdf(x= chi_squared_stat, # Hitta p-värdet df=8) print(“P value:”,p_value)

Chi-square test i python

Notera: Frihetsgraderna för ett oberoende test är lika med produkten av antalet kategorier i varje variabel minus 1. I det här fallet har vi en 5×3 tabell så df = 4×2 = 8.

I ovanstående förklaringar har vi sett hur chi-kvadrattest fungerar. Det kan göras med en snabb metod med bara en enda rad kod, som anges nedan, utan att göra alla ovanstående steg:

scipy.stats.chi2_contingency(observed= observed)

Chi-square test i python

Slutligen får vi ett p-värde på 0,51847 som är större än 0,5. Därför kommer vi att acceptera nollhypotesen som säger att det inte finns något samband mellan funktionerna. Testresultatet upptäcker inget signifikant samband mellan variablerna.

Yates rättelse

I ovanstående förklaring av Pearsons chi-kvadratformel var det ett fel som korrigerades av Frank Yates, och det är känt som Yates korrigering eller Yates Chi-Square. Yates chi-kvadratformel ges som:

Oi = en observerad frekvens

Ei = en förväntad (teoretisk) frekvens

N = antal distinkta händelser

Yate korrigerade Pearsons chi-kvadratformel genom att subtrahera skillnaden mellan det observerade och förväntade värdet med 0,5 och resten är samma som föregående.

För att använda Yates chi-kvadrattest kan vi skriva följande kodrad:

scipy.stats.chi2_contingency(df, korrigering=Sant) #“correction=True” för att tillämpa Yates korrigering

Slutsats

För att analysera sambandet mellan variabler i datamängden genomförde vi ett chi-kvadrattest för oberoende i den här artikeln. Vi använde SciPy och började med data från grunden. Vi kan lära oss hur man implementerar detta test praktiskt och hur man drar slutsatser om data.

Hoppas du har gillat att läsa den här artikeln 🙂

Referenser

  1. Länk till ovanstående koder
  2. Scipy dokumentation