列联表是观测数据按两个或更多属性(定性变量)分类时所列出的频数分布表,它是由两个以上的变量进行交叉分类的频数分布表。交互分类的目的是将两变量分组,然后比较各组的分布状况,以寻找变量间的关系。

按两个变量交叉分类的,该列联表称为两维列联表;若按3个变量交叉分类,所得的列联表称为3维列联表,依次类推。一维列联表就是频数分布表。频数就是各个分组中属性出现的次数。

频数也称“次数”,对样本数据按某些属性进行分组,统计出各个组内含个体的个数,就是频数。

本文使用vcd包中的Arthritis数据集来演示如何创建列联表。

一,创建频数表

频数表用于探索类别型变量,常用table()和 xtabs()来创建频数表:

table(var1, var2, ...,varN)

xtabs(formula, data)

参数注释:

table()函数:使用N个类别变量(因子)创建一个N维列联表,

xtabs()函数:根据一个公式(~var1+var2+...+varN)创建一个N维列联表。

总体来说,要进行交叉分类的变量应出现在公式的右侧,即 ~ 符号的右方,以+  作为分割符。本文重点介绍一维列联表和二维列联表,对于高维列联表,不做介绍。

函数prop.table()以列联表作为参数,以margins定义的边际把列联表中的频数表示为比例关系。

prop.table(table,margins)

参数注释:table是列联表,margins是边际列表,1是第一个分类变量,2是第二个分类变量

函数margin.table()以列联表作为参数,以margins定义的边际列表来计算频数的和。

margin.table(table,margins)

参数注释:table是列联表,margins是边际列表,1是第一个分类变量,2是第二个分类变量

1,创建一维列联表

一维列联表是根据一个分类变量列出变量各个值得频数:

with(Arthritis,table(Improved))

xtabs(~Improved,data=Arthritis)

Improved是分类得变量名,None、Some和Marked是变量的值,数值是各个变量值出现的次数(频数)。

Improved

None Some Marked42 14 28

2,创建二维列联表

二维列联表是指按照两个分类变量列出的频数表:

with(Arthritis,table(Improved,Sex))

xtabs(~Improved+Sex,data=Arthritis)

Sex和Improved是分类的变量名,两个分类交叉分类,查看两个分类之间的关系:

Sex

Improved Female Male

None25 17Some12 2Marked22 6

3,把列联表的频数转换为比例值

使用prop.table(),把列联表的频数转换为比例值

mytable

prop.table(mytable)

Sex

Improved Female Male

None0.29761905 0.20238095Some0.14285714 0.02380952Marked0.26190476 0.07142857

4,计算列联表的边际列表的和

使用margin.table(),按照边际列表计算列联表的频数之和

mytable

margin.table(mytable,1)

Improved

None Some Marked42 14 28

二,自定义区间

按照分类变量来计算频数,有时不能满足需要,例如,按照年龄段来计算频数,每10年为一个年纪段,统计各个年龄段的人数。由于Arthritis数据集中并没有该分类变量,这就需要自定义区间,按照分组的间隔来制作频数分布表。

我从网上找到一个制作频率分布表的步骤,总共4步。

制作频率分布表的步骤如下:

1.求全距(全距亦称极差):从数据中找出最大值Max和最小值Min,并求出它们的差,本例中最大值Max=100,最小值Min=42,故全距为Max-Min=100-42=58,从全距可以初步了解数据的差异幅度,同时亦为决定组距与组数提供了依据。

2.决定组距与组数:组数D和组距K之间有关系式D>=(Max- Min)/K,本例中取K=5,则D= (Max-Min)/K=58/5,向上取整为12,故分为12组。

3.决定组限:组限就是表明每组两端的数值,其中每组的起点数值称为下限RL,终点数值称为上限RU,上限和下限也是数据的分点,通常区间是左闭右开型的:[RL ,RU)

4.制作频率分布表:其中落在各个小组内的数据个数即为频数(或称次数),常用f表示,每一小组的频数与样本容量的比值即为频率。

step1,求极差

最大值是74,最小值是23,极差是51

age_range

step2,决定组距和组数

把组距定为10,那么组数是6(不小于 51/10 的最小整数)

step3,决定分点

使用cut()函数来分割Age数据,设置断点向量breaks,以及每个区间的名称lables:

labels = 70")

breaks

step4,制作频数分布表

使用cut()函数按照指定的断点来分割数据,得到各个分组,使用table()函数得到频数表:

mytable

df

#names(df)[1]

cut()函数返回的是mytable的类型是因子,也就是说,cut()函数返回的结果是因子向量:

class(mytable)

[1] "factor"

查看频数分布表,按照Age(把mytable重命名为Age)因子进行分组,统计各个因子属性值的频数:

>table(Age=mytable)

Age< 30 30 - 40 40 - 50 50 - 60 60 - 70 >= 70

7 8 12 29 27 1

把频数分布表转换为数据框,得到二维表如下图所示:

>df

Age Freq1 < 30 7

2 30 - 40 8

3 40 - 50 12

4 50 - 60 29

5 60 - 70 27

6 >= 70 1

step5,列出频率分布表

列出频率分布表,包括累积频数和累计频率

df

df

df

查看频率分布表:

Age Freq cumFreq FreqRate cumFreqRate1 < 30 7 7 8.33 8.33

2 30 - 40 8 15 9.52 17.86

3 40 - 50 12 27 14.29 32.14

4 50 - 60 29 56 34.52 66.67

5 60 - 70 27 83 32.14 98.81

6 >= 70 1 84 1.19 100.00

参考文档:

rc列联表_R实战 第十篇:列联表和频数表相关推荐

  1. spring boot实战(第十篇)Spring boot Bean加载源码分析

    前言 前面的文章描述了Application对应Bean的创建,本篇将阐述spring boot中bean的创建过程 refresh 首先来看SpringApplication#run方法中refre ...

  2. r语言的runmed函数_R实战 第五篇:常用函数的用法

    Basic包是R语言预装的开发包,包含了常用的数据处理函数,可以对数据进行简单地清理和转换,也可以在使用其他转换函数之前,对数据进行预处理,必须熟练掌握常用的数据处理函数. 一,合并向量 函数appe ...

  3. 微信小程序商城项目实战(第十篇:订单管理)

    订单管理 订单页面 分析 代码实现 效果图展示 订单详情页 分析 详解 效果图 付完款的 未付款的 订单页面 分析 顶部改为"我的订单" 上方为导航栏:全部.待付款.待发货.退款/ ...

  4. rc列联表_R语言入门之频率表和列联表

    在这一期我们将要学习如何针对分类变量数据创建频率表和列联表,并且在此基础之上进行独立性检验.关联度测量以及相关数据的可视化. 创建频率表和列联表 R语言提供了许多方法来创建频率表和列联表,在这里我们主 ...

  5. [原创].NET 业务框架开发实战之十 第一阶段总结,深入浅出,水到渠成(前篇)...

    .NET 业务框架开发实战之十 第一阶段总结,深入浅出,水到渠成(前篇) 前言:这个系列有段时间没有动了.主要是针对大家的反馈在修改代码.在修改的过程中,也有了一些新的体会,这里和大家分享一下,同时也 ...

  6. [原创].NET 业务框架开发实战之十 第一阶段总结,深入浅出,水到渠成(后篇)...

    .NET 业务框架开发实战之十 第一阶段总结,深入浅出,水到渠成(后篇) 前言:接着上篇来. 系列文章链接: [原创].NET 分布式架构开发实战之一 故事起源 [原创].NET 分布式架构开发实战之 ...

  7. 搜索推荐系统实战:进化篇

    搜索推荐系统实战篇-中篇 一切源于炼丹笔记,我只是敲了敲代码. 搜索推荐系统实战:起始篇 搜索推荐系统实战:进化篇 搜索推荐系统实战:终极奥秘 此处我们假设模型训练的大的框架已经固定,同时数据采样的方 ...

  8. Dapr + .NET 实战(十四)虚拟机集群部署 mDNS + Consul

    前面我们说了在单机模式下和K8S集群下的Dapr实战,这次我们来看看如何在不使用K8S的情况下,在一个传统的虚拟机集群里来部署Dapr. 1.环境准备 我们准备两台centos7虚拟机 Dapr1:1 ...

  9. Dapr + .NET 实战(十二)服务调用之GRPC

    欢迎大家参加4小时Dapr+.NET 5的实战课程 课程链接     https://ke.qq.com/course/4000292?tuin=1271860f 什么是GRPC gRPC 是一种与语 ...

最新文章

  1. 看看Vector源码Java 9
  2. Eclipse运行时无法加载主类的解决方法
  3. 正则表达式限制文本框只能输入数字,小数点,英文字母,汉字
  4. Swagger UI
  5. IE 11 和360浏览器不能安装网银控件
  6. BouncyCastle - Java加密与安全
  7. linux got分析,聊聊Linux动态链接中的PLT和GOT(3)——公共GOT表项
  8. php 导出csv文件
  9. es6 --- String.prototype.padStart
  10. SparseArray代替HashMap
  11. 【转】SPSite、SPWeb对象模型(转winos.cn)
  12. 解决vue+axios post参数后端无法接收的问题
  13. thinkphp连接oracle
  14. Android中ICS4.0源码Launcher启动流程分析【android源码Launcher系列一】
  15. 白话 Golang pprof
  16. 超实用超全 || ZBrush笔刷大合集
  17. SAP 固定资产模块上线配置
  18. 必看!前辈们总结出的程序员找工作遇到的坑
  19. 2.2 法力池的创建和视觉特效———自制卡牌游戏之旅
  20. Mysql information_schema库

热门文章

  1. ElasticSearch重启失败的解决方案
  2. 08.jdk动态代理原理
  3. Java 消息服务(Java Message Service
  4. JEDEC标准(JESD216)S FDP对串行Flash在系统中的应用
  5. 电赛设计报告模板及历年资源
  6. 汽车毫米波雷达的规定和标准(四)
  7. 【Matlab指纹识别】指纹识别门禁系统【含GUI源码 1692期】
  8. 零起点学VB做外挂(一)
  9. Oracle查看表占用空间
  10. 基于SSM框架的图书销售系统