zoukankan      html  css  js  c++  java
  • R语言实战(三)基本图形与基本统计分析

    本文对应《R语言实战》第6章:基本图形;第7章:基本统计分析

    ================================================================================================================================================== 

    本章讨论的图形,主要用于分析数据前,对数据的初步掌握。想要对数据有一个初步的印象,最好的方式就是观察它,也就是将数据可视化。在这个过程中,我们不必要过于纠结图形是否漂亮美观,而重点关注各个简单图形的含义:观察数据的哪个方面时需要用到哪些图形。

    条形图:主要展示类别型变量的分布(频数)

    barplot(height)
    

      

    简单条形图

    堆砌条形图和分组条形图

    均值条形图(用aggregate()函数处理后,得到各组均值、中位值等,即经过折叠的数据)

    棘状图(对堆砌条形图进行重缩放,将不同分组高度归一化,用于比较不同组内相同分类占比的不同。package: vcd:: spine())

    饼图:不推荐使用,因为相对于面积,人对长度的判断更精确。

    pie(x, labels)

    直方图:展示了连续型变量的分布情况

    hist(x)
    

      

    可以在直方图上添加核密度图或者正态分布曲线辅助观察数据分布

    核密度图:也可以用来观察连续型变量分布,可以在直方图上叠加

    #直接绘图:
    plot(density(x))
    
    #在直方图上叠加:
    hist(mtcars$mpg)
    #如果数据中有许多结(tie, 数据中出现相同的值)用以下语句打散
    rug(jitter(mtcars$mpg))
    #添加核密度曲线
    lines(density(mtcars$mpg))
    

      


    箱线图:通过绘制绘制连续型变量的五数总括,即最小值、下四分位数、中位数、上四分位数、最大值,描述连续型变量分布 

    boxplot(x)
    

      

    并列箱线图:跨组比较(单因子或交叉因子。交叉因子:formula形如mpg ~ am.f * cyl.f)

    boxplot(formula, data = dataframe)
    

      

    小提琴图:是箱线图的变种,由箱线图与核密度图结合而来,package: vioplot

    并不流行

    点图:提供了一种在简单水平刻度上绘制大量有标签值的方法

    dotchart(x, labels = )
    

      

    对于少量数据有较为显著的洞察力,对于大量数据的实用性较差

    ================================================================================================================================================== 

    基本统计分析:

    描述性统计分析

    #极值、均值、分位数
    summary()
     
    #变量与观测的数量、缺失值和唯一值的数量、平均值、分位数、五个最大最小值
    library(Hmisc)
    describe()
     
    #对数据框或时间序列进行分析
    library(pastecs)
    stat.desc(x, basic = TRUE, desc = TRUE, norm = FALSE, p = 0.95)
    #basic = TRUE(默认),计算所有值、空值、缺失值数量,最值、值域、总和
    #desc = TRUE(默认),中位数、平均数及其标准误、平均数置信度为95%的置信区间、方差、标准差以及变异系数
    #norm = TRUE(不是默认),返回正态分布统计量,包括偏度和峰度
    
    #扩展
    #非缺失值的数量、平均数、标准差、中位数、截尾均值、绝对中位差、最值、值域、偏度、峰度、平均值的标准误
    library(psych)
    describe()
    

      


    分组计算描述性统计量 

    #by()函数
    vars <- c(“mpg”, “hp”, “wt”)
    dstats <- function(x) (c(mean = mean(x), sd = sd(x)))
    by(mtcars[vars], mtcars$am, dstats)
     
    #自定义统计量
    library(doBy)
    summaryBy(formula, data = dataframe, FUN = function)
    
    #概述统计量
    library(psych)
    describe.by(data, variables)
     
    #package reshape
    #melt() cast()简洁但是需要熟练使用
    

      


    频数表和列联表 

    table(var1, var2, …, varN)

    使用N个类别型变量创建一个N维列联表

    xtabs(formula, data)

    根据一个公式和一个矩阵或一个数据框创建一个N维列联表

    prop.table(table, margins)

    依margins定义的边际列表将表中条目表示为分数形式

    margin.table(table, margins)

    依margins定义的边际列表计算表中条目的和

    addmargins(table, margins)

    将概述边margins(默认是求和结果)放入表中

    ftable(table)

    创建一个紧凑的“平铺”式列联表

    注意:table()函数默认忽略缺失值(NA)要将NA视为一个有效的类别,需要设置参数useNA = “ifany”

    生成二维列联表的一个更好的方式,使用library: gmodels:: CrossTable()函数

    多维列联表:以上函数均可以推广到高维情况,推荐使用ftable()函数

    独立性检验:

    对二维列联表的行变量与列变量进行独立性检验(检验对象为列联表)

    #卡方独立性检验
    #假设相互独立,若p<0.05,拒绝假设(也就是相关)
    chisq.test()
     
    #Fisher精确检验
    #假设:边界固定的列联表中行和列是相互独立的
    #注意不能用于2*2列联表
    fisher.test()
    
    #Cochran-Mantel-Haenszel检验
    #假设:两个名义变量在第三个变量的每一层中都是条件独立的(即不存在三阶交互作用)
    mantelhaen.test()
    

      


    相关性度量: 

    如果独立性检验通过(拒绝假设),继续度量相关性的强弱

    相关

    Pearson积差相关系数衡量了两个定量变量之间的线性相关程度

    Spearman等级相关系数衡量分级定序变量之间的相关程度

    Kendall’s Tau相关系数是一种非参数的等级相关度量

    #计算相关系数
    cor()
    #计算协方差
    cov()
    

      


    偏相关:在控制一个或多个定量变量时,另外两个定量变量之间的相互关系 

    library(ggm)
    pcor(u, S)
    

      


    其他类型的相关 

    #计算混合相关矩阵,包括数值型变量之间的Pearson相关系数、数值型变量和有序变量之间的多系列相关系数
    library(polycor)
    hector()
    

      


    相关性的显著性检验: 

    #检验一种相关关系
    cor.test(x, y, alternative = , method = ) 
    
    #一次作出相关矩阵及显著性检验
    library(psych)
    corr.test()
    

      


    其他显著性检验: 

    在多元正态性的假设下,ggm包中pcor.test()函数可以用来检验在控制一个或多个额外变量时,两个变量之间的条件独立性。

    t检验

    #独立样本t检验
    t.test(y ~ x, data)
    #y为数值型变量,x为二分变量
    t.test(y1, y2)
    #y1和y2为数值型变量,即各组的结果变量
     
    #非独立样本t检验(假定组间的差异呈正态分布)
    t.test(y1, y2, paired = TRUE)
    

      


     多于两组的情况:如果能够假设数据是从正态总体中独立抽样而得的,就可以使用方差分析(ANOVA)

    组间差异的非参数检验

    两组的比较:若独立,则可以使用Wilcoxon秩和检验

    wilcox.test(y ~ x, data)
    wilcox.test(y1, y2)
    

      

    多于两组的比较:无法满足ANOVA的假设时,采用非参数方法。

    如果各组独立,可以使用Kruskal-Wallis检验;如果各组不独立,使用Friedman检验。

  • 相关阅读:
    Java 线程池概念、原理、简单实现
    Java 中的等待唤醒机制透彻讲解
    Java 多线程安全问题简单切入详细解析
    理解 Java 多线程
    Java 异常的处理
    Android MediaPlayer的生命周期
    Node.js 撸第一个Web应用
    Android简易实战教程--第三十四话《 自定义SeekBar以及里面的一些小知识》
    使用Intent传递对象
    Android 异步查询框架AsyncQueryHandler的使用
  • 原文地址:https://www.cnblogs.com/gyjerry/p/6221500.html
Copyright © 2011-2022 走看看