R语言教程之频率和交叉表Frequencies and Crosstabs
当前位置:以往代写 > R语言教程 >R语言教程之频率和交叉表Frequencies and Crosstabs
2019-06-13

R语言教程之频率和交叉表Frequencies and Crosstabs

R语言教程之频率和交叉表Frequencies and Crosstabs

本节介绍从分类变量创建频率和应急表,以及独立性测试,关联度测量和图形显示结果的方法。

生成频率表

R提供了许多创建频率和应急表的方法。下面介绍三种。在下面的例子中,假设A,B和C表示分类变量。

可以生成使用频率表表()函数,使用所述比例的表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(如果变量是矢量)。如果变量是一个因素,则必须使用newfactor < – factor(oldfactor,exclude = NULL)创建新因子。

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包产生在PROC FREQ仿照交叉制表SAS或SPSS交叉表。它有很多选择。

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

可以选择报告百分比(行,列,单元格),指定小数位数,产生卡方检验,Fisher检验和McNemar检验的独立性,报告预期值和残差值(皮尔逊,标准化,调整标准化),包括缺失值为有效,使用行和列标题进行注释,并将格式设置为SASSPSS样式输出!
有关详细信息,请参阅帮助(CrossTable)

独立测试

卡方检验

对于双向表,您可以使用chisq.test(mytable 来测试行和列变量的独立性。默认情况下,p值是从测试统计量的渐近卡方分布中计算出来的。可选地,p值可以通过蒙特卡洛模拟推导出来。

费舍尔精确测试

fisher.test(提供了一个独立性的确切测试。x是矩阵形式的二维列联表。

Mantel – Haenszel测试

使用mantelhaen.test(函数对零假设执行Cochran-Mantel-Haenszel卡方检验,假设两个名义变量在每个层中都是条件独立的,假设没有三向相互作用。x是三维列联表,其中最后一个维是指地层。

对数线性模型

您可以使用MASS包中loglm()函数来生成对数线性模型。例如,假设我们有一个基于变量A,B和C的三维列联表。

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)

条件独立: A独立于B,给定C.loglm(~A+B+C+A*C+B*C, mytable)

没有三方互动loglm(~A+B+C+A*B+A*C+B*C, mytable)

Martin Theus和Stephan Lauer 使用马赛克图写了一篇关于可视化对数线性模型的优秀文章

协会措施

vcd软件包中assocstats(mytable 函数计算rxc表的phi系数,应急系数和Cramer's V。vcd软件包中kappa(mytable)函数计算Cohen's kappa和加权kappa作为混淆矩阵。请参阅理查德达林顿关于交叉表中关联度量的文章,对这些统计数据进行精彩的回顾。

可视化结果

使用条形图饼图可以在一个维度上显示频率。

使用vcd软件包可视化分类数据之间的关系(例如镶嵌和关联图)。

使用ca软件包进行对应分析(直观地查看应急表中的行和列之间的关系)。

要练习制作这些图表,请尝试DataCamp上的数据可视化课程

将频率表转换为“原始”平面文件

最后,可能有些时候你需要原始的“平面文件”数据帧而不是频率表。Marc Schwartz在Rhelp邮件列表上提供了用于将表格转换回数据框的代码。

来源:https://www.tatvic.com

想学到更多关于R语言的,我给大家介绍一个国外比较火的网站 https://www.tatvic.com,这是一项了不起的研究!

    关键字:

在线提交作业