R语言中.R和.RDatay有什么区别

  1. 通常数字,字母. 和 _都是允许嘚(在一些国家还包括重音字母)。不过一个命名必须以 . 或者字母开头,并且如果以 . 开头第二个字符不允许是数字。
  2. 命令可以被 (;)隔开或鍺另起一行。
  3. 基本命令可以通过大括弧({和}) 放在一起构成一个复合表达式(compound expession)
  4. 一行中,从井号(#)开始到句子收尾之间的语句就是是注释
  5. 是動态类型、强类型的语言。
  6. 的基本数据类型有数值型(numeic)、字符型(chaacte)、复数型(complex)和逻辑型(logical)对象类型有向量、因子、数组、矩阵、数据框、列表、时间序列。

ESC——中断当前计算

cat()——查看变量

help("[[") 对于特殊含义字符,加上双引号或者单引号变成字符串也适用于有語法涵义的关键字 if,fo 和 function

help.seach()——允许以任何方式(话题)搜索帮助文档

example(topic)——查看某个帮助主题示例

getwd()——获取当前工作文件目录

list.files()——查看当前文件目录中的文件

seach()——通过seach()函数可以查看到启动时默认加载7个核心包。

基础函数:数学计算函数统计计算函数,日期函数包加载函数,数据处理函数函数操作函数,图形设备函数

data()——列出可以被获取到的存在的数据集(base包的数据集)

批处理文件和结果重定向

sink()——把后续代码输出重新恢复到终端上展示

注:attach()detach()均是在默认变量搜索路径表中由前向后找到第一个符合变量名称因此之前若存在偅名变量,有可能会出现问题!!!

输入输出读入输出数据、文件)

x <- scan(file="")——手动输入数据同时scan可以指定输入变量的数据类型,适合大数據文件

pint()——打印

save.image("./data.Data")——把原本在计算机内存中(工作空间)活动的数据转存到硬盘中

load("./Data")——加载目录中的*.Data,把文档-词项矩阵从磁盘加载到内存中

是一种基于对象(Object)的语言对象具有很多属性(Attibute),其中一种重要的属性就是类(Class)最基本的类包括了数值(numeic)、逻辑(logical)、字符(chaacte)、列表(list),符合类包括矩阵(matix)、数组(aay)、因子(facto)、数据框(datafame)

mode()——查看基本数据类型

as.<数据类型>——改变对象的數据类型

逻辑类型+数值类型=数值类型

逻辑类型+字符类型=字符类型

数值类型+字符类型=字符类型

methods(x)——查看x函数的源码,有些自带函数输入名称x鈳以直接看到有一些需要调用methods方法才能查看函数x的源码,出现多重名输入对应名称即可

st()——查看数据(框)中的数据总体信息(仳如样本个数、变量个数、属性变量名称、类型)

*|,&!——或且非,注意是单个不是&&!

ANY,ALL——任意全部

apply(A,MaginFUN,...)——A为矩阵Magin设萣待处理的维数,为1是横排(行)为2是竖排(列)做运算,Fun是运算函数

points(xy)————低级绘图,画个点坐标为向量x,y

lines(xy)——低級绘图,画一条线坐标为向量x,y

baplot(<vecto>)——绘制柱状图vecto可增加名称。也可以绘制直方图和hist()均分数据不太一样,需要用table()统计各个子汾段下样本数量后在画图

image(volcano)——加载栅格(矩阵)图像

pa(mfow=c(1,2),omama)——mfow设置图形输出窗口为1行2列,添加ca包oma是所有图像距离边框的距离(底部,左边顶部,右边)ma是每幅图像对边框的距离,默认是c(5, 4, 4, 2) + 0.1

ug(jitte(<data>),side =2)——检验离群点数据ug()原图中执行绘图绘制在横坐标上,side為2是纵坐标jitte(<data>)对绘制值略微调整,增加随机排序以避免标记值作图重合

pais(data)——数据框各个变量的散布图

coplot(y~x|a+b)——多个变量时的散点图,在ab(姠量或是因子)的划分下的y与x的散点图

identify(<data>)——交互式点选,单击图形中的点将会输出对应数据的行号,右击结束交互

boxplot()——箱图研究变量的中心趋势,以及变量发散情况和离群值上体顶部和底部为上下四分位数,中间粗线为中位数上下伸出的垂直部分为数据的散步范围,最远点为1.5倍四分为点超出后为异常点,用圆圈表示boxplot(y~f,notch=TUE,col=1:3,add=TUE)#y是数据,f是由因子构成notch是带有切口的箱型图,add=T图叠加到上一幅图

plot(f,y)——箱线图f是因子,y是与f因子对应的数值

stipplot(x1~y|x2)——lattice包的复杂箱图存在两个因子x1,x2控制下的y, x2按照从左到右,从下到上的顺序排列左下方嘚x2值较小

colos()——列出对应的颜色数组

qcc()——qcc包,监控转化率型指标的质量监控图(P控制图)监控异常点,前提是二项分布足够大后趨于正态分布

optim(c(0,0),<func>)——优化问题函数c(0,0)是优化函数参数的初始值,返回值pa是参数最优点值value是参数的最优点时平方误差值,counts是返回执行输入函數func的次数以及梯度gadient的次数convegence值为0表示有把握找到最优点,非0值时对应错误message是一些其它信息。

ound ——取整精确

ceiling()——取整,偏向数值小的

floo() ——取整偏向数值大的

edit()——编辑数据表格

m(x,y)——移除对象(变量)x和y

na.fail()——如果向量中至少包括1个NA值则返回错误;如果不包括任何NA,则返回原有向量

mege函数参数的说明:

注:apply与其它函数不同它并不能明显改善计算效率,因为它本身内置为循环运算

tansfom(x,y)——将x和y的列转换成·一个数据框。

melt(dataid.vas)——转换数据溶解。修改数据组织结构创建一个数据矩阵,以id.va作为每行的编号剩余列数据取值仅作为1列数值,并用原列名作为新数值的分类标记

cast(data, useid~itemid,value="attings",fill=0)——统计转换数据,生成矩阵公式~左边的作为行表名,右边的作为列表名之后可以鼡co()计算每列数据之间的相关系数,并计算距离

ncha()——获取字符串长度,它能够获取字符串的长度它也支歭字符串向量操作。注意它和length()的结果是有区别的什么区别

paste("a", "b", sep="")——字符串粘合,负责将若干个字符串相连结返回成单独的字符串。其优点茬于就算有的处理对象不是字符型也能自动转为字符型。

stsplit(Asplit='[,.]') ——字符串分割,负责将字符串按照某种分割形式将其进行划分它正是paste()的逆操作。

subst(data,stat,stop)——字符串截取能对给定的字符串对象取出子集,其参数是子集所处的起始和终止位置子集为从stat到stop的下标区间

gep()——字符串匹配,负责搜索给定字符串对象中特定表达式 并返回其位置索引。gepl()函数与之类似但其后面的"l"则意味着返回的将是逻辑值

gegexp()——只查询匹配的第一个特定字符串的下标位置

gsub("a",1,<vecto>)——字符串替代,负责搜索字符串的特定表达式并用新的内容加以替代。

sub()函数——和gsub是类似的但呮替代第一个发现结果。

if—else——分支语句

while——循环语句通过设定循环范围

向量数组初始小标序号从1开始

向量增加元素可以直接通过“vecto[n+1]<-0”方式增加

vecto["A"]——通过名称访问对应元素

c(0,1)——创建向量向量内元素类型应一致!

seq(5,9) 5:9 ——连续向量等差数列

seq(5,90.5)——以0.5為间隔创建

match(x,tablenomatch,incompaables)——匹配函数返回x对应值在table中是否存在,并从1开始编号x是查询对象,table是待匹配的向量nomatch是不匹配项的设置值(默认为NA值),incompaables设置table表中不参加匹配的数值默认为NULL

ank()——秩排序,有重复数字的时候就用这个根据数值之间的远近输出序号

ev()——依据下标從后往前倒排数据

duplicated(x)——查找重复数据,重复序号返回为TUE

pmin(x1,x2,...)——比较向量中的各元素并把较小的元素组成新向量

union(x, y)——(并集)合并兩组数据,x和y是没有重复的同一类数据比如向量集

intesect(x, y)——(交集)对两组数据求交集,x和y是没有重复的同一类数据比如向量集

setdiff(x, y)——(补集)x中与y不同的数据,x和y是没有重复的同一类数据比如向量集,重复不同不记

setequal(x, y)——判断x与y相同返回逻辑变量,Tue为相同False不同。x和y是没囿重复的同一类数据比如向量集

is.element(x, y)  %n%——对x中每个元素,判断是否在y中存在TUE为x,y重共有的元素Fasle为y中没有。x和y是没有重复的同一类数据比如向量集

Vectoize()——将不能进行向量化预算的函数进行转化

bind()——矩阵合并,按行合并自变量宽度应该相等

cbind()——矩阵合并,安列合並自变量高度应该相等

solve(A)——求逆矩阵

eigen(A) ——求距阵的特征值与特征向量,Ax=(Lambda)xA$values是矩阵的特征值构成的向量,A$vectos是A的特征向量构成的矩陣

*——矩阵中每个元素对应相乘

向量里面存的元素类型可以是字符型而因子里面存的是整型数值对应因子的类别(levels)

gl(n,klength)——因子,n為水平数,k为重复的次数length为结果的长度

as.facto()——将向量转化为无序因子,不能比较大小

as.ode()——将向量转化为有序因子

is.ode()——判断是否为有序因子

unlist()——列表转化为向量

is.na()——判断na值存在na是指该数值缺失但是存在。

2、用最高频率值来填补缺失值

3、通过变量的相关关系来填补缺失值

4、通過探索案例之间的相似性来填补缺失值

a:b——a和b的交互效应

a+b——a和b的相加效应

a*b——相加和交互效应(等价于a+b+a:b)

1——y~1拟合一个没有因子影响嘚模型(仅仅是截距)

-1——y~x-1表示通过原点的线性回归(等价于y~x+0或者0+y~x)

va()——样本方差(n-1)

sd——样本标准差(n-1)

fivenum(x,na.m=TUE)——五数总括:中位数丅上四分位数,最小值最大值

sum(x>4)——统计向量x中数值大于4的个数

sqt()——开平方函数

abs()——绝对值函数

'%/%'——求商(整数)

expm1  : 当x的绝對值比1小很多的时候,它将能更加正确的计算exp(x)-1

因为10>e>1常用对数比自然对数更接近横坐标轴x

log1p()——log(1+p),用来解决对数变换时自变量p=0的情况指数和对数的变换得出任何值的0次幂都是1

特性:对数螺旋图。当图像呈指数型增长时常对等式的两边同时取对数已转换成线性关系

圆周率用 ‘pi’表示

nom(nmean=0.sd=1)——生成n个正态分布随机数构成的向量

qnom()——下分为点函数

qqline(data)——低水平作图,用qq图的散点画线

summay()——描述统计摘要和 Hmisc()包的descibe()类似,会显示NA值四分位距是第1个(25%取值小于该值)和第3个四分位数(75%取值小于该值)的差值(50%取值的数值),可以衡量变量与其中心值的偏离程度值越大则偏离越大。

hist(<data>pob=T,xlab='横坐标标题'main='标题',ylim=0:1feq,beaks=seq(0,550,2))——pob=T表示是频率直方图在直角坐标系中,用横轴每个小区间对應一个组的组距纵轴表示频率与组距的比值,直方图面积之和为1;pob位FALSE表示频数直方图;ylim设置纵坐标的取值范围;feq为TUE绘出频率直方图counts绘絀频数直方图,FALSE绘出密度直方图beaks设置直方图横轴取点间隔,如seq(0,550,2)表示间隔为2从0到550之间的数值。

chisq.test(xy,p)——Peason拟合优度X2(卡方)检验x是各个區间的频数,p是原假设落在小区间的理论概率默认值表示均匀分布,要检验其它分布,比如正态分布时先构造小区间并计算各个区间的概率值,方法如下:

va.test(xy)——双样本方差比的区间估计

独立性检验(原假设H0:X与Y独立)

相关性检验(原假设H0:X与Y相互独立)

wilcox.test(x,y=NULL,mu,altenativepaied=FALSE,exact=FALSE,coect=FALSEconf.int=FALSE)——秩顯著性检验(一个样本来源于总体的检验,显著性差异的检验)Wilcoxon秩和检验(非成对样本的秩次和检验),mu是待检测参数,比如中值paied逻辑變量,说明变量xy是否为成对数据,exact说民是否精确计算P值coect是逻辑变量,说明是否对p值采用连续性修正conf.int是逻辑变量,给出相应的置信区間

nlm(f,p)——求解无约束问题求解最小值,f是极小的目标函数p是所有参数的初值,采用Newton型算法求极小函数返回值是一个列表,包含极小值、极小点的估计值、极小点处的梯度、Hesse矩阵以及求解所需的迭代次数等

显著性差异检验方差分析,原假设:相同相关性)

mcnema.test(x,y,coect=FALSE)——相同个体上的两次检验检验两元数据的两个相关分布的频数比变化的显著性,即原假设是相关分布是相同的y是又因子构成的对潒,当x是矩阵时此值无效

aov(x~f)——计算方差分析表,x是与(因子)f对应因素水平的取值用summay()函数查看信息

aov(x~A+B+A:B)——双因素方差,其中X~A+B中A和B是不同因素的水平因子(不考虑交互作用)A:B代表交互作用生成的因子

fiedman.test(x,f1f2,data)——Fiedman秩和检验不满足正态分布和方差齐性,f1昰不同水平的因子f2是试验次数的因子

lm(y~.,<data>)——线性回归模型“.”代表数据中所有除y列以外的变量,变量可以是名义变量(虚拟变量k个水平因子,生成k-1个辅助变量(值为0或1))

summay()——给出建模的诊断信息:

2、检验多元回归方程系数(变量)的重要性t检验法,P>|t|, P值越尛该系数越重要(拒绝原假设)

3、多元方或者调整2方标识模型与数据的拟合程度,即模型所能解释的数据变差比例方越接近1模型拟合樾好,越小越差。调整方考虑回归模型中参数的数量更加严格

4、检验解释变量x与目标变量y之间存在的依赖关系,统计量F用p-value值,p值越尛越好

6、精简线性模型向后消元法

pedict(lm(y~x))——直接用用原模型的自变量做预测,生成估计值

plot(x,which)——回归模型残差图which=1~4分别代表画普通残差与拟合徝的残差图,画正态QQ的残差图画标准化残差的开方与拟合值的残差图,画Cook统

influence.measues(model)——model是由lm或者glm构成的对象对回归诊断作总括,返回列表中包括广义线性模型也可以使用

anova(<lm>)——简单线性模型拟合的方差分析(确定各个变量的作用)

3、线性——ca包cPlots()绘制成分残差图(偏残差图)可以看因变量与自变量之间是否呈线性

4、同方差性——ca包ncvTest()原假设为误差方差不变,若拒绝原假设则说明存在异方差性

5、多重囲线性——ca包中的vif()函数计算VIF方差膨胀因子,一般vif>2存在多重共线性问题

异常点分析(影响分析)

kappa(zexact=FALSE)——多重共线性,计算矩阵的条件数k,若k<100则认为多重共线性的程度很小;100<=k<=1000则认为存在中等程度或较强的多重共线性;若k>1000则认为存在严重的多重共线性z是自变量矩阵(标准囮,中心化的相关矩阵),exact是逻辑变量当其为TUE时计算精准条件数,否则计算近似条件数用eigen(z)计算特征值和特征向量,最小的特征徝对应的特征向量为共线的系数

step()——逐步回归,观察AIC和残差平方和最小广义线性模型也可以使用

glm(fomula,family=binomial(link=logit)data=data.fame)——广义线性模型,logit默认为②项分布族的链接函数fomula有两种输入方法,一种方法是输入成功和失败的次数另一种像线性模型的公式输入方式

glmnet()——正则化glm函数,glmnet包执行结果的行数越前正则化越强。其输出结果的意义是:

1)DF是指明非0权重个数但不包括截距项。可以认为大部分输入特征的权重为0時这个模型就是稀疏的(spase)。

3)超参数(lambda)是正则化参数lambda越大,说明越在意模型的复杂度其惩罚越大,使得模型所有权重趋向于0

plot”))——画回归模型残差图,which为1表示画普通残差与拟合值的残差图2表示画正态QQ的残差图,3表示画标准化残差的开方与拟合值的残差图4表礻画Cook统计量的残差图;caption是图题的内容。

avova(sol1,sol2,test="Chisq")——比较模型两个模型广义线性模型可用卡方检验(分类变量),不拒绝原假设说明两个没有显著差异即用较少自变量模型就可以。

poly(想degee=1)——计算正交多现实,x是数值向量degee是正交多项式的阶数,并且degee<length(x)样本个数例如建立②次正交式回归模型:lm(y~1+poly(x,2))

nls(fomula,data,stat)——求解非线性最小二乘问题fomula是包括变量和非线性拟合的公式,stat是初始点用列表形式给出

nlm(f,p)——非線性最小二乘构造最小目标函数,方程移项2为0f是极小的目标函数,p是所有参数的初值采用Newton型算法求极小,函数返回值是一个列表minimum嘚值便是极小值,estimate是参数的估计值例如:

pat( y ~., <data>)——pat包回归树,叶结点目标变量的平均值就是树的预测值生成一棵树,再做修剪(防止過度拟合)内部10折交叉验证

pintcp(<t>)——查看回归树结果,t是指pat()函数的运行结果模型plotcp(<t>)以图形方式显示回归树的参数信息

snip.pat(<t>, c(4,7))——修剪,需要修剪的那个地方的是结点号c(47),指出输出树对象来需要修剪的树的结点号

andomFoest(y ~. <data>)——组合模型,由大量树模型构成回归任务采用预测結果的平均值。

ymd()——lubidate包将"年-月-日"格式的字符串转换成日期对象,(可以比较前后时间)

aima(dataode=c(p,dq))——计算模型参数并建模,TSA包中ode设置A过程的阶数p,差分过程的d(用于稳定化)和MA过程的阶数q当p=d=0时,表示只使用MA过程对序列建模结果sol<-aima()调用pedict(sol,n.ahead=5)$ped进行预测n.ahead参数用于設置预测新阶段的数据量(未来5个月),pedict(...)$se标准误差SE用于计算预测范围(预测范围=预测值+-置信度(alpha)*标准误差SE。

eacf(data)——根据凸显中三角区域顶点的行坐标和列坐标分别确定AMA的p和q

tsdiag(sol)——绘制模型残差的散点图、自相关图和不同阶数下的Box.test体检验p-value值

”manhattan“绝对值(马氏)距离

“binay”定性变量的距离

hclust(d,method=“complete”)——系统聚类d是又dist构成的距离结构,method是系统聚类的方法(默认为最长距离法)

“single”最短距离法“;

”median“中间距离法;

”wad“离差平法和法

plot(hclist()hang=0.1)——谱系图,hang表示谱系图中各类所在的位置hang取负值时,表示谱系图从底部画起

as.dist()——将普通矩阵轉化为聚类分析用的距离结构

ect.hclust(x,kh,bode)——在谱系图(plclust())中标注聚类情况确定聚类个数的函数,x是由hclust生成的对象k是类个数;h是譜系图中的阈值,要求分成的各类的距离大于h;bode是数或向量标明矩形框的颜色;例如:ec.hclust(hclust(),k=3)

pincomp() 和 pcomp()——主成分分析结果的标准差显礻每一个主成分的贡献率(成分方差占总方差的比例),返回值loadings每一列代表每一个成分的载荷因子

loadings(x)——显示主成分或因子分析中loadings载荷的内嫆主成分是对应割裂,即正交矩阵Q;因子分析中是载荷因子矩阵x是pincomp()或者factanal()得到的对象。

pedict(xnewdata)——预测主成分的值,x是由pincomp()嘚到的对象newdata是由预测值构成的数据框,当newdata为默认值时预测已有数据的主成分值例如pedict(<pca>)[,1]——用主成分的第一列作为原有数据的预测结果

sceeplot(x,type=c("baplot",”lines“))——主成分的碎石图确定主成分维数的选择,x是由pincomp()得到的对象type是描述画出的碎石图的类型,”baplot“是直方图”lines“是直线图。

biplot(xchoices=1:2,scale=1)——画关于主成分的散点图和原坐标在主成分下的方向x是由pincomp()得到的对象,choices选择主成分默认为第1、2主成分

pat——决策树算法

dply——输出处理包

tbl_df()——将数据转换为一种特殊的数据框类型tbl,类似(as.data.fame())仅是改变了显示,数据结构没有变化

data()——查看自带數据列表

iis——鸢尾花数据集总共150行3种类别

nnet()——在nnet包中BP神经网络存在一层的隐藏层。

size=0设置隐藏层中神经元数,设置为0时表示建立一层鉮经网络?没有隐藏层

Wts:初始系数不设定则使用随机数设定

linout:为TUE时,模型输出(目标变量)为连续型实数一般用于回归分析;如果为FALSE(默认取值)则输出为逻辑数据,一般用于(目标变量为分类型)分类分析也可以把linout设为TUE再添加一个阶跃函数转为逻辑型输出。

maxit:最大迭代次数iteations默认为100次,一般尽量将maxit设置大于观测结果final value上显示的迭代次数

skip:是否跳过隐藏层,如果为FALSE(默认)则不跳过

decay:加权系数的衰減

ksvm()——kenlab包中分类,分类时用的默认参数树径向基核函数

Weka包:C4.5(分类输入变量是分类型或连续型,输出变量是分类型)

pat包:分类回归树(CAT)算法(输入、输出分类或连续变量)

pat()——拟合树模型参数xval设置k折交叉验证

paty包:条件推理决策树(CHAID)算法(输入、输出分类或连续變量)

andomFoest包:分类与回归树的随机森林

andomFoest()——随机森林,预测分类,估计变量的重要性(通过计算每个变量被移除后随机森林误差的增加(選择变量需要用到模型的信息但用其它模型来做预测)

paty包:条件推理决策树的随机森林

ts——在stats包中创建一个时间序列

coedata()——获取时间序列嘚数值

nativeBayes()——朴素贝叶斯分类器,可以处理分类型和连续型自变量

TT包——技术指标集合

quantmod包——分析金融数据

function(fomula, tain, test...)——特殊参数“...",允许特定函数具有可变参数,这个参数结构是一个列表用来获取传递给前三个命名参数之后的所有参数。这个结构用于给实际模型传递所需偠的额外参数

(这种直接在分布前面加前缀的语法太难读了,pt() 误以为还是一个函数实际上的含义是p(t()),为什么不写成这个格式呢 不过t()返回什么好...)

若概率0<p<1,随机变量X或它的概率分布的分位数Za是指满足条件p(X>Za)=α的实数。如t分布的分位数表,自由度f=20和α=0.05时的分位数为1.7247。 --这个萣义指的是上侧α分位数

掷骰子掷到一即视为成功。则每次掷骰的成功率是1/6要掷出三次一,所需的掷骰次数属于集合 { 3, 4, 5, 6, ... } 掷到三次一的擲骰次数是负二项分布的随机变量。

nbinom(n,size,pob,mu) 其中n是需要产生的随机数个数size是概率函数中的,即连续成功的次数pob是单词成功的概率,mu未知..(mu是希臘字母υ的读音)

n次伯努利试验前n-1次皆失败,第n次才成功的机率

它描述了由有限个(m+n)物件中抽出k个物件成功抽出指定种类的物件的次数(鈈归还)。

当n=1时这是一个0-1分布即伯努利分布,当n接近无穷大∞时超几何分布可视为二项分布

hype(nn,m,n,k),nn是需要产生的随机数个数,m是白球数(计算目标是取到x个白球的概率)n是黑球数,k是抽取出的球个数

泊松分布的参数λ是单位时间(或单位面积)内随机事件的平均发生率.泊松分布適合于描述单位时间内随机事件发生的次数如某一服务设施在一定时间内到达的人数,电话交换机接到呼叫的次数汽车站台的候客人數,机器出现的故障数自然灾害发生的次数等等.

对于连续变量,dfunction的值是x去特定值代入概率密度函数得到的函数值

理论上可以证明如果紦许多小作用加起来看做一个变量,那么这个变量服从正态分布

画出正态分布概率密度函数的大致图形:

用正太分布产生一个16位长的随机数芓:

假设随机变量X为 等到第α件事发生所需之等候时间。

指数分布可以用来表示独立随机事件发生的时间间隔,比如旅客进机场的时间间隔、中文维基百科新条目出现的时间间隔等等

假设在公交站台等公交车平均10分钟有一趟车,那么每小时候有6趟车即每小时出现车的次數~ Exponential(1/6)

60/(exp10,1/6)即为我们在站台等车的随机时间,如下:

可以看见竟然有一个42.6分钟的随机数出现据说这种情况下你可以投诉上海的公交公司。

不过x符匼指数分布1/x还符合指数分布吗?

按照以上分析一个小时出现的公交车次数应该不符合指数分布

它广泛的运用于检测数学模型是否适合所得的数据,以及数据间的相关性数据并不需要呈正态分布

k个标准正态变量的平方和即为自由度为k的卡方分布。

变量x仅能出现于0到1之间

空气中含有的气体状态的水分。表示这种水分的一种办法就是相对湿度即现在的含水量与空气的最大含水量(饱和含水量)的比值。峩们听到的天气预告用语中就经常使用相对湿度这个名词

相对湿度的值显然仅能出现于0到1之间(经常用百分比表示)。冬季塔里木盆地嘚日最大相对湿度和夏季日最小相对湿度证实它们都符合贝塔分布

应用在当对呈正态分布的母群体的均值进行估计。当母群体的标准差昰未知的但却又需要估计时我们可以运用学生t 分布。

学生t 分布可简称为t 分布其推导由威廉·戈塞于1908年首先发表,当时他还在都柏林的健力士酿酒厂工作因为不能以他本人的名义发表,所以论文使用了学生(Student)这一笔名之后t 检验以及相关理论经由罗纳德·费雪的工作发扬光大,而正是他将此分布称为学生分布。

一个F-分布的随机变量是两个卡方分布变量的比率。F-分布被广泛应用于似然比率检验特别是方差分析中

df1,df2是两个自由度ncp同t分布中的ncp。

}

语言编程入门之一:导论

简单来講编程是借助计算机来解决某个问题。学习编程的就是训练我们解决问题的能力有这样一种说法:在未来,不会编程的人即是文盲

為什么要学习编程大部分情况下解决某些问题还需要依赖一些事实或数据,结合数据分析的框架和计算工具来帮助我们决策和判断这时候语言编程就会派上用场。例如从大的方面来看投资方要决定在何处建立风力发电场,就需要采集天气数据加以建模分析评估各项目方案。从小的方面来看个人是否应该购买某个理财产品,你需要获取过去的市场信息模拟未来可能的变化,计算该项资产未来的期望收益和标准差所以说学习编程就是学习在数据环境中解决问题,从中磨练技术、锻炼智力还能得到满足的快感。

  • 学会编程才能理解高手的代码,并从中领会其用意并成为真正的高手
  • 学会编程,才能深入了解函数背后的理论从而进一步解决从未有过的新问题。
  • 编程無法在课堂或书本中学到在游泳池里学游泳是最佳的方法,也是唯一的方法一书的作者Zed A. Shaw曾说过“The Had Way Is Easie”。所以就算是按照教材重复打一遍玳码也会有相当的收获。此外还要按照来编写代码养成良好的习惯,包括各种符号的用法和良好的注释在注释里作笔记是也一个好嘚学习方法,很多时候你只需要将旧代码略作修改就可以用到其它地方
      4 如何获得帮助中的帮助文档非常有用,其中有四种类型的帮助
      • help(functionname) 对已经加载包所含的函数显示其帮助文档用?号也是一样的。
        • 语言启动后会首先查找有无.pofile文档用户可通过编辑.pofile文档来自定义启动环境,该文件可放在工作目录或安装目录中
        • 之后会查找在工作目录有无.Data文档,若有的话将自动加载恢复之前的工作内容
        • 在中所有的默认输叺输出文件都会在工作目录中。getwd() 报告工作目录setwd() 负责设置工作目录。在win窗口下也可以点击Change Woking Diectoy来更改
        • ?Statup可以得到更多关于启动时的帮助

语言编程入门之二:对象和类

的语言,所以你在语言中接触到的每样东西都是一个对象一串数值向量是一个对象,一个函数是一个对象一个圖形也是一个对象。基于对象的编程(OOP)就是在定义类的基础上创建与操作对象。

对象中包含了我们需要的数据同时对象也具有很多属性(Attibute)。其中一种重要的属性就是它的类(Class)语言中最为基本的类包括了数值(numeic)、逻辑(logical)、字符(chaacte)、列表(list),在此基础上构成了一些复合型的类包括矩阵(matix)、数组(aay)、因子(facto)、数据框(datafame)。除了这些内置的类外还有很多其它的用户还可以自定义新的类,但所有的类都是建立在这些基本的类之上的

峩们下面来用一个简单线性回归的例子来了解一下对象和类的处理。

# 用线性回归创建模型存入对象model

好了,现在我们手头上有一个不熟悉嘚对象model那么首先来看看它里面藏着什么好东西。最有用的函数命令就是

用来提取对象的各种属性,结果如下:

可以看到这个对象的类昰“lm”这意味着什么呢?我们知道对于不同的类有不同的处理方法那么对于modle这个对象,就有专门用来处理lm类对象的函数例如plot.lm()。但如果你用普通的函数plot()也一样能显示其图形Why?因为plot()这种函数会自动识别对象的类从而选择合适的函数来对付它,这种函数就称为泛型函数(geneic

好了我们已经知道了model的底细了,你还想知道x的信息吧如果运行attibutes(x),会发现返回了空值这是因为x是一个向量,对于向量这种内置的基夲类attibutes是没有什么好显示的。此时你可以运行mode(x)可观察到向量的类是数值型。如果运行mode(model)会有什么反应呢它会显示lm类的基本构成是由list组成嘚。当然要了解对象的类也可以直接用class(),如果要消除对象的类则可用unclass()

从上面的结果我们还看到names这个属性,这如同你到一家餐厅问服务苼要一份菜单输入names(model)就相当于问model这个对象:Hi,你能提供什么好东西吗如果你熟悉回归理论的话,就可以从names里头看到它提供了丰富的回归結果包括回归系数(coefficients)、残差(esiduals)等等,调用这些信息可以就象处理普通的数据框一样使用$符号例如输出残差可以用model$esiduals。当然用泛型函數可以达到同样的效果如esiduals(model),但在个别情况下这二者结果是有少许差别的。

我们已经知道了attibutes的威力了那么另外一个非常有用的函数是st(),它能以简洁的方式显示对象的数据结构及其内容试试看,非常有用的

}

下面这种写法是因为有多个自变量函数传入一个参数x,每个自变量用向量x的分量来表示从而定义出目标函数。

tip:对于多元函数需要用向量的形式来输出各个变量上嘚梯度。

下面以$x_1=0,x_2=3$作为起始点其他参数采用默认设置,梯度也不输入(默认时优化算法为单纯型法)

  • pa元素表示最优解取值
  • value值表示目标函数值
  • counts玳表调用目标函数与梯度函数的数目,可认为是迭代数目
    • 0表示成功完成了优化任务
    • 1表示达到了达到了迭代上限而退出关于迭代上限会在contol參数的maxit元素进行说明
    • 10表示退化(退化表示单纯型无法继续移动)的单纯型
    • 51专指优化算法为L-BFGS-B的时候输出的警告信息。(L-BFGS-B为拟牛顿改进方法)
    • 52专指优化算法为L-BFGS-B的时候输出的错误信息

optim函数参数详解

  • pa:表示各变量的初始值,通过向量传入对于很多算法,初始值非常重要因此在具体的优囮问题中如果能找到最优解附近的初始值(比如之前的经验)传入优化函数,将能大大的增强优化的效率如果没有合适的初始值,可以选择任意的向量传入
  • method:优化方法,通过字符串形式传入表示优化求解的算法,

      • 思想:通过单纯型的方式不断替换函数的最差的顶点从而得箌最优值因为没有用的梯度故不是非常有效,但方法十分稳健效率也不低,因此被作为默认算法
    • CG:是一种共轭梯度法,这种方法充分利用函数的梯度信息在每一点都能找到一个最合适的方向(类似的算法是最速下降法,直接按照目标函数值最快的下降方向来搜索)来搜索该方法的方向不一定是下降的方向,因此能避免陷入局部最优的困境
    • BFGS:是一种拟牛顿法,也称变尺度法该算法改进了牛顿法中容易受初值的影响的弱点,但是又不需要在每一步优化的过程中计算精确的hessian矩阵及其逆矩阵在具备牛顿法搜索快的特性的基础上又能有效的搜索全局最优解,一次使用十分广泛是optim函数中应用最广的算法。
    • L-BFGS-B:是对BFGS算法的一个优化能够在优化的同时增加箱型约束条件,一定程度仩增强了这些无约束的非线性规划方法的功能
    • SANN是一种模拟退火的方法,与通常的数学函数的算法不同该算法是一种概率算法,对于各種复杂的情况尤其是很多不可微的函数,该算法可以找到最优解但效率上比不上其他数学算法。
    • Bent算法是一种简单的一维搜索算法通瑺被其他函数调用,实际使用中几乎不用
  • lowe:当算法选择为L-BFGS-B时,该函数允许传入简单的箱式约束,也就是说变量大于某个实数且小于某个实數,lowe表示下界uppe表示上界,都是通过这个传入的
  • contol:该参数是一个列表,包含优化中的各种设置很多其他第三方的优化函数也遵循这样的設置方式。常见的设置元素包括最大迭代次数maxit、绝对收敛容忍度abstol、相对收敛容忍度eltol等详情可以通过?optim来得到。
  • hessian:表示十分返回hessian矩阵默认為FALSE,但是hessian矩阵对其他的运算还是非常重要的比如估计参数的置信区间。

使用CG共轭梯度法在默认的迭代次数下求解:

发现算法到达迭代次數上限而退出

可以发现目标函数的值可以减少,进一步增加迭代的次数可以得到最优解但是效率上比默认的Nelde-Mead单纯型法差太多。注意:CG巳经使用梯度信息不需要我们自己传入自定义的gadient函数

如果我们使用拟牛顿法BFGS,下面分别为不传入梯度信息与自己传入梯度信息

}

我要回帖

更多关于 R(X,Y) 的文章

更多推荐

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

点击添加站长微信