Częstości i tabele krzyżowe
Ta sekcja opisuje tworzenie tabel częstości i tabel kontyngencji ze zmiennych kategorycznych, wraz z testami niezależności, miarami asocjacji i metodami graficznego wyświetlania 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( ) i 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żeli zmienna jest zawarta po lewej stronie formuły, zakłada się, że jest ona wektorem częstości (użyteczne, jeżeli 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), włączania 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 testu. Opcjonalnie wartość p może być wyliczona przez symulację 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, zakładając, ż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 loglinearnych, 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 dla doskonałego przeglądu tych statystyk.
Wizualizowanie wyników
Używaj wykresów słupkowych i kołowych do wizualizacji częstotliwości w jednym wymiarze.
Użyj pakietu vcd do wizualizacji zależności między danymi kategorycznymi (np. wykresy mozaikowe i asocjacyjne).
Użyj pakietu ca do analizy korespondencji (wizualne badanie zależności między wierszami i kolumnami w tabelach kontyngencji).
Aby przećwiczyć tworzenie tych wykresów, spróbuj kursu wizualizacji danych na DataCamp.
Konwersja tabel częstości do „oryginalnego” pliku płaskiego
W końcu, 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.
Leave a Reply