您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 资本运营 > R语言学习系列24-频率表和列联表
22.频率表和列联表分类变量包括无序分类变量、有序分类变量。对于分类变量的描述统计,主要是对分类变量各水平值分别进行频数和比例计算,再进步计算所需的一些相对频数指标。一、一维列联表1.频数统计分类变量的分析,首先要了解:各类别的样本数(频数),以及占总样本量的百分比;对有序分类变量,还需要了解:累积频数、累积百分比。使用table()函数生成简单的频数统计表,基本格式为:table(var1,var2,…,varN)将N个分类变量(因子)创建一个N维列联表。library(vcd)#使用数据集Arthritishead(Arthritis,3)IDTreatmentSexAgeImproved157TreatedMale27Some246TreatedMale29None377TreatedMale30Nonemytable-table(Arthritis$Improved)#统计频数mytableNoneSomeMarked421428prop.table(mytable)#将频数转化为比例值NoneSomeMarked0.50000000.16666670.3333333prop.table(mytable)*100#将频数转化为百分比NoneSomeMarked50.0000016.6666733.333332.集中/离散趋势观察原始频数,或者使用众数。对于分类变量,集中/离散趋势是一体的。3.相对频数指标(1)比(Riatio)两个有关指标之比A/B,用来反映相对的大小关系,例如,月销售额/销售人数;(2)构成比用于描述事物内部各构成部分所占的比重,例如,百分比、累积百分比;(3)率(Rate)率是具有时间概念或速度、强度意义的指标,表示某个时期内某事件发生的频率或强度,例如速率、频率、费率、发病率等。二、二维列联表1.r×c二维列联表:(1)共n个样本;(2)按两种属性A、B,属性A有r个水平值:A1,…,Ar;属性B有c个水平值:B1,…,Bc.属性A=Ai,属性B=Bj的样本数为nij.(3)ni.=“属性A=Ai”的合计数,n.j=“属性B=Bj”的合计数。注:多分类变量对应高维列联表。生成二维列联表使用函数table(),基本格式为:table(A,B)其中,A为行变量,B为列变量。或者使用函数xtabs(),基本格式为:xtabs(~A+B,data=mydata)其中,mydata为矩阵或数据框;要进行交叉分类的变量放在~右侧,以+作为分隔符,若某个变量写在~左侧,则为频数向量,常用于数据已经被表格化时。注:table函数默认忽略NA值,若要将NA值作为一个类别,需要使用参数useNA=ifanymytable-xtabs(~Treatment+Improved,data=Arthritis)#生成治疗方法与疗效的二维列联表(频数)mytableImprovedTreatmentNoneSomeMarkedPlacebo2977Treated13721prop.table(mytable)#各单元格占的比例(所有行列总和=1)ImprovedTreatmentNoneSomeMarkedPlacebo0.345238100.083333330.08333333Treated0.154761900.083333330.25000000margin.table(mytable,1)#对第1个变量(行变量)生成边际频数TreatmentPlaceboTreated4341prop.table(mytable,1)#对第1个变量(行变量)生成边际比例(每行和=1)ImprovedTreatmentNoneSomeMarkedPlacebo0.67441860.16279070.1627907Treated0.31707320.17073170.5121951#可见与安慰剂组相比,治疗组的治愈率从16%提高到51%margin.table(mytable,2)#对第2个变量(列变量)生成边际频数ImprovedNoneSomeMarked421428prop.table(mytable,2)#对第2个变量(列变量)生成边际比例(每列和=1)ImprovedTreatmentNoneSomeMarkedPlacebo0.69047620.50000000.2500000Treated0.30952380.50000000.7500000addmargins(mytable)#将边际求和结果添加到表格(频数)ImprovedTreatmentNoneSomeMarkedSumPlacebo297743Treated1372141Sum42142884addmargins(prop.table(mytable))#将边际求和结果添加到表格(比例)ImprovedTreatmentNoneSomeMarkedSumPlacebo0.345238100.083333330.083333330.51190476Treated0.154761900.083333330.250000000.48809524Sum0.500000000.166666670.333333331.00000000addmargins(prop.table(mytable,1),2)#只添加列边际ImprovedTreatmentNoneSomeMarkedSumPlacebo0.67441860.16279070.16279071.0000000Treated0.31707320.17073170.51219511.0000000addmargins(prop.table(mytable,2),1)#只添加行边际ImprovedTreatmentNoneSomeMarkedPlacebo0.69047620.50000000.2500000Treated0.30952380.50000000.7500000Sum1.00000001.00000001.00000002.gmodels包中的函数CrossTable()该函数仿照SAS中PROCFREQ或SPSS中CROSSTABS的形式生成二维列联表。它有很多选项,可以做许多事情:计算(行、列、单元格)的百分比;指定小数位数;进行卡方、Fisher和McNemar独立性检验;计算期望和(皮尔逊、标准化、调整的标准化)残差;将缺失值作为一种有效值;进行行和列标题的标注;生成SAS或SPSS风格的输出。library(gmodels)CrossTable(Arthritis$Treatment,Arthritis$Improved)三、多维列联表table()和xtabs()都可以基于三个或更多的分类变量(因子)生成多维列联表。margin.table()、prop.table()和addmargins()函数也可类似推广到多维。另外,ftable()函数可以用一种紧凑的“平铺式”输出多维列联表。mytable-xtabs(~Treatment+Sex+Improved,data=Arthritis)mytable,,Improved=NoneSexTreatmentFemaleMalePlacebo1910Treated67,,Improved=SomeSexTreatmentFemaleMalePlacebo70Treated52,,Improved=MarkedSexTreatmentFemaleMalePlacebo61Treated165ftable(mytable)ImprovedNoneSomeMarkedTreatmentSexPlaceboFemale1976Male1001TreatedFemale6516Male725margin.table(mytable,1)#边际频数TreatmentPlaceboTreated4341margin.table(mytable,2)SexFemaleMale5925margin.table(mytable,3)ImprovedNoneSomeMarked421428margin.table(mytable,c(1,3))#相当于1:治疗方法×3:疗效的二维列联表ImprovedTreatmentNoneSomeMarkedPlacebo2977Treated13721ftable(prop.table(mytable,c(1,2)))#紧凑形式显示1:治疗方法×2:性别的各类疗效情况(比例)ImprovedNoneSomeMarkedTreatmentSexPlaceboFemale0.593750000.218750000.18750000Male0.909090910.000000000.09090909TreatedFemale0.222222220.185185190.59259259Male0.500000000.142857140.35714286ftable(addmargins(prop.table(mytable,c(1,2)),3))#继续给第3变量添加边际ImprovedNoneSomeMarkedSumTreatmentSexPlaceboFemale0.593750000.218750000.187500001.00000000Male0.909090910.000000000.090909091.00000000TreatedFemale0.222222220.185185190.592592591.00000000Male0.500000000.142857140.357142861.00000000ftable(addmargins(prop.table(mytable,c(1,2)),3))*100#继续改成百分比ImprovedNoneSomeMarkedSumTreatmentSexPlaceboFemale59.37500021.87500018.750000100.000000Male90.9090910.0000009.090909100.000000TreatedFemale22.22222218.51851959.259259100.000000Male50.00000014.28571435.714286100.0000002.多维列联表的图形展示——马赛克图单个分类变量,可以使用柱状图或者饼图;若存在两个分类变量,可以使用三维柱状图;两个以上的分类变量可以使用马赛克图。马赛克图中,嵌套矩形面积正比于单元格频率,其中该频率即多维列联表中的频率。颜色和/或阴影可表示拟合模型的残差值。使用mosaic()函数,基本格式为:mosaic(table)其中,table为数组形式的列联表;或者用mosaic(formula,data=)其中,formula为形如~var1+var2+…的公式,data为数据框或表格;可选项shade=TRUE将根据拟合模型的皮尔逊残差值对图形上色;legend=TRUE将展示残差的图例。library(vcd)ftable(Titanic)SurvivedNoYesClassSexAge1stMaleChild05Adult11857FemaleChild01Adult41402ndMaleChild011Adult15414FemaleChild013Adult13803rdMaleChild3513Adult38775FemaleChild1714Adult8976CrewMaleChild00Adult670192FemaleChild00Adult320mosaic(Titanic,shade=TRUE,legend=TRUE)mosaic(~Class+Sex+Age+Survived,data=Titanic,shade=TRUE,legend=TRUE)#上面两种代码效果相同上图为按船舱等级、乘客性别和年龄层绘制的泰坦尼克号幸存者的马赛
本文标题:R语言学习系列24-频率表和列联表
链接地址:https://www.777doc.com/doc-3888369 .html