Frecvențe și tabele încrucișate
Această secțiune descrie crearea de tabele de frecvență și de contingență din variabile categorice, împreună cu teste de independență, măsuri de asociere și metode de afișare grafică a rezultatelor.
Generarea tabelelor de frecvență
R oferă multe metode de creare a tabelelor de frecvență și de contingență. Trei dintre ele sunt descrise mai jos. În exemplele următoare, să presupunem că A, B și C reprezintă variabile categorice.
table
Puteți genera tabele de frecvențe cu ajutorul funcției table( ), tabele de proporții cu ajutorul funcției prop.table( ) și frecvențe marginale cu ajutorul funcției margin.table( ).
# 2-Way Frequency Table
attach(mydata)
mytable <- table(A,B) # A will be rows, B will be columns
mytable # print table
margin.table(mytable, 1) # A frequencies (summed over B)
margin.table(mytable, 2) # B frequencies (summed over A)
prop.table(mytable) # cell percentages
prop.table(mytable, 1) # row percentages
prop.table(mytable, 2) # column percentages
table( ) poate genera, de asemenea, tabele multidimensionale bazate pe 3 sau mai multe variabile categorice. În acest caz, utilizați funcția ftable( ) pentru a imprima rezultatele într-un mod mai atractiv.
# 3-Way Frequency Table
mytable <- table(A, B, C)
ftable(mytable)
Table ignoră valorile lipsă. Pentru a include NA ca o categorie în numărători, includeți opțiunea de tabel exclude=NULL dacă variabila este un vector. Dacă variabila este un factor, trebuie să creați un nou factor folosind newfactor <- factor(oldfactor, exclude=NULL).
xtabs
Funcția xtabs( ) vă permite să creați tablouri încrucișate folosind intrări de tip formulă.
# 3-Way Frequency Table
mytable <- xtabs(~A+B+c, data=mydata)
ftable(mytable) # print table
summary(mytable) # chi-square test of indepedence
Dacă o variabilă este inclusă în partea stângă a formulei, se presupune că este un vector de frecvențe (util în cazul în care datele au fost deja tabulate).
Crosstable
Funcția CrossTable( ) din pachetul gmodels produce tabele încrucișate modelate după PROC FREQ din SAS sau CROSSTABS din SPSS. Are o multitudine de opțiuni.
# 2-Way Cross Tabulation
library(gmodels)
CrossTable(mydata$myrowvar, mydata$mycolvar)
Există opțiuni pentru a raporta procente (rând, coloană, celulă), pentru a specifica zecimale, pentru a produce teste de independență Chi pătrat, Fisher și McNemar, pentru a raporta valorile așteptate și reziduale (pearson, standardizate, standardizate ajustate), pentru a include valorile lipsă ca fiind valide, pentru a adnota cu titluri de rânduri și coloane și pentru a formata ca ieșire în stil SAS sau SPSS!
Vezi help(CrossTable) pentru detalii.
Teste de independență
Testul Chi-Square
Pentru tabelele cu două direcții puteți utiliza chisq.test(mytable) pentru a testa independența variabilelor de rând și coloană. În mod implicit, valoarea p este calculată din distribuția asimptotică chi-pătrat a statisticii testului. Opțional, valoarea p poate fi derivată prin simultarea Monte Carlo.
Fisher Exact Test
fisher.test(x) oferă un test exact de independență. x este un tabel de contingență bidimensional sub formă de matrice.
Test Mantel-Haenszel
Utilizați funcția mantelhaen.test(x) pentru a efectua un test chi pătrat Cochran-Mantel-Haenszel al ipotezei nule că două variabile nominale sunt condițional independente în fiecare strat, presupunând că nu există o interacțiune în trei direcții. x este un tabel de contingență tridimensional, în care ultima dimensiune se referă la straturi.
Modele loglineare
Puteți utiliza funcția loglm( ) din pachetul MASS pentru a produce modele log-lineare. De exemplu, să presupunem că avem un tabel de contingență în trei direcții bazat pe variabilele A, B și C.
library(MASS)
mytable <- xtabs(~A+B+C, data=mydata)
Potem efectua următoarele teste:
Independență mutuală: A, B și C sunt independente pe perechi. loglm(~A+B+C, mytable)
Independență parțială: A este parțial independentă de B și C (de exemplu, A este independentă de variabila compozită BC). loglin(~A+B+C+B*C, mytable)
Independență condiționată: A este independentă de B, având în vedere C. loglm(~A+B+C+A*C+B*C, mytable)
Nici o interacțiune în trei direcții loglm(~A+B+C+A*B+A*C+B*C, mytable)
Martin Theus și Stephan Lauer au scris un articol excelent despre vizualizarea modelelor loglineare, folosind diagrame mozaic.
Măsuri de asociere
Funcția assocstats(mytable) din pachetul vcd calculează coeficientul phi, coeficientul de contingență și V-ul lui Cramer pentru un tabel rxc. Funcția kappa(mytable) din pachetul vcd calculează kappa lui Cohen și kappa ponderat pentru o matrice de confuzie. Consultați articolul lui Richard Darlington privind măsurile de asociere în tabelele încrucișate (Measures of Association in Crosstab Tables) pentru o analiză excelentă a acestor statistici.
Vizualizarea rezultatelor
Utilizați diagrame cu bare și diagrame circulare pentru vizualizarea frecvențelor într-o singură dimensiune.
Utilizați pachetul vcd pentru vizualizarea relațiilor dintre datele categorice (de exemplu, diagrame mozaic și de asociere).
Utilizați pachetul ca pentru analiza corespondenței (explorarea vizuală a relațiilor dintre rânduri și coloane în tabelele de contingență).
Pentru a exersa realizarea acestor diagrame, încercați cursul de vizualizare a datelor de la DataCamp.
Conversia tabelelor de frecvență într-un fișier plat „original”
În cele din urmă, pot exista momente în care veți avea nevoie de cadrul de date original „flat file” mai degrabă decât de tabelul de frecvență. Marc Schwartz a furnizat cod pe lista de discuții Rhelp pentru conversia unui tabel înapoi într-un cadru de date.
.
Leave a Reply