美文网首页数据-R语言-图表-决策-Linux-Python
描述统计学之R语言实战1:表格法

描述统计学之R语言实战1:表格法

作者: 67呀 | 来源:发表于2019-03-10 17:39 被阅读55次

    统计学是搜集、分析、表述和解释数据的科学与艺术,掌握统计学相关知识可以帮助我们更好的发现数据背后隐藏的价值,R语言是现今最受欢迎的数据分析和可视化工具之一。本篇主要介绍如何用表格法来统计分析单变量数据、两个变量的数据,并用R语言作为统计分析工具。

    数据可以分为分类型数据数量型数据,分类型数据是用标签或名称来识别项目的类型,数量型数据是表示多少或大小的数值。

    单变量的数据统计

    频数分布是一种数据的表格汇总方法,表示在几个互不重叠组别中,每一组项目的个数(即频数)。

    分类型数据统计

    先用下面的样本数据来说明如何编制和解释分类型数据的频数分布。

    1.可口可乐、健怡可乐、胡椒博士、百事可乐和雪碧是5种受欢迎的软饮料,可通过统计购买各类别饮料的次数分析它们受欢迎的程度,在R中导入“50次购买软饮料的样本数据”。

    >library(xlsx)
    > drink<-read.xlsx('/Users/liuqin/Documents/50次购买软饮料的样本数据.xlsx',1)
    > head(drink)
      购买记录 饮料类别
    1        1 可口可乐
    2        2 健怡可乐
    3        3 百事可乐
    4        4 健怡可乐
    5        5 可口可乐
    6        6 可口可乐
    

    2.使用table()函数创建一个频数分布表,表中统计了50次购买中每一种饮料出现的次数,可口可乐出现19次排在首位,百事可乐居第二位,第三位是健怡可乐,雪碧和胡椒博士并列第四。

    > drinktable<-with(drink,table(饮料类别))
    > drinktable
    饮料类别
    百事可乐 胡椒博士 健怡可乐 可口可乐     雪碧 
          13        5        8       19        5 
    

    3.也可以将频数转化为相对频数分布百分数频数分布,可以得到每一种饮料在购买的饮料所占比例,可口可乐受欢迎程度最高,所占比例为0.38或38%,胡椒博士和雪碧受欢迎程度最低,所占比例为0.1或10%。

    > prop.table(with(drink,table(饮料类别)))
    饮料类别
    百事可乐 胡椒博士 健怡可乐 可口可乐     雪碧 
        0.26     0.10     0.16     0.38     0.10 
    > prop.table(with(drink,table(饮料类别)))*100
    饮料类别
    百事可乐 胡椒博士 健怡可乐 可口可乐     雪碧 
          26       10       16       38       10 
    

    数量型数据统计

    频数分布也适用于数量型数据,下面的样本数据来说明如何编制和解释数量型数据的频数分布。

    1.样本数据是一家小型会计事务所对20位客户完成年末审计所需的时间(单位:天),在R中导入“年末审计时间的样本数据”。

    > time<-read.xlsx('/Users/liuqin/Documents/年末审计时间样本数据.xlsx',1)
    > head(time)
      客户 年末审计时间.单位.天.
    1    1                    12
    2    2                    15
    3    3                    20
    4    4                    22
    5    5                    14
    6    6                    14
    

    2.数量型数据先要确定组数,然后确定每组组宽,最后确定组与组之间的组限

    由于样本数据较少,可选择5个组数。组宽可通过样本最大值33减去最小值12,将极差除以组数后得到近似组宽为4.2,取整为5。组限必须将最大值和最小值包含进去,所以可将上限定为34,下限定为10。

    > 审计时间 <- c("10~14", "15~19", "20~24", "25~29", "30~34")
    > breaks <- c(10,14,19,24,29,34)
    

    3.使用cut()函数按照指定的断点来分割数据,得到各个分组,使用table()函数得到频数表。我们可以观察到最频繁发生的审计时间在15~19天这一组,有8个审计时间属于这一组,只有1次审计需要30天以上。

    > timetable<- cut(time$年末审计时间.单位.天., breaks = breaks, labels = 审计时间, right = TRUE )
    > table(审计时间=timetable)
    审计时间
    10~14 15~19 20~24 25~29 30~34 
         4      8      5      2      1 
    

    4.也可以将频数转化为相对频数分布和百分数频数分布,有0.4或40%的审计需要15~19天时间,只有0.05或5%的审计需要30天或更多时间。

    > prop.table(table(审计时间=timetable))
    审计时间
    10~14 15~19 20~24 25~29 30~34 
      0.20   0.40   0.25   0.10   0.05 
    >  prop.table(table(审计时间=timetable))*100
    审计时间
    10~14 15~19 20~24 25~29 30~34 
        20     40     25     10      5 
    

    两个变量的数据统计

    以上讨论了利用表格法对一个分类或数量变量的数据进行统计,下面将介绍如何编制两个变量数据的表格统计。

    交叉分组表是一种汇总两个变量数据的方法,虽然两个变量可以是分类的或数量的,但一个变量是分类的而另一个变量是数据的交叉分组表最为常见。

    1.样本数据为洛杉矶地区100家饭店的质量等级和代表性餐价数据,在R中导入“100家洛杉矶饭店的质量等级和餐价样本数据”。

    > mydata<-read.xlsx('/Users/liuqin/Documents/100家洛杉矶饭店的质量等级和餐价样本数据.xlsx',1)
    > head(mydata)
      饭店 质量等级 餐价.美元.
    1    1       好         18
    2    2       好         22
    3    3       好         28
    4    4     很好         38
    5    5     很好         33
    6    6       好         28
    

    2.质量等级是一个分类变量,餐价是一个数量变量,使用xtabs()函数得到交叉分组表,左边栏对应质量等级变量,顶部边栏对应餐价变量。样本中质量等级为很好且餐价在20~29美元的饭店最多(22家),质量等级为优秀且餐价在10~19美元的饭店只有2家。

    > 餐价<- c("10~19", "20~29", "30~39", "40~49")
    > breaks <- c(10,19,29,39,49)
    > 餐价<- cut(mydata$餐价.美元., breaks = breaks, labels = 餐价, right = TRUE )
    > mytable<-xtabs(~mydata$质量等级+餐价,data=mydata)
    > mytable
                   餐价
    mydata$质量等级 10~19 20~29 30~39 40~49
               好       13     14      1      0
               很好      9     22     17      2
               优秀      1      4      9      8
    

    3.也可以将交叉分组表化为相对频数分布或百分数频数分布,样本中餐价在20~29美元且质量等级为很好的饭店占比最高,为22%,餐价在40~49美元且质量等级为好的饭店占比最低,为0%。

    > prop.table(mytable)
                   餐价
    mydata$质量等级 10~19 20~29 30~39 40~49
               好     0.13   0.14   0.01   0.00
               很好   0.09   0.22   0.17   0.02
               优秀   0.01   0.04   0.09   0.08
    

    4.使用pro.table()函数分别可生成边际比例,当参数为1时指代table()语句中的第一个变量,即质量等级变量,每一行是同一质量等级的餐价相对频数分布,对于质量等级最低的饭店,我们看到最大比例是较便宜的饭店(46%的饭店餐价是10~19美元,50%的饭店餐价是20~29美元)。对于质量等级最高的饭店,我们看到最大比例的是较贵的饭店(40.9%的饭店餐价是30~39美元,36.4%的饭店餐价是40~49美元)。

    > prop.table(mytable,1)
                   餐价
    mydata$质量等级     10~19     20~29     30~39     40~49
               好   0.46428571 0.50000000 0.03571429 0.00000000
               很好 0.18000000 0.44000000 0.34000000 0.04000000
               优秀 0.04545455 0.18181818 0.40909091 0.36363636
    

    5.当参数为2时指代table()语句中的第二个变量,即餐价变量,每一列是同一个餐价范围的质量等级相对频数分布,对于餐价最便宜的饭店,我们看到饭店质量等级较低的比例最高(56.5%的饭店质量等级为好,4.3%的饭店质量等级为优秀)。对于餐价最昂贵的饭店,我们看到饭店质量等级较高的比例最高(80%的饭店质量等级为优秀)。这个现象响应了一句老话“便宜没好货,好货不便宜”。

    > prop.table(mytable,2)
                   餐价
    mydata$质量等级     10~19     20~29     30~39     40~49
               好   0.56521739 0.35000000 0.03703704 0.00000000
               很好 0.39130435 0.55000000 0.62962963 0.20000000
               优秀 0.04347826 0.10000000 0.33333333 0.80000000
    

    下一篇《描述统计学之R语言实战2:图形法》将介绍如何使用R语言对单变量数据、两个变量数据进行图形显示。

    相关文章

      网友评论

        本文标题:描述统计学之R语言实战1:表格法

        本文链接:https://www.haomeiwen.com/subject/cpmepqtx.html