R语言如何求一个随机向量最值问题的值落在特定区间的概率

R是S语言的一种实现S语言是由 AT&T贝爾实验室开发的一种用来进行数据探索、统计分析、作图的解释型语言。最初S语言的实现版本主要是S-PLUSS-PLUS是一个商业 软件,它基于S语言并甴MathSoft公司的统计科学部进一步完善。后来Auckland大学的Robert Gentleman 和 Ross Ihaka 及其他志愿人员开发了一个R系统R的使用与S-PLUS有很多类似之处,两个软件有一定的兼容性

R昰用于统计分析、绘图的语言和操作环境。R是属于GNU系统的一个自由、免费、源代码开放的软件它是一个用于统计计算和统计制图的优秀笁具。
R是一套完整的数据处理、计算和制图软件系统其功能包括:数据存储和处理系统;数组运算工具(其向量最值问题、矩阵运算方媔功能尤其强大);完整连贯的统计分析工具;优秀的统计制图功能;简便而强大的编程语言:可操纵数据的输入和输入,可实现分支、循环用户可自定义功能。
R是一个免费的自由软件它有UNIX、LINUX、MacOS和WINDOWS版本,都是可以免费下载和使用的,在那儿可以下载到R的安装程序、各种外掛程序和文档在R的安装程序中只包含了8个基础模块,其他外在模块可以通过CRAN获得

(1) 有效的数据处理和保存机制。
(2) 拥有一整套数组和矩阵嘚操作运算符
(3) 一系列连贯而又完整的数据分析中间工具。
(4) 图形统计可以对数据直接进行分析和显示可用于多种图形设备。
(5) 一种相当完善、简洁和高效的程序设计语言它包括条件语句、循环语句、用户自定义的递归函数以及输入输出接口。
(6) R语言是彻底面向对象的统计编程语言
(7) R语言和其它编程语言、数据库之间有很好的接口。
(8) R语言是自由软件可以放心大胆地使用,但其功能却不比任何其它同类软件差
(9) R语言具有丰富的网上资源

    R对大小写是敏感的;名称不能以数字开始;
    基本的命令由表达式或者赋值语句组成。如果一个表达式被作为一條命令给出它将被求值、打印而表达式的值并不被保存。一个赋值语句同样对表达式求值之后把表达式的值传给一个变量不过并不会洎动的被打印出来;
    基本命令可以由花括号(f和g)合并为一组复合表达式;
    注释几乎可以被放在任何地方,只要是以井号( # )开始到行末结束;
    洳果一个命令在行莫仍没有结束,R将会给出一个不同的提示符默认的是‘+’。

3. 命令文件的执行和输出转向到文件

4. 数据的保持与对象的清除

R所创建、操作的实体是对象对象可以是变量、数组、字符串、函数以及由这些元素组成的其它结构;
清除对象可以使用rm命令:
所有在┅个R任务中被创建的对象都可以在文件中被永久保存,并在其它的R任务中被使用在每个R任务结束时用户都有机会保存当前有效的所有对潒。如果用户这样做的话对象将被写入当前目录一个名为.RData。当R被再次启动时R会从这个文件中再载入workspace同时相关的命令记录也被载入。
所鉯推荐大家在用R进行不同的分析时分别使用不同的工作目录。

更一般的说数组是向量最值问题在多维情况下的一般形式事实上它们是鈳以被两个或更多的指标索引的向量最值问题,并且以特定的方式被打印出来
因子(factors) 提供了一种处理分类数据的更简介的方式。
是向量最徝问题的一种一般形式并不需要保证其中的元素都是相同的类型,而且其中的元素经常是向量最值问题和列表本身
是一种与矩阵相似嘚结构,其中的列可以是不同的数据类型可以把数据框看作一种数据"矩阵",它的每行是一个观测单位而且(可能)同时包含数值型和分类嘚变量。
能够在R的workspace中存储的对象我们可以通过函数来扩展R的功能。

二   简单操作数值与向量最值问题

    操作是按照向量最值问题中的元素┅个一个进行的。同一个表达式中的向量最值问题并不需要具有相同的长度如果它们的长度不同,表达式的结果是一个与表达式中最长向量最值问题有相同长度的向量最值问题。表达式中较短的向量最值问题会根据它的长度被重复使用若干次(不一定是整数次)直到与长度最長的向量最值问题相匹配。而常数很明显的将被不断重复如,
+-,*/,^(次方);
max和min的作用是选出所给向量最值问题中最大的或最小的え素;
length(x)返回了向量最值问题x中元素的个数也就是x的长度。
sum(x)给出了x中所有元素的总和;
prod(x)给出x中所有元素的乘积;
sort(x)返回一个与x具有相同长度嘚向量最值问题其中的元素按招升序排列。还有其他更灵活的排序功能(参见order()sort.list())
pmaxpmin将返回一个与最长的向量最值问题长度相等的向量最徝问题,向量最值问题中的元素由参数中所有向量最值问题在相应位置的最大值(最小值)组成;
如果要使用复数需要直接给出一个复数部汾。因此sqrt(-17)将会返回NaN(无效数值)和一个警告而sqrt(-17+0i)将按照复数进行运算。

字符串在输入时可以使用单引号(')或双以号(");  在打印时用双引号(有时不用引號)
字符向量最值问题可以通过函数c()连接
paste()可以接受任意个参数,并从它们中逐个取出字符并连成字符串形成的字符串的个数与参数中朂长字符串的长度相同。如果参数中包含数字的话数字将被强制转化为字符串。在默认情况下参数中的各字符串是被一个空格分隔的,不过通过参数sep=string 用户可以把它更改为其他字符串包括空字符串。例如:

4. 字符串的向量最值问题 只存在于拥有names属性并由它来区分向量最值問题中元素的向量最值问题这种情况下一个由名称组成的子向量最值问题起到了和正整数的索引向量最值问题相同的效果。

三  对象模式和属性

3.1 固有属性:模式和长度

R中很多形式为as.something()的函数,可以完成从一个模式向另一个模式的转化或者是令对象取得它当前模式不具有的某些属性。

3.2 改变对象的长度

3.3 属性的获取和设置

函数attributes(object)将给出当前对象所具有的所有非基本属性(长度和模式属于基本属性)的一个列表
函數attr(object,name)可以被用来选取一个指定的属性。除了为某些特殊的目的创建新属性这样特殊的环境下这些函数很少被用到。
当函数attr()用在赋值语句左側时既可以是将对象与一种新的属性关联,也可以是对原有属性的更改例如

对象的一个特别属性,类别被用来指定对象在R编程中的風格。比如:如果对象类别"data.frame"则会以特定方式处理
unclass()可以去除对象的类别。

四  有序因子和无序因子

因子是一种向量最值问题对象它给自己嘚组件指定了一个离散的分类(分组),它的组件由其他等长的向量最值问题组成R提供了有序因子和无序因子。
通俗点说因子就是将對象的值分成不同的组levels)。
用函数factor()创建一个因子levels按序排列(字母序或数值序)。

数组可以看成一个由递增下标表示的数据项的集合例如數值。

数组的生成 如果一个向量最值问题需要在R中以数组的方式被处理则必须含有一个维数向量最值问题作为它的dim属性。

数组的运算 数組可以在算数表达式中使用结果也是一个数组,这个数组由数据向量最值问题逐个元素的运算后组成通常参与运算的对象应当具有相哃的dim属性。

5.2 数组的索引和数组的子块

数组中的单个元素可以通过下标来指定下标由逗号分隔,写在括号
我们可以通过在下标的位置給出一个索引向量最值问题来指定一个数组的子块,不过如果在任何一个索引位置上给出空的索引向量最值问题则相当于选取了这个下標的全部范围。

5.4 向量最值问题数组的混合运算

表达式从左到右被扫描;
参与运算的任意对象如果大小不足,都将被重复使用直到与其他參与运算的对象等长;
当较短的向量最值问题和数组在运算中相遇时所有的数组必须具有相同的dim属性,否则返回一个错误;
如果有任意參与运算的向量最值问题比参与运算的矩阵或数组长将会产生错误;
如果数组结构正常声称,并且没有错误或者强制转换被应用于向量朂值问题上那么得到的结果与参与运算的数组具有相同的dim属性。

构建分区矩阵:cbind()和rbind()cbind()按照水平方向,或者说按列的方式将矩阵连接到一起rbind()按照垂直的方向,或者说按行的方式将矩阵连接到一起

获取行数/列数nrow(A)和ncol(A)分别返回矩阵A的行数和列数。

矩阵乘法:操作符为%*%;

特征徝和特征向量最值问题eigen(Sm)这个函数的结果是由名为values和vectors的两部分组成的列表。如果只是需要特征值:eigen(Sm)$values

线性方程和求矩阵的逆奇异值分解行列式见<R语言笔记>;

所使用的组件是被复制到新的列表中的,对原始对象没有影响
组件总是被编号的,并且可以通过编号指定
区汾Lst[[1]]和Lst[1],'[[...]]'是选择单个元素时使用的操作符而'[...]'是一个一般的下标操作符。因此前者代表列表Lst中的第一个对象;后者是列表Lst的子列表,仅包含列表的第一项
组件的名称可以缩写,可缩写的程度是只要能令组件被唯一的识别就可以了如:Lst$na等价于Lst$name, Lst$w等价于Lst$wife

当连接函数c()的参数為列表时,其结果也是一个模式为列表的对象由参数中的列表作为组件依次连接而成。

数据帧会被当作各列具有不同模式和属性的矩阵
数据帧按照矩阵的方式显示,选取的行或列也按照矩阵的方式来索引

直接创建:那些满足对数据帧的列(组件)限制的对象可以通过函数data.frame来构建成为一个数据帧
强制转换:如果一个列表的组件与数据帧的限制一致,这个列表就可以通过函数as.data.frame()强制转化为一个数据帧
外部攵件:创建数据帧最简单的方法应当是使用read.table()函数从外部文件中读取整个数据帧。

1 组件必须是向量最值问题(数值型字符形,逻辑型)洇子,数值矩阵列表,或其他数据帧;
2 矩阵列表,数据帧向新数据帧提供的变量数分别等于它们的列数元素数和变量数;
3 数值向量朂值问题,逻辑值和因子在数据帧中保持不变字符向量最值问题将被强制转化为因子,其水平是字符向量最值问题中所出现的值;
4 数据幀中作为变量的向量最值问题结构必须具有相同的长度而矩阵结构应当具有相同的行大小。

当觉得使用'$'引用数据帧元素(如't$home')麻烦时可以進行数据帧挂接
挂接后若要对数据帧元素进行赋值操作,仍需用'$'否则视为赋值给数据帧外的元素。
赋值后必须要先卸载(detach)再重新挂接后噺值才可见。

attach()是具有一般性的函数即它不仅能够将目录和数据帧挂接在搜索路径上,还能挂接其他类别的对象特别是模式为"list"的对象可鉯通过相同的方式挂接:
任何被挂接的对象都可以用detach来卸载,通过指定位置编号或者指定名称这样的方式.

函数search()将显示目前的搜索路径可鉯用来查看数据帧/列表的挂接状态。
R可以在搜索路径中包含至多20个项目,列表和数据帧只能在位置2或更靠后的位置上挂接

1 将每个独立的,適当定义的问题所包含的所有变量收入同一个数据帧中并赋予合适的、易理解、易辨识的名称;
2 处理问题时,当相应的数据帧挂接于位置2同时在第1层工作目录下存放操作的数值和临时变量;
3 在结束一次工作之前,将你认为对将来有参考价值的变量通过$标记的形式添加到數据帧里面然后detach();
4 最后,将工作目录下所有不需要的变量剔除并且尽量将剩下多余的临时变量都清除干净。
这样我们可以很简单的在哃一个目录下处理多个问题而且对每个问题都可以使用x,y,z这样的变量名。

七  从文件中读取数据

该函数可以直接将文件中完整的数据帧读入此时文件要符合特定的格式
1 第一行应当提供数据帧中每个变量的名称;
2 每一行(除变量名称行)应包含一个行标号和各变量的值。
3 若没有表头(变量名称行)也没有行标号,只有变量值则默认变量名称为"v1","v2"...
4 若有表头,但没有行标号则可以指定参数header=TRUE.

该函数从键盘或文件中读取數据,并存入向量最值问题或列表中
第一个参数是文件名,如“test.txt”,若为“”或空则从键盘读入数据;
第二个参数用于确定读入数据的模式。  如:list("",0,0) 指定读入到列表中列表有三项,且列表第一项是字符型第二三项是数值型。若为0则指定读入到一个数值向量最值问题中,若为“”则指定读入到字符向量最值问题中

7.3 内置数据集的读取

R本身提供超过50个数据集,同时在功能包(包括标准功能包)中附带更多嘚数据集与S-Plus不同,这些数据即必须通过data函数载入

8.1 R是一个统计表集合(略读)

R提供了一套完整的统计表集合。函数可以对累积分布函数P(X<=x)概率密度函数,分位函数(对给定的q求满足P(X<=x) > q的最小x)求值,并根据分布进行模拟
对于所给的名称,加前缀'd'代表密度(density)'p'代表CDF,'q'代表分位函數'r'代表模拟(随即散布)。这几类函数的第一个参数是有规律的形为dxxx的函数为x,pxxx的函数为qqxxx的函数为p,rxxx的函数为n(rhyper和rwilcox是特例他们的苐一个参数为nn)。目前为止非中心参数(non-centrality

8.2 检测数据集的分布

函数summaryfivenum这两个函数可以给出摘要,后者只给出数值;
函数stem可以将数值统计结果鉯类似直方图的方式显示出来;
函数hist()可以绘制直方图;
函数density和line可以获得更漂亮的密度图;
功能包fun中的ecdf函数能绘制经验累积分布函数;
还可鉯进行拟合正态分布覆盖拟合CDF

8.3 单样本和两样本检验(略读)

九  语句组、循环和条件操作

R是一种表达式语言,也就是说其命令类型只有函数或表达式并由它们返回一个结果。
语句组由花括号‘{ }’确定此时结果是该组中最后一个能返回值的语句的结果。

其中条件表达式expr1必须返回一个逻辑值操作符&&和||经常被用于条件部分。
&和|与&&||的区别在于,&和|按照逐个元素的方式进行计算&&和||对向量最值问题的第一个え素进行运算,只有在必需的时候才对第二个参数求值
if/else结构的向量最值问题版本是函数ifelse,其形式为ifelse (condition,a,b)产生函数结果的规则是:如果condition[i]为真,对应a[i]元素;反之对应的是b[i]元素根据这个原则函数返回一个由a,b中相应元素组成的向量最值问题,向量最值问题长度与其最长的参数等长

break语句可以用来中断任何循环,可能是非正常的中断而且这是中止repeat循环的唯一方式。

next语句可以中止一个特定的循环跳至下一个.

10.2 定义新嘚二元操作符

10.3 指定参数和默认值

10.5 全局变量和局部变量

函数内的赋值都是局部变量,退出函数就丢失了
如果要在函数内进行永久赋值(定義全局变量),需要用到“超赋值”操作符, <<-或者函数assign()

10.6 一些高级示例

删除打印数组中的所有名称

函数主体内出现的标识(symbol)可以被分为3类;正式参数、局部变量和自由变量。
正式参数就是出现在函数参数列表中的参数他们的值由实际的函数参数与正式参数的绑定(binding)过程决定。
局部变量是在参数主体中由表达式求值过程决定的变量。
自由变量为既不是正式参数又不是局部变量的变量赋值之后自由变量成为局部变量。

在R中自由变量的值由函数被创建的环境中与其同名的第一个变量值决定(我理解为最近的同名变量),这种方式被称为词汇式范畴(lexical scope)
而在S中,该值由同名的全局变量决定
例如下面的函数cube,在R中cube(2)=8在S中报错为sq()找不到n。

一个银行账户的例子详见《R语言笔记》。

10.9 类别通用函数和对象定位

如果参数本身没有任何类别属性,或者其类别在特定问题中并不满足通用函数的要求通常会有一个默认嘚动作被执行。
类别机制使用户可以为特定的目的设计和编写通用函数

12.1 高级绘图命令

    高级绘图函数,由函数参数提供数据生成一幅完整嘚图形其中适当的坐标轴,标签和标题都自动生成了(除非你另外指定了)高级绘图命令每次都生成一幅新的图形,清除当前的图形(如果需要的话)

这是一个通用函数:生成图形的类型取决于第一个参数的类型或类别(class)。
如果xy是向量最值问题,plot(x,y)生成一幅y对x的散点图用包含两个元素x,y的一个列表或一个两列的矩阵作为一个参数(第二种形式那样的)也能达成相同的效果
如果x是一个时间序列,这个命令生成一个时间序列图如果x是一个数值型向量最值问题,则生成一个向量最值问题值对它们向量最值问题索引的土而如果x是一个复姠量最值问题,则生成一个向量最值问题中元素的虚部对实部的图
f是一个因子对象,y是一个数值型向量最值问题第一种形式生成一个f嘚条形图;第二种形式生成y对应于f各个水平的箱线图。
df是一个数据帧y是任意对象,expr是由对象名称组成的列表分隔符'+'(例如,a + b + c)前两种形式生成分布式的图形,第一种是数据帧中的变量第二种是一系列被命名的对象。第三种形式生成y对expr中每个对象的图

如果X是一个数值矩陣或数据帧,下面的命令
生成一个配对的散点图矩阵矩阵由X中的每列的列变量对其他各列列变量的散点图组成,得到的矩阵中每个散点圖行、列长度都是固定的

当问题涉及到三、四个变量时,使用coplot更好些如果a和b是数值向量最值问题,c是数值向量最值问题或因子对象(铨都是相同长度的)下面的命令
对应c的某些给定值生成数个a对b的散点图。当c是一个因子时这个命令也就是对c的每个水平生成a对b的散点圖。当c是数值向量最值问题的时候这个数值向量最值问题被分为一系列的条件区间(conditioning intervals),对应c的每个区间生成一个a对b的散点图区间的數量和位置可以通过coplot()的参数given.values来控制,函数co.intervals()也可以用来选择区间我们也可以使用两个给定变量通过命令
对c和d的每个联合条件区间生成a对b的散点图。

函数coplot()和pairs()都可以使用参数panel=这个参数可以用来定制我们得到的图形类型。默认的是points()函数生成一个散点图,不过通过在参数panel=中提供某些其它的低级图形函数我们可以生成需要的各种图形。一个很有用的函数例子是panel.smooth()

分布比较图。第一种形式生成向量最值问题x对期望囸态分数(一个正态记分图)第二个在上面的图上添加一条穿过分布分位点和数据分位点的直线。第三个命令生成x的分位点对y分位点图用于分别比较它们的分布。

创建一个x中数据的点图(dotchart)点图中y轴给出x中数据的标签,x轴给出它们的值它允许对落入某一特定区间的所有數据项方便的进行可视化选择。

有些时候高级绘图函数并不能很精确的生成我们想要的图形这种情况下,我们可以通过低级绘图命令在當前图形上添加信息(例如点、线或文本)。

绘制一个多边形其顶点由(x,y)指定。同时还(可选的)可以加上阴影线如果图形设备允许嘚话还可以将多边形填充。

在当前图形的顶部用大字题添加一个标题main在底部用较小的字体添加子标题sub。

在当前图形的指定边上添加坐标在哪个边上由第一个参数指定(1到4,从底部按照顺时针顺序)其他参数控制坐标的位置|在图形内或图形外,以及标记的位置和标签適合在调用参数为axes=FALSE的函数plot()后添加定制的坐标轴。

低级绘图函数通常都需要一些位置信息(例如x,y坐标)来决定在哪里添加新的元素。坐标鉯用户坐标(user coordinates)的形式给出这个坐标系是根据所提供的数据由之前的高级绘图语句定义的。需要x,y参数的地方还可以选用一个单独的参数即┅个由名为x,y的元素组成的列表。相似的一个两列的矩阵也可以。像locator()(后面会提到)这样的函数也可以按照这种方式交互的指定图形中的位置

R提供了函数,使用户可以通过鼠标从图形中释放信息或添加信息

等待用户使用鼠标左键在当前图形上选择位置。直到n(默认是512)个点嘟选完或者点击了鼠标另一个键(Unix,Windows)在Mac下用鼠标点击图形窗口外的部分也可以结束。参数type的效果和在高级绘图函数中使用时是一样的即茬选择的点绘制指定的图形。默认情况是不绘制图形函数locator()将所选点的坐标返回到一个列表中,列表包含x,y两个组件
通常locator()在调用的时候并鈈带参数。这个功能在为图例或标签这样的图形元素选择位置时比较有用尤其是这些位置不好通过计算得到的时候。举个例子如果要茬一个野点附近添加一些信息,可以使用下面的命令

允许用户在x,y(使用鼠标左键)定义的点附近绘制相应的labels的组件(如果没有给出labels就给出該点的序号)突显该点。当鼠标的另一个键被点击时(Unix,Windows)返回被选点的序号在Mac下通过点击图形窗口外来实现这个效果。
有时我们更想確定图形中的点而非它们的位置。例如我们可能希望从图示中选出某些感兴趣的观测点,然后进行某些操作通过两个数值向量最值問题x,y给定一系列坐标(x; y),我们可以使用identify()函数:
函数identify()本身不绘图但是允许用户移动鼠标,在某点附近点击左键离鼠标指针最近的点将被突顯,并标出其序号(也就是它在向量最值问题x/y中的位置)或者使用identify()的labels参数,把某些信息(例如案例名称)作为突显的标志;或者通过plot=FALSE参數取消所有突显标志当选点的过程结束后,identify()返回所选点的序号;用户可以使用这些序号从x和y中释放所选的点

12.4 使用图形参数

通过图形参數可以定制图形显示的几乎所有方面。R包含大量的图形参数可以控制的包括线条类型,颜色图标排列,文本对齐等等

通过par()函数设定圖形参数的值会持续性的更改参数的值,也就是说这之后(在当前设备上)所有对图形函数的调用都受到新值的影响
函数par()用于存取和修妀当前图形设备的图形参数列表。
par()不带任何参数返回当前设备所有图形参数和它们的值的列表。

par(c("col","lty")) 参数为一个字符向量最值问题仅返回參数中指定的图形参数(也是作为一个列表)。

par(col=4, lty=2) 带指定参数(或一个列表型参数)设定指定图形参数的值,并将参数的原始值作为一个列表返回

2 临时性变更:图形函数的参数

图形参数也可以作为(几乎)所有图形函数的命名参数。这种方式的效果和用于par()函数的效果是一樣的只不过这种改变只在函数调用的区间内有效。比如:
生成一个以加号作为绘图符号的散点图而不改变后续图形的默认的绘图符号。

R图表由点、线、文本和多边形(填充区)组成下面的图形参数控制了图形元素的绘制:
pch="+" 用来绘点的字符。这个默认值随不同的图形驱動是不同的不过通常都是'±'。除非使用"."作为绘图字符否则绘制的点都会比适当的位置高一点或者低一点,而不是恰好在指定位置
pch=4当給定一个0到18的整数时,会生成一个特殊的绘图符号通过下面的命令可以看这些符号都有什么。
lty=2 线条类型并不是所有图形设备都支持多種线条类型(在那些支持的设
备上也不全一样),不过线条类型1始终是实线2及以上的是点、划线或者它们的组合。
lwd=2 线条宽度所需的线條宽度,是"标准"线条宽度的倍数对line()等函数绘制的线条和坐标轴都有效果。
col=2 点、线、文本、填充区和图像使用的颜色每种图形元素都有其可用的颜色列表,这个参数的值就是颜色在列表中的序号显然,这个参数值对有限的一类设备有效
font=2 指定文本所使用字体的一个整数。如果可能的话设备驱动会把1对应普通文本,2对应粗体3对应斜体,4对应粗斜体
adj=-0.1 文本对齐和绘图位置有关。0代表左对齐1代表右对齐,0.5代表水平的中间位置当前的值使会图位置到左端距离的比例,所以-0.1在文本和绘图位置之间留10%的空白
cex=1.5 字符缩放。这个值是所需文本字苻(包括绘图字符)的大小与默认文本大小相关。

很多R的高级图形都有坐标轴你可以使用低级图形函数axis()自己创建坐标轴。坐标轴包含彡个主要组件:轴线axis line(线条类型由参数lty控制)标记tick mark(沿着轴线划分单元),标号tick label(用来标出这些单元)这些组件可以用下面这些参数萣制。
lab=c(5,7,12)前两个数字分别是x和y轴上所要划分的区间数第三个数字是坐标轴标签的长度,用字符数来衡量(包括小数点)参数的值如果选嘚太小可能导致所有标号都聚在一起。
las=1 坐标轴标签的方向0代表总是和坐标轴平行,1代表总是水平的2代表总是垂直于坐标轴。
mgp=c(3,1,0)坐标轴组件的位置第一个组件是坐标轴标签到坐标轴的距离,单位是文本行(text lines)第二个组件是到标号的距离,最后一个是轴的巍直到轴线的距离(┅般都是0)正数代表绘图区域外,负数代表区域内
tck=0.01 标号的长度,绘图区域大小的一个分数作单位当tck比较小时(小于0.5),就强制x和y轴仩的标记为相同大小tck=1就是生成网格线。取负值时标记画向绘图区域外内部标记可以使用tck=0.01和mgp=c(1,-1.5,0)。
分别是x、y轴的类型如果是s(standard)或e(extended)类型,那最夶和最小的标记都始终在数据区域之外如果有某个点离边界非常近,那么扩展型(extended)的轴会稍稍扩展一下这种类型的轴有时会在边界附近留出大片空白。而i(internal)或r(默认值)类型的轴标记始终在数据区域内,不过r类型会在边界留出少量空白
如果这个参数设为d,就锁定当前轴对の后绘制的所有图形都用这个轴(直到参数被重新设定为其他的那几个值)。这个参数适用于生成一系列固定尺度的图

在R中一个单独图形,图(figure)包含一个绘图区(plot region),以及环绕着这个区域的边缘(其中可能含有坐标轴标签、标题等等)(通常)这两部分以轴为边界。
控淛图的样式的图形参数包括:
mai=c(1,0.5,0.5,0)分别是底部左侧,顶部右侧的宽度,单位是英寸
由于更改一个就会改变另一个的值,所以在这个意义仩mai和mar是等价的。这个参数的默认值通常都太大了;右侧边缘很少用到如果没标题,顶部边缘也不需要左侧和底部的边缘应当足够大,以容纳坐标轴和标号此外,默认值并没有考虑到设备表面的大小:比如使用postscript()驱动,height=4参数时除非用mar,mai另外设定否则图的边缘就要占上大约50%。使用多图环境时(后面会提到)边缘会减少一半,不过这在多图共用一页的时候可能还不够

R允许在一页上创建一个n£m的图嘚阵列。每个图由自己的边缘图的阵列还有一个可选的外部边缘,如下图所示
与多图环境相关的图形参数有:
   设定多图阵列的大小。苐一个值是行数第二个值是列数。这两个参数唯一的区别是mfcol把图按列排入mfrow把图按行排入。上图所示的版式可用mfrow=c(3,2)创建;上图显示的是绘淛四幅图后的情况
    当前图在多图环境下的位置。前两个数字是当前图的行、列数;后两个是其在多图阵列中的行列数这个参数用来在哆图阵列中跳转。你甚至可以在后两个数中使用和真值(true value)不同的值在同一页上得到大小不同的图。
    当前图在页面的位置取值分别是左下角到左边界,右边界下、上边界的距离与对应边的百分比数。给出的例子是一个页面右下角的图这个参数可以设定图在页面的绝对位置。
       外部边缘的大小与mar和mai相似,第一个用文本行作单位第二个以英寸作单位,从下方开始按照顺时针顺序指定
外部边缘对页标题这類东西很有用。文本可以通过带outer=TRUE参数的mtext()函数加入外部边缘默认情况下是没有外部边缘的因此必须通过oma或omi指定。

R几乎可以在任何一种类型嘚显示器和打印设备上生成(不同质量的)图形不过,在这之前需要告诉R要处理的是哪一种设备。这通过启动一个设备驱动来完成
設备驱动通过调用设备驱动函数来启动。
某些常用的设备驱动有:
当一个设备使用完之后可以通过下面的命令终止设备驱动
这个命令可鉯确保设备已经结束;例如,在某些硬拷贝的设备中这个命令可以保证每页都已经完成,并且都被传送到打印机了

每个对设备驱动的噺调用都会打开一个新的图形设备,在设备列表中加入新的一项这个设备就成为当前设备,图形输出就传送到这个设备
dev.off(k)    终止图形列表位置k的那个图形设备。对于某些设备比如postscript,这个命令会立刻打印文件或者正常结束文件具体怎样处理取决于设备是怎样初始化的。
建竝一个设备k的拷贝其中device是一个设备函数,例如postscript如果需要的话可以在'. . . '中指定其它的参数,dev.print效果相似不过复制的设备会立刻关闭,所以咑印硬拷贝这样的终止操作也会被立即执行

}

主成分分析是一种常用的降维方法它不使用标签信息,通过将原始坐标空间的数据( d×1)投影到新的正交空间( k×1)中实现数据降维所谓的主成分就是指数据在新空間的基的方向。PCA以方差作为信息损失衡量的标准使得数据降维过程中信息损失最小,即降维后数据的方差要尽量大PCA首先找到所有数据方差最大的方向,并将其作为新的坐标空间的第一个轴的方向然后在这个方向的垂直超平面上寻找第二个投影后方差最大的方向,并作為新坐标空间第二个轴的方向以此类推,直到找到需要的k个方向也就是K个主成分,显然这k个新的基方向是两两垂直的PCA的主要过程可鉯用“扭动坐标轴,保留K个轴”来形容

为什么要以方差最大为依据呢?降维是为了数据更好地表示与计算显然我们不希望降维后的数據成了一坨,使得原本分界明显的数据掺和在一起例如,将数据投影到一维坐标系中显然绿色的投影更好一些,因为其分散程度大吔就是方差更大。

对n个d维数据构成的数据集 d×n)要降维到k维的PCA过程如下:

1、将样本去均值得到新的

3、对协方差矩阵进行特征值特征向量朂值问题分解

4、将特征值从大到小排序,将前K个特征值对应的特征向量最值问题组合成变换阵U(

在推导之前我们首先要明确三件事:一個是向量最值问题的内积与投影,第二个是基变换第三个是协方差矩阵。

2.1-向量最值问题的内积与投影:

θ为两向量最值问题夹角如图所示二维空间两个向量最值问题,向量最值问题a到b的投影应为b上由原点到绿线截断的部分根据几何知识,投影长度为 acosθ于是 当向量最值问题b模长为1时,向量最值问题a与向量最值问题b的内积就是向量最值问题a到向量最值问题b的投影的矢量长度

2.2-基的表示与变换:

0 0 0 (1,0)T,(0,1)T的基,也就是说对平面上一个矢量例如 0 0 [10?01?][32?],其中左边表示基右侧表示在这组基下的表示。

(3,2)T在新的基下进行表示其实只需要将原始基投影到新的基上即可,即点在新的基下的表示等于原始基到新基的转换乘以原始基乘以点在原始基下的表示


注:左乘一个矩阵,既可以鉯基变换的角度去看也可以以矢量运动的角度去看,这与在特征值与特征向量最值问题中的理解并不矛盾

协方差矩阵的每个元素是各個向量最值问题元素之间的协方差,因此它是对称矩阵对角线元素为各维度的方差,其计算公式为

xˉ=n1?i=1n?xi?为所有样本的均值等式朂右侧只表示了两个维度,意在说明协方差矩阵对角线元素为样本个维度的方差其余元素为协方差,可以表示两个维度线性相关的程度当两个向量最值问题垂直时,其协方差为0

主成分分析的基本思想是以方差最大化为标准,寻找 k个(小于d)正交轴使得数据在其上投影得到新的数据。主要步骤是首先寻找一个样本投影后方差最大的方向然后在该方向的垂直的超平面内寻找下一个方差最大的方向,直箌找到所有

我们首先寻找第一个方向 u1?它能使投影后的数据的方差最大。投影后样本点 u1T?xi?,计算投影后的方差

为了找到最优方向限制投影向量最值问题的模长为1,即 u1T?u1?=1求解该限制条件下二次函数最优解,使用拉格朗日乘子法()使拉格朗日乘数对


}

我要回帖

更多关于 向量最值问题 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信