頻度とクロスタブ

このセクションでは、独立性の検定、関連性の測定、および結果をグラフで表示する方法とともに、カテゴリ変数から頻度と分割表を作成することを説明します。

度数表の作成

R には度数表と分割表を作成するための多くのメソッドがあります。 以下に3つを説明する。 以下の例では、A、B、Cがカテゴリ変数を表すとします。

table

頻度表はtable( )関数で、比率表はprop.table( )関数で、周辺度数は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( ) は3つ以上のカテゴリー変数に基づいた多次元表も生成することができます。 この場合、結果をより魅力的に表示するためにftable()関数を使用します。

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

表は欠損値を無視する。 カウントのカテゴリとしてNAを含めるには、変数がベクトルであればテーブル・オプションexclude=NULLを含めます。 変数が factor の場合、newfactor <- factor(oldfactor, exclude=NULL) を使用して新しい factor を作成する必要があります。

xtabs

xtabs()関数は、数式スタイルの入力を使ってクロス集計を作成することができるようにするものです。

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

式の左側に変数が含まれている場合、それは頻度のベクトルであると見なされます (データがすでに集計されている場合に便利です)。

クロステーブル

gmodelsパッケージのCrossTable()関数は、SASのPROC FREQやSPSSのCROSSTABSに倣ったクロス集計を行うことができます。 2329>

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

パーセントを報告するオプション(行、列、セル)、小数点以下を指定、独立性のカイ二乗、フィッシャー、マクネマー検定を生成、期待値と残差値(標準化、標準化調整)を報告、欠損値を有効として含む、行と列のタイトルで注釈、SAS または SPSS 形式の出力としてフォーマット!

この関数には、豊富なオプションが含まれているため、これらのオプションを使用することで、より効果的な結果を得ることができます。
詳細はhelp(CrossTable)を参照してください。

独立性の検定

カイ二乗検定

2元表では chisq.test(mytable) を使って行と列変数の独立性を検定することができます。 デフォルトでは、p値は検定統計量の漸近的カイ二乗分布から計算されます。 オプションとして、p-値はモンテカルロシミュレーションによって導出することができます。

Fisher Exact Test

fisher.test(x) は独立性の正確な検定を提供するもので、xは行列形式の2次元分割表である。

Mantel-Haenszel 検定

mantelhaen.test(x) 関数は、三元交互作用がないとして、二つの名目変数が各層で条件付き独立であるという帰無仮説のコクラン・マンテル・ヘーンゼル カイ2乗検定を実行するために使用します。

対数線形モデル

MASSパッケージのloglm( )関数を使って対数線形モデルを作成することができる。 例えば、変数A、B、Cに基づく3元分割表があるとする。

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

以下の検定を行うことができる:

相互独立性。 A、B、Cは一対一で独立である。 loglm(~A+B+C, mytable)

部分独立性。 AはBとCから部分的に独立である(すなわち、Aは複合変数BCから独立である)。 loglin(~A+B+C+B*C, mytable)

条件付き独立性(Conditional Independence)。 AはCが与えられればBから独立する。 loglm(~A+B+C+A*C+B*C, mytable)

三元交互作用なし loglm(~A+B+C+A*B+A*C+B*C, mytable)

Martin Theus と Stephan Lauer は、モザイクプロットを使った Loglinear モデルの視覚化について優れた記事を書いている。

Measures of Association

vcd パッケージの assocstats(mytable) 関数は rxc テーブルに対してファイ係数、分割係数、CramerのVを計算する。 vcd パッケージの kappa(mytable) 関数は、混同行列の Cohen’s kappa と重み付き kappa を計算します。 これらの統計の優れたレビューについては、Richard Darlingtonの記事「Measures of Association in Crosstab Tables(クロスタブ表における関連性の測定)」を参照してください。

結果の可視化

一次元での頻度を可視化するために棒グラフと円グラフを使用します。

カテゴリカルデータ間の関係を視覚化するためにvcdパッケージを使用する(例:モザイクやアソシエーションプロット)

対応分析(分割表における行と列間の関係を視覚的に探索)にcaパッケージを使用する。

これらのグラフを作成する練習をするには、DataCamp のデータ可視化コースを試してください。

頻度表を「元の」フラットファイルに変換する

最後に、頻度表ではなく、元の「フラットファイル」データフレームが必要になる場合があるかもしれません。 Marc Schwartz は Rhelp メーリングリストにおいて、テーブルをデータフレームに戻すコードを提供しています

Leave a Reply