08 2021 档案
摘要:使用lattice进行高级绘图-- 自定义图形条带 面板条带默认的背景是:第一个调节变量是桃红色,第二个调节变量是浅绿色,第三个调节变量是浅蓝色。令人高兴地是,我们可以自定义颜色、字体和这些条带的其他方面。 让我们先从条带函数开始。正如lattice中的高水平图形函数允许我们通过控制每个面板的内容指
阅读全文
摘要:使用lattice进行高级绘图-- 图形参数 查看默认的设置: show.settings() 把它们保存到名为mysettings的列表中: mysettings <- trellis.par.get() 以使用names()函数来查看列表的成分: names(mysettings) 体到叠加符号
阅读全文
摘要:使用lattice进行高级绘图-- 分组变量 当你在lattice绘图公式中增加调节变量时,该变量每个水平的独立面板就会产生。如果想添加的结果和每个水平正好相反,可以指定该变量为分组变量。 比方说,我们想利用核密度图展示使用手动和自动变速器时汽车油耗的分布。我们可以使用下面的代码来添加相应的图形:(
阅读全文
摘要:使用lattice进行高级绘图-- 面板函数 每一个高水平的画图函数都采用了默认的函数来绘制面板图。默认函数遵循命名规则panel.graph_function,其中graph_function指的是高水平的函数。例如: xyplot(mpg~wt|displacement, data=mtcars
阅读全文
摘要:使用lattice进行高级绘图-- 调节变量 通常情况下,调节变量是因子。但是对于连续的变量应该如何操作呢?一种方法是使用R的cut()函数将连续的变量转化为离散的变量。另一种方法是,lattice包提供的函数可以将连续的变量转化为名为shingle的数据结构。具体来说,连续变量被分成一系列(可能)
阅读全文
摘要:使用lattice进行高级绘图-- lattice 包 lattice包提供了用于可视化单变量和多变量数据的一整套图形系统。许多用户转向使用lattice包是因为它能很容易地生成网格图形。 网格图形能够展示变量的分布或变量之间的关系,每幅图代表一个或多个变量的各个水平。 思考下面的问题:纽约合唱团各
阅读全文
摘要:高级编程--编写有效的代码 在程序员中间流传着一句话:“优秀的程序员是花一个小时来调试代码而使得它的运算速度提高一秒的人。”R是一种鲜活的语言,大多数用户不用担心写不出高效的代码。作为一般规则,让代码易于理解、易于维护比优化它的速度更重要。但是当你使用大型数据集或处理高度重复的任务时,速度就成为一个
阅读全文
摘要:高级编程--面向对象的编程 R是一个基于使用泛型函数的面向对象的编程语言。每个对象有一个类属性,这个类属性决定当对象的副本传递到类似于print()、plot()和summary()这些泛型函数时运行什么代码。 R有两个分离的面向对象编程的模型。S3模型相对更老、更简单、结构更少。S4模型更新且更复
阅读全文
摘要:高级编程--创建函数 在R中处处是函数。算数运算符+、-、/和*实际上也是函数。例如,2 + 2等价于 "+"(2, 2)。 1. 函数语法 函数的语法格式是: functionname <- function(parameters){ statements return(value) } 如果函数
阅读全文
摘要:高级编程--控制结构 当R解释器运行代码时,它按顺序逐行读取。如果一行不是一个完整的语句,它会读取附加行直到可以构造一个完全的语句。例如,如果你想计算3+2+5的和,可以运行代码: 3 + 2 + 5 也可以运行下列代码: 3 + 2 + 5 #第一行末尾的+号表示语句不是完整的。 你想有条件的或是
阅读全文
摘要:高级编程--索引 任何数据对象中的元素都可以通过索引来提取。提取元素可以使用object[index],其中object是向量,index是一个整数向量。如果原子向量中的元素已经被命名,index也可以是这些名字中的字符串向量。需要注意的是,R中的索引从1开始,而不是像其他语言一样从0开始。 下面是
阅读全文
摘要:数据类型--泛型向量或列表 列表是原子向量和/或其他列表的集合。数据框是一种特殊的列表,集合中每个原子向量都有相同的长度。在安装R时自带iris数据框,这个数据框描述了150种植物的四种物理测度及其种类(setosa、versicolor或virginica): head(iris) 这个数据框实际
阅读全文
摘要:1 R 语言回顾 R是一种面向对象的、实用的数组编程语言,其中的对象是专门的数据结构,存储在RAM中,通过名称或符号访问。对象的名称由大小写字母、数字0~9、句号和下划线组成。名称是区分大小写的,而且不能以数字开头;句号被视为没有特殊含义的简单字符。 不像C和C++语言,在R语言中不能直接得到内存的
阅读全文
摘要:使用ggplot2进行高级绘图--修改 ggplot2 图形的外观 1 坐标轴 ggplot2包会在创建图时自动创建刻度线、刻度标记标签和坐标轴标签。它们往往看起来不错,但是有时我们需要在更大程度上控制它们的外观。我们已经知道了如何通过labs()函数来添加标题并改变坐标轴标签。那么如何自定义轴标签
阅读全文
摘要:使用ggplot2进行高级绘图--刻面 如果组在图中并排出现而不是重叠为单一的图形,关系就是清晰的。我们可以使用facet_wrap()函数和facet_grid()函数创建网格图形(在ggplot2中也称刻面图)。 ggplot2的刻面图函数 其中var、rowvar和colvar是因子。 看一下
阅读全文
摘要:使用ggplot2进行高级绘图--分组 为了理解数据,在一个图中画出两个或更多组的观察值通常是很有帮助的。在R中,组通常用分类变量的水平(因子)来定义。分组是通过ggplot2图将一个或多个带有诸如形状、颜色、填充、尺寸和线类型的视觉特征的分组变量来完成的。ggplot()声明中的aes()函数负责
阅读全文
摘要:用几何函数指定图的类型 ggplot()函数指定要绘制的数据源和变量,几何函数则指定这些变量如何在视觉上进行表示(使用点、条、线和阴影区)。下表列出了比较常见的几何函数,以及经常使用的选项。 几何函数 几何函数的常见选项 选项pch=用于指定绘制点时使用的符号。 产生如图所示的直方图: data(s
阅读全文
摘要:使用ggplot2进行高级绘图 除了基础图形,grid、lattice和ggplot2软件包也提供了图形系统,它们克服了R基础图形系统的低效性,大大扩展了R的绘图能力。 grid图形系统可以很容易地控制图形基础单元,给予编程者创作图形的极大灵活性。 lattice包通过一维、二维或三维条件绘图,即所
阅读全文
摘要:处理缺失值--多重插补 多重插补(MI)是一种基于重复模拟的处理缺失值的方法。在面对复杂的缺失值问题时,MI是最常选用的方法,它将从一个包含缺失值的数据集中生成一组完整的数据集(通常是3到10个)。每个模拟数据集中,缺失数据将用蒙特卡洛方法来填补。此时,标准的统计方法便可应用到每个模拟的数据集上,通
阅读全文
摘要:处理缺失值--完整实例分析(行删除) 在完整实例分析中,只有每个变量都包含了有效数据值的观测才会保留下来做进一步的分析。实际上,这样会导致包含一个或多个缺失值的任意一行都会被删除,因此常称作行删除法(listwise)、个案删除(case-wise)或剔除。 函数complete.cases()可以
阅读全文
摘要:处理缺失值的高级方法--探索缺失值模式 在决定如何处理缺失数据前,了解哪些变量有缺失值、数目有多少、是什么组合形式等信息非常有用,要知道数据为何缺失。 1 列表显示缺失值 mice包中的md.pattern()函数可生成一个以矩阵或数据框形式展示缺失值模式的表格。将函数应用到sleep数据集,可得到
阅读全文
摘要:处理缺失数据的高级方法 缺失数据的传统方法和现代方法,主要使用VIM和mice包。使用VIM包提供的哺乳动物睡眠数据(sleep,注意不要将其与基础安装中描述药效的sleep数据集混淆)。数据来源于Allison和Chichetti(1976)的研究,他们研究了62种哺乳动物的睡眠、生态学变量和体质
阅读全文
摘要:分类分析--选择预测效果最好的解 预测准确性度量 下面给出计算这几个统计量的函数: 评估二分类准确性: performance <- function(table, n=2){ if(!all(dim(table) == c(2,2))) stop("Must be a 2 x 2 table")
阅读全文
摘要:分类分析--支持向量机 支持向量机(SVM)是一类可用于分类和回归的有监督机器学习模型。其流行归功于两个方面:一方面,他们可输出较准确的预测结果;另一方面,模型基于较优雅的数学理论。 SVM旨在在多维空间中找到一个能将全部样本单元分成两类的最优平面,这一平面应使两类中距离最近的点的间距(margin
阅读全文
摘要:分类分析--随机森林 随机森林(random forest)是一种组成式的有监督学习方法。在随机森林中,我们同时生成多个预测模型,并将模型的结果汇总以提升分类准确率。随机森林的算法涉及对样本单元和变量进行抽样,从而生成大量决策树。对每个样本单元来说,所有决策树依次对其进行分类。所有决策树预测类别中的
阅读全文
摘要:分类分析--决策树 决策树是数据挖掘领域中的常用模型。其基本思想是对预测变量进行二元分离,从而构造一棵可用于预测新样本单元所属类别的树。两类决策树:经典树和条件推断树。 1 经典决策树 经典决策树以一个二元输出变量(对应威斯康星州乳腺癌数据集中的良性/恶性)和一组预测变量(对应九个细胞特征)为基础。
阅读全文
摘要:分类分析--逻辑回归 逻辑回归(logistic regression)是广义线性模型的一种,可根据一组数值变量预测二元输出,即逻辑回归只适用于二分类 ,R中的基本函数glm()可用于拟合逻辑回归模型。glm()函数自动将预测变量中的分类变量编码为相应的虚拟变量。威斯康星乳腺癌数据中的全部预测变量都
阅读全文
摘要:分类分析 有监督机器学习领域中包含许多可用于分类的方法,如逻辑回归、决策树、随机森林、支持向量机、神经网络等,有监督学习基于一组包含预测变量值和输出变量值的样本单元。将全部数据分为一个训练集和一个验证集,其中训练集用于建立预测模型,验证集用于测试模型的准确性。 主要例子来源于UCI机器学习数据库中的
阅读全文
摘要:避免不存在的类 聚类分析是一种旨在识别数据集子组的方法,并且在此方面十分擅长。事实上,它甚至能发现不存在的类。 install.packages("fMultivar") library(fMultivar) set.seed(1234) df <- rnorm2d(1000, rho=.5) df
阅读全文
摘要:1 划分聚类分析 1.1 K 均值聚类 最常见的划分方法是K均值聚类分析。从概念上讲,K均值算法如下: (1) 选择K个中心点(随机选择K行); (2) 把每个数据点分配到离它最近的中心点; (3) 重新计算每类中的点到该类中心点距离的平均值(也就说,得到长度为p的均值向量,这里的p是变量的个数);
阅读全文
摘要:层次聚类分析 在层次聚类中,起初每一个实例或观测值属于一类。聚类就是每一次把两类聚成新的一类,直到所有的类聚成单个类为止,算法如下: (1) 定义每个观测值(行或单元)为一类; (2) 计算每类和其他各类的距离; (3) 把距离最短的两类合并成一类,这样类的个数就减少一个; (4) 重复步骤(2)和
阅读全文
摘要:聚类分析 聚类分析是一种数据归约技术,旨在揭露一个数据集中观测值的子集。它可以把大量的观测值归约为若干个类。 最常用的两种聚类方法是层次聚类(hierarchical agglomerative clustering)和划分聚类(partitioning clustering)。在层次聚类中,每一个
阅读全文
摘要:指数预测模型 指数模型是用来预测时序未来值的最常用模型。这类模型相对比较简单,但是实践证明它们的短期预测能力较好。不同指数模型建模时选用的因子可能不同。比如单指数模型(simple/single exponential model)拟合的是只有常数水平项和时间点i处随机项的时间序列,这时认为时间序列
阅读全文
摘要:1 时序的平滑化和季节性分解 对时序数据建立复杂模型之前也需要对其进行描述和可视化。在本节中,我们将对时序进行平滑化以探究其总体趋势,并对其进行分解以观察时序中是否存在季节性因素。 1.1 通过简单移动平均进行平滑处理 时序数据集中通常有很显著的随机或误差成分。为了辨明数据中的规律,我们总是希望能够
阅读全文
摘要:时间序列 时间序列(简称时序),对时序数据的研究包括两个基本问题:对数据的描述(这段时间内发生了什么)以及预测(接下来将会发生什么)。对时间序列数据未来值进行预测是基本的人类活动,对时序数据的研究在现实世界中也有着广泛的应用。经济学家尝试通过时序分析理解并预测金融市场;城市规划者基于时序数据预测未来
阅读全文
摘要:因子分析 探索性因子分析(EFA)是一系列用来发现一组变量的潜在结构的方法。它通过寻找一组更小的、潜在的或隐藏的结构来解释已观测到的、显式的变量间的关系。例如,Harman74.cor包含了24个心理测验间的相互关系,受试对象为145个七年级或八年级的学生。假使应用EFA来探索该数据,结果表明276
阅读全文
摘要:主成分分析 主成分分析(PCA)是一种数据降维技巧,它能将大量相关变量转化为一组很少的不相关变量,这些无关变量称为主成分。例如,使用PCA可将30个相关(很可能冗余)的环境变量转化为5个无关的成分变量,并且尽可能地保留原始数据集的信息。 1 R中的主成分和因子分析 R的基础安装包提供了PCA和EFA
阅读全文
摘要:泊松回归 当通过一系列连续型和/或类别型预测变量来预测计数型结果变量时,泊松回归是一个非常有用的工具。为阐述泊松回归模型的拟合过程,并探讨一些可能出现的问题,我们将使用robust包中的Breslow癫痫数据(Breslow,1993)。特别地,我们将讨论在治疗初期的八周内,抗癫痫药物对癫痫发病数的
阅读全文
摘要:1 广义线性模型和 glm()函数 广义线性模型扩展了线性模型的框架,它包含了非正态因变量的分析。重点关注该框架中两种流行的模型:Logistic回归(因变量为类别型),比如多分类变量(比如差/良好/优秀)和泊松回归(因变量为计数型),比如一周交通事故的数目,每日酒水消耗的数量。 1.1 glm()
阅读全文
摘要:1 自助法 所谓自助法,即从初始样本重复随机替换抽样,生成一个或一系列待检验统计量的经验分布。 无需假设一个特定的理论分布,便可生成统计量的置信区间,并能检验统计假设。倘若你假设均值的样本分布不是正态分布,该怎么办呢?可使用自助法。 (1) 从样本中随机选择10个观测,抽样后再放回。有些观测可能会被
阅读全文
摘要:1 lmPerm 包的置换检验 lmPerm包可做线性模型的置换检验。比如lmp()和aovp()函数即lm()和aov()函数的修改版,能够进行置换检验,而非正态理论检验。lmp()和aovp()函数的参数与lm()和aov()函数类似,只额外添加了perm=参数。perm=选项的可选值有Exac
阅读全文
摘要:1 置换检验 置换方法和参数方法都计算了相同的t统计量。但置换方法并不是将统计量与理论分布进行比较,而是将其与置换观测数据后获得的经验分布进行比较,根据统计量值的极端性判断 是否有足够的理由拒绝零假设。 R目前有一些非常全面而复杂的软件包可以用来做置换检验。两个有用的包:coin和lmPerm包,c
阅读全文
摘要:1 马赛克图 我们已经学习了许多可视化定量或连续型变量间关系的方法。但如果变量是类别型的呢?若只观察单个类别型变量,可以使用柱状图或者饼图;但若有两个以上的类别型变量,该怎么办呢?一种办法是绘制马赛克图(mosaic plot)。在马赛克图中,嵌套矩形面积正比于单元格频率,其中该频率即多维列联表中的
阅读全文
摘要:1 相关图 相关系数矩阵是多元统计分析的一个基本方面。哪些被考察的变量与其他变量相关性很强, 而哪些并不强?相关变量是否以某种特定的方式聚集在一起?相关图作为一种相对现代的方法,可以通过对相关系数矩阵的可视化来回答这些问题。 1.1 例1:以mtcars数据框中的变量相关性为例,它含有11个变量,对
阅读全文
摘要:折线图 如果将散点图上的点从左往右连接起来,就会得到一个折线图,以基础安装中的Orange数据集为例,它包含五种橘树的树龄和年轮数据,现要考察第一种橘树的生长情况: opar <- par(no.readonly=TRUE) #设置初始化参数 par(mfrow=c(1,2)) #把画布分成2部分
阅读全文
摘要:1 散点图 散点图可用来描述两个连续型变量间的关系。R中创建散点图的基础函数是plot(x, y),其中,x和y是数值型向量,代表着图形中的(x, y)点。下面展示了一个例子。 attach(mtcars) plot(wt, mpg, main="Basic Scatter plot of MPG
阅读全文
摘要:功效分析 功效分析针对的是假设检验,比如:比例检验、t检验、卡方检验、平衡单因素ANOVA、相关性分析,以及线性模型分析等。 1 用pwr包做功效分析 问题描述:假设想评价使用手机对驾驶员反应时间的影响,则零假设为H0:U1-U2=0,其中U1是驾驶员使用手机时的反应时间均值,U2是驾驶员不使用手机
阅读全文