数据作为信息的载体,要分析数据中包含的主要信息,即要分析数据的主要特征(即数据的数字特征), 对于数据的数字特征, 包含数据的集中位置、分散程度和数据分布,常用统计项目如下:

  • 集中趋势统计量:  均值(Mean)、中位数(Median)、众数(Mode)、百分位数
  • 离散趋势统计量:标准差(sd)、方差(var)、极差(range)、变异系数(CV)、标准误、样本校正平方和(CSS)、样本未校正平方和(USS)
  • 分布情况统计量:偏度、峰度
  • 示例函数

集中趋势


  • 均值(mean):描述数据取值的平均位置,指一组数据的平均数,R 函数语法: mean(x, trim = 0, na.rm = FALSE, ...),计算公式为:

  • 中位数(Median): 定义为数据排序位于中间位置的值, R函数语法:median(x, na.rm = FALSE),计算公式:
  • 众数(Mode): 就是一组数据中占比例最多的那个数, R中未提供直接调用的函数,R算法: names(table(x))[which.max(table(x))]
  • 百分位数(percentile): 是中位数的推广.将数据按从小到大的排列后,对于0≤p<1,它的p分位点定义, R函数语法:quantile(x, probs = seq(0, 1, 0.25), na.rm = FALSE,names = TRUE, type = 7, ...),计算公式为:
      • 要计算的点到起始点的距离/终点到起始点的距离=要计算的比例
      • 实际计算中:0.75分位数与0.25分位数(第75百分位数与第25百分位数)比较重要,它们分别称为上、下四分位数,并分别记为Q3=m0.75,Q1=m0.25
  • 如果一只脚放在摄氏1度的水里,另一只脚放在摄氏79度的水里,平均水温40度,你感觉舒服? 说明只了解数据的集中趋势是不够的,还需要看数据的离散程序

离散趋势


  • 方差(Variance): 是描述数据取值分散性的一个度量.样本方差(sample variance)是样本相对于均值的偏差平方和的平均,记为s2,R函数语法:var(x, y = NULL, na.rm = FALSE, use),计算公式为:

      • 其中x是样本的均值
  • 标准差(Standard Deviation): 也称均方差(mean square error),是方差的算术平方根,R函数语法:sd(x, na.rm = FALSE),计算公式为:
  • 极差(Range): 描述样本分散性的数字特征.当数据越分散,其极差越大,R函数语法: range(..., na.rm = FALSE),计算公式为:
  • 变异系数(CV): 又称离散系数,是刻划数据相对分散性的一种度量,它是一个无量钢的量,用百分数表示,R无对应函数,计算公式为:
  • 样本校正平方和(CSS):无R函数,计算公式:
  • 样本未校正平方和(USS): 无R函数,计算公式:
  • 四分位差(quartile deviation):也称为内距或四分间距(inter-quartile range),它是上四分位数(QL)与下四分位数(QU)之差,通常用Qd表示。计算公式为:
  • 标准误:均值标准误差就是样本均值的标准差,是描述样本均值和总体均值平均偏差程度的统计量,计算公式为:

 分布情况统计


  • 偏度系数:是刻划数据的对称性指标.关于均值对称的数据其偏度系数为0,右侧更分散的数据偏度系数为正,左侧更分散的数据偏度系数为负,偏度系统计算公式:
  • 峰度系数:当数据的总体分布为正态分布时,峰度系数近似为0;当分布较正态分布的尾部更分散时,峰度系数为正;否则为负.当峰度系数为正时,两侧极端数据较多;当峰度系数为负时,两侧极端数据较少。峰度系数计算公式:

示例函数


  • 计算各种描述性统计量函数脚本如下:

    setwd("E:\\R")
    myDescriptStat <- function(x){
    n <- length(x) #样本数据个数
    m <- mean(x) #均值
    me <- median(x) #中位数
    mo <- names(table(x))[which.max(table(x))] #众数
    sd <- sd(x) #标准差
    v <- var(x) #方差
    r <- max(x) - min(x) #极差
    cv <- 100 * sd/m #变异系数
    css <- sum(x - m)^2 #样本校正平方和
    uss <- sum(x^2) #样本未校正平方和
    R1 <- quantile(x,0.75) - quantile(x,0.25) #四分位差
    sm <- sd/sqrt(n) #标准误
    g1 <- n/((n-1)*(n-2)*sd^3)*sum((x-m)^3)/sd^3 #偏度系数
    g2 <- ((n*(n+1))/((n-1)*(n-2)*(n-3))*sum((x-m)^4)/sd^4 -(3*(n-1)^2)/((n-2)*(n-3))) #峰度系数
    data.frame(N=n,Mean=m,Median=me,Mode=mo,
    Std_dev=sd,Variance=v,Range=r,
    CV=cv,CSS=css,USS=uss,
    R1=R1,SM=sm,Skewness=g1,Kurtosis=g2,
    row.names=1)
    }
  • 示例结果如下:

    > setwd("E:\\R")
    > source("myDescriptStat.R")
    > w<-c(75.0,64.0,47.4,66.9,62.2,62.2,58.7,63.5,66.6,64.0,57.0,69.0,56.9,50.0,72.0) #学生体重
    > myDescriptStat(w)
    N Mean Median Mode Std_dev Variance Range CV CSS USS R1 SM
    1 15 62.36 63.5 62.2 7.514823 56.47257 27.6 12.05071 2.019484e-28 59122.16 8.9 1.940319
    Skewness Kurtosis
    1 -0.001013136 0.09653947
  • 绘学生的体重的直方图和核密度估计图,并与正态分布的概率密度函数作对照图,代码及示例:

    hist(w,freq=FALSE)
    lines(density(w),col="blue")
    x<-44:76
    lines(x,dnorm(x,mean(w),sd(w)),col="red")
  • 示例图形:
  • 结论:可以通过密度估计曲线与正态分布的概率密度曲线之间差别的大小来判断数据是否来自正态总体.从上图看,基本上可以认为学生的体重来自正态总体

R提高篇(五): 描述性统计分析的更多相关文章

  1. R提高篇(二): 图形初阶

    目录: 图形示例 图形参数 符号.线条 颜色 文本属性 尺寸与边界 自定义标题 自定义坐标轴 图例 文本标注 图形组合 图形示例 如下代码描述病人对两种药物五个剂量水平上的响应情况 > myda ...

  2. R提高篇(三): 数据管理一

    目录: 创建新变量 变量重编码 日期值 数据排序 数据集合并 数据子集 随机取样 创建新变量 算术运算函数:x%%y [求余 x mod y,  5%%2的结果为1], x%/%y  [整数除法,5% ...

  3. java提高篇(五)-----抽象类与接口

    接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法. 抽象类与接口是java语言中对抽象概念进行定义的两种机制,正是由于他们的存在才赋予java强大的面向对象的能力.他们两者之间对抽象概念 ...

  4. R提高篇(四): 数据管理二

    目录: 数学函数 统计函数 应用示例 控制流 数学函数 ceiling(x):  大于等于 x  的最小整数, 如:  ceiling(3.213)  --> 4 floor(x):     小 ...

  5. R提高篇(一): 输入输出

    目录: 文本输出 图形输出 数据输入 数据框输出 文本导入 Excel导入 文本输出 语法: sink(file = NULL, append = FALSE, type = c("outp ...

  6. (转载)java提高篇(五)-----抽象类与接口

    接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法. 本文是转载的(尊重原著),原文地址:http://www.cnblogs.com/chenssy/p/3376708.html 抽象类 ...

  7. (转)java提高篇(五)-----抽象类与接口

    接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法. 抽象类与接口是java语言中对抽象概念进行定义的两种机制,正是由于他们的存在才赋予java强大的面向对象的能力.他们两者之间对抽象概念 ...

  8. Maven提高篇系列之(五)——处理依赖冲突

    这是一个Maven提高篇的系列,包含有以下文章: Maven提高篇系列之(一)——多模块 vs 继承 Maven提高篇系列之(二)——配置Plugin到某个Phase(以Selenium集成测试为例) ...

  9. java提高篇(十五)-----关键字final

    在程序设计中,我们有时可能希望某些数据是不能够改变的,这个时候final就有用武之地了.final是java的关键字,它所表示的是“这部分是无法修改的”.不想被改变的原因有两个:效率.设计.使用到fi ...

随机推荐

  1. 转载:CancellationToken

    http://www.cnblogs.com/Abbey/archive/2011/09/12/2174208.html 最近在学习.NET中的线程同步.其中一个重要的技术叫线程的取消(中止),涉及的 ...

  2. 转: ASP.NET+ExtJs4.0+表单提交submit,上传图片到服务器

    http://blog.csdn.net/lmaohuanl/article/details/6792057 <!DOCTYPE html PUBLIC "-//W3C//DTD XH ...

  3. CentOS6编译装载nbd模块

    今天突然发现CentOS系统没有nbd模块,只能重新装下,下面记录下整个编译过程: 系统:CentOS6.5 内核:2.6.32-431.el6.x86_64 [root@localhost ~]# ...

  4. PAT (Basic Level) Practise:1007. 素数对猜想

    [题目链接] 让我们定义 dn 为:dn = pn+1 - pn,其中 pi 是第i个素数.显然有 d1=1 且对于n>1有 dn 是偶数.“素数对猜想”认为“存在无穷多对相邻且差为2的素数”. ...

  5. Core Java Volume I — 3.5. Operators

    3.5. OperatorsThe usual arithmetic operators +, -, *, / are used in Java for addition, subtraction, ...

  6. 纯代码写UI的时候,如何指定style?

    有的时候,需要使用纯代码实现Android UI,那么这个时候如何指定某个UI组件的样式呢? 一般来说,UI组件都有一些set方法可供使用,以调整一些UI属性,从而达到调整样式的目的. 但是,情况并非 ...

  7. 带同时滚动小色条的banner轮播图jq

    <div class="baoliao tongcheng"> <p class="headline1">同城<font>活 ...

  8. Jquery图片上传预览效果

    uploadPreview.js jQuery.fn.extend({ uploadPreview: function (opts) { var _self = this, _this = $(thi ...

  9. 转:struts标签之select详解

    <html:select>生成HTML<select>元素 <html:option>:生成HTML<option>元素 <html:option ...

  10. Oracle字符集的查看查询和Oracle字符集的设置修改

    本文主要讨论以下几个部分:如何查看查询oracle字符集. 修改设置字符集以及常见的oracle utf8字符集和oracle exp 字符集问题. 一.什么是Oracle字符集 Oracle字符集是 ...