Częstości i tabele krzyżowe

W tej sekcji opisano tworzenie tabel częstości i tabel kontyngencji ze zmiennych kategorycznych, wraz z testami niezależności, miarami asocjacji i metodami graficznego przedstawiania wyników.

Generowanie tabel częstości

R zapewnia wiele metod tworzenia tabel częstości i tabel kontyngencji. Trzy z nich zostały opisane poniżej. W poniższych przykładach załóżmy, że A, B i C reprezentują zmienne kategoryczne.

tablica

Możesz wygenerować tablice częstości używając funkcji table( ), tablice proporcji używając funkcji prop.table( ) oraz częstotliwości krańcowe używając 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( ) może również generować tablice wielowymiarowe oparte na 3 lub więcej zmiennych kategorycznych. W tym przypadku należy użyć funkcji ftable( ), aby wydrukować wyniki w bardziej atrakcyjny sposób.

# 3-Way Frequency Table
mytable <- table(A, B, C)
ftable(mytable)

Tablica ignoruje brakujące wartości. Aby uwzględnić NA jako kategorię w zliczeniach, dołącz opcję tabeli exclude=NULL, jeśli zmienna jest wektorem. Jeśli zmienna jest czynnikiem, musisz utworzyć nowy czynnik używając newfactor <- factor(oldfactor, exclude=NULL).

xtabs

Funkcja xtabs( ) pozwala na tworzenie tabel krzyżowych przy użyciu danych wejściowych w stylu formuły.

# 3-Way Frequency Table
mytable <- xtabs(~A+B+c, data=mydata)
ftable(mytable) # print table
summary(mytable) # chi-square test of indepedence

Jeśli po lewej stronie formuły znajduje się zmienna, przyjmuje się, że jest ona wektorem częstości (przydatne, jeśli dane zostały już zestawione w tabelach).

Crosstable

Funkcja CrossTable( ) w pakiecie gmodels tworzy tabelę krzyżową wzorowaną na PROC FREQ w SAS lub CROSSTABS w SPSS. Posiada wiele opcji.

# 2-Way Cross Tabulation
library(gmodels)
CrossTable(mydata$myrowvar, mydata$mycolvar)

Istnieją opcje raportowania wartości procentowych (wiersz, kolumna, komórka), określania miejsc dziesiętnych, tworzenia testów niezależności Chi-square, Fishera i McNemara, raportowania wartości oczekiwanych i resztowych (pearson, standaryzowanych, skorygowanych standaryzowanych), uwzględniania brakujących wartości jako ważnych, dodawania adnotacji z tytułami wierszy i kolumn oraz formatowania jako dane wyjściowe w stylu SAS lub SPSS!
Zobacz help(CrossTable) po szczegóły.

Testy niezależności

Test Chi-Square

Dla tabel dwukierunkowych możesz użyć chisq.test(mytable) aby przetestować niezależność zmiennej wierszowej i kolumnowej. Domyślnie wartość p jest obliczana na podstawie asymptotycznego rozkładu chi-kwadrat statystyki testowej. Opcjonalnie wartość p może być wyliczona za pomocą symulacji Monte Carlo.

Test dokładny Fishera

fisher.test(x) zapewnia dokładny test niezależności. x jest dwuwymiarową tablicą kontyngencji w postaci macierzy.

Test Mantela-Haenszela

Użyj funkcji mantelhaen.test(x), aby wykonać test chiquared Cochrana-Mantela-Haenszela hipotezy zerowej, że dwie zmienne nominalne są warunkowo niezależne w każdej warstwie, przy założeniu, że nie ma trójstronnej interakcji. x jest trójwymiarową tabelą kontyngencji, gdzie ostatni wymiar odnosi się do warstw.

Modele log-liniowe

Możesz użyć funkcji loglm( ) w pakiecie MASS, aby utworzyć modele log-liniowe. Na przykład, załóżmy, że mamy 3-kierunkową tabelę kontyngencji opartą na zmiennych A, B i C.

library(MASS)
mytable <- xtabs(~A+B+C, data=mydata)

Możemy wykonać następujące testy:

Niezależność wzajemna: A, B, i C są parami niezależne. loglm(~A+B+C, mytable)

Niezależność częściowa: A jest częściowo niezależne od B i C (tzn. A jest niezależne od zmiennej złożonej BC). loglin(~A+B+C+B*C, mytable)

Niezależność warunkowa: A jest niezależne od B, biorąc pod uwagę C. loglm(~A+B+C+A*C+B*C, mytable)

No Three-Way Interaction loglm(~A+B+C+A*B+A*C+B*C, mytable)

Martin Theus i Stephan Lauer napisali doskonały artykuł na temat wizualizacji modeli log-liniowych, używając działek mozaikowych.

Measures of Association

Funkcja assocstats(mytable) w pakiecie vcd oblicza współczynnik phi, współczynnik kontyngencji i V Cramera dla tabeli rxc. Funkcja kappa(mytable) w pakiecie vcd oblicza kappa Cohena i ważoną kappa dla macierzy konfuzji. Zobacz artykuł Richarda Darlingtona na temat Measures of Association in Crosstab Tables, aby uzyskać doskonały przegląd tych statystyk.

Wizualizowanie wyników

Użyj wykresów słupkowych i kołowych do wizualizacji częstości w jednym wymiarze.

Użyj pakietu vcd do wizualizacji związków między danymi kategorycznymi (np. wykresy mozaikowe i asocjacyjne).

Użyj pakietu ca do analizy korespondencji (wizualne badanie związków między wierszami i kolumnami w tabelach kontyngencji).

Aby przećwiczyć tworzenie tych wykresów, wypróbuj kurs wizualizacji danych na DataCamp.

Konwersja tabel częstości do „oryginalnego” pliku płaskiego

Na koniec, może się zdarzyć, że będziesz potrzebował oryginalnego „płaskiego pliku” danych zamiast tabeli częstości. Marc Schwartz udostępnił na liście mailingowej Rhelp kod do konwersji tabeli z powrotem do ramki danych.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.