《统计建模与数据分析课件.ppt》由会员分享,可在线阅读,更多相关《统计建模与数据分析课件.ppt(25页珍藏版)》请在三一办公上搜索。
1、,参考书籍:复杂数据统计方法基于R的应用,吴喜之编著,中国人民大学出版社,主要内容,引 言横截面数据:因变量为实数轴上的数量变量横截面数据:因变量为分类变量及因变量为计数变量的情况纵向数据(多水平数据、面板数据)多元分析(不分因变量和自变量)路径建模(结构方程建模)数据的PLS分析多元时间序列数据,引 言,统计是科学,统计是科学?科学的基本特征是其方法论:对世界的认识源于观测或实验的信息(或者数据),总结信息时会形成模型(亦称为假说或理论),模型会指导进一步的探索,直到遇到这些模型无法解释的现象,这就导致对这些模型的更新和替代.统计可以定义为收集、分析、展示和解释数据的科学,或者称为数据科学(
2、science of data).统计应用于几乎所有领域.,统计与数学、计算机的关系,统计的思维方式是归纳(induction),也就是从数据所反映的现实得到稍微一般的模型,希望以此解释数据所代表的那部分世界.这和以演绎(deduction)为主的数学思维方式相反,演绎则是在一些人为的假定(比如一个公理系统)之下,推导出各种结论.,在统计发展的前期,没有计算机,只能在对数据加上一些数学假定后,建立一些假定的数学模型,推导出结果的性质,诸如置信区间,假设检验的p值,相合性等等.在数据分布与假定的正态分布相差甚远的情况,人们又利用诸如中心极限定理或大样本定理得到渐近正态的结果.据此又得到大样本时的
3、各种性质,包括置信区间或置信带,p值,相合性等等.统计的这种发展方式,给统计打上了很深的数学烙印.,在现成的数学模型无法处理大量的复杂数据的情况下,计算机领域的研究人员和部分概率论及统计学家开发了许多计算方法,处理了传统统计无法解决的大量问题。诸如人工神经网络、决策树、boosting、随机森林、支持向量机等大量算法模型。统计研究逐步由数据或者问题驱动,创造模型的目的是适应现实数据。,随着时代的前进,院系现在也出现了诸如数据挖掘、机器学习等课程,统计杂志也开始逐渐重视这些研究.这些算法模型大都不是用封闭的数学公式来描述,而是体现在计算机算法或程序上.参考书籍:The Elements of S
4、tatistical Learning:Data Mining,Inference,and Prediction.Second Edition.Trevor Hastie,Robert Tibshirani,Jerome Friedman,Springer,学术期刊,Top 期刊The Annals of Statistics.Journal of the Royal Statistical Society,Series B.Journal of the American Statistical Association.Biometrika.Journal of Machine Learnin
5、g ResearchEconometrika Biostatistics,文献检索,文献检索的一点经验No sweat,No sweet.,数据分析的实践,数据收集.首先要根据实际目的.有数据不一定能够得到需要的结论,我们需要的是与所关心问题充分有关的变量的数据.数据预处理.缺失值寻找适合的模型:为了寻找模型,首先要对数据进行探索性分析,利用图形、各种统计量、或者比较复杂的探索方法来查看数据的关联性、线性性、异方差性、多重共线性、聚类特征、分布形状等。有了对数据的粗略认识之后,就寻找合适的模型。,数据分析的实践,比较模型的标准.传统统计中:各种判别准则(各种检验、一些统计量的临界值等等).都是
6、在对数据分布及描述变量之间关系的模型所做的假定之下得到的.在使用算法模型时,由于没有传统模型的那些假定,判断模型好坏通常都用交叉验证(cross validation)。对结果的解释.选择模型并不是目的,目的是解释模型所产生的结果,而结果必须是应用领域的结果,必须有实际意义.仅仅用统计术语说某个模型较好,某个变量显著之类的话是不够的.,R软件入门,R软件的安装http:/,最初几步,x=1:100#把1,2,.,100个整数向量赋值到xsample(x,20)#从1,.,100中随机不放回地抽取20个值作为样本set.seed(0);sample(1:10,3)#先设随机种子再抽样.z=sam
7、ple(1:200000,10000)#从1,.,200000中随机不放回地抽取10000个值作为样本z1:10#方括号中为向量z的下标y=c(1,3,7,3,4,2)zy#以y为下标的z的元素值(z=sample(x,100,rep=T)#从x放回地抽取100个随机样本(z1=unique(z)length(z1)#z中不同的元素个数xz=setdiff(x,z)#x和z之间的不同元素-集合差sort(union(xz,z)#对xz及z的并的元素从小到大排序setequal(union(xz,z),x)#对xz及z的并的元素与x是否一样intersect(1:10,7:50)#两个数据的交s
8、ample(1:100,20,prob=1:100)#从1:100中不等概率随机抽样,#各数目抽到的概率与1:100成比例,一些简单运算,pi*102#能够用?”*”来看基本算术运算方法,pi是圆周率pi*(1:10)-2.3#可以对向量求指数幂x=pi*102xprint(x)#和上面一样(x=pi*102)#赋值带打印pi(1:5)#指数也可以是向量print(x,digits=12)#输出x的12位数字,简单图形,x=rnorm(200)#200个随机正态数赋值到xhist(x,col=light blue)#直方图(histogram)rug(x)#在直方图下面加上实际点的大小stem
9、(x)#茎叶图x-rnorm(500)y-x+rnorm(500)#构造一个线性关系plot(y x)#散点图a=lm(yx)#做回归abline(a,col=red)#或者abline(lm(yx),col=red)在散点图上加拟合直线print(Hello World!)paste(x 的最小值=,min(x)#打印,数据输入输出,x=scan()#从屏幕输入数据,可以键入,也可以粘贴,可多行输入,空行后Enter1.5 2.6 3.7 2.1 8.9 12-1.2-4x=c(1.5,2.6,3.7,2.1,8.9,12,-1.2,-4)#等价于上面w=read.table(file.ch
10、oose(),header=T)#从列表中选择带有变量名的数据文件setwd(“f:/2010stat”)#或setwd(f:2010stat)#建立工作目录(你必须有这个目录)(x=rnorm(20)#给x赋值20个标准正态数据值#(注:可以产生常见的各种分布的随机数,也有各种分布的分布函数,密度函数及分位数函数)write(x,f:/2010stat/test.txt)#把数据写入文件(你没有这个目录则会有出错信息)y=scan(f:/2010stat/test.txt);y#扫描文件数值数据到yy=iris;y1:5,;str(y)#iris是R自带数据write.table(y,tes
11、t.txt,row.names=F)#把数据写入文本文件w=read.table(f:/2010stat/test.txt,header=T)#读带有变量名的数据write.csv(y,test.csv)#把数据写入csv文件v=read.csv(f:/2010stat/test.csv)#读入csv数据文件data=read.table(“clipboard”)#读入剪贴板的数据,序列等等,(z=seq(-1,10,length=100)#-1到10等间隔的100个数的序列z=seq(-1,10,len=100)#和上面等价写法(z=seq(10,-1,-0.1)#10到-1间隔为-0.1的
12、序列(x=rep(1:3,3)#三次重复1:3(x=rep(3:5,1:3)#自己看,这又是什么呢?x=rep(c(1,10),c(4,5)w=c(1,3,x,z);w3#把数据(包括向量)组合(combine)成一个向量x=rep(0,10);z=1:3;x+z#向量加法(如果长度不同,R如何给出警告和结果?)x*z#向量乘法rev(x)#颠倒次序z=c(no cat,has,nine,tails)#字符向量z1=no cat#双等号为逻辑等式z=1:5z7=8;z#什么结果?注:NA为缺失值(not available)z=NULL;zc(1,3,5)=1:3;zrnorm(10)c(2,
13、5)z-c(1,3)#去掉第1、3元素z=sample(1:100,10);zwhich(z=max(z)#给出最大值的下标,矩阵,x=sample(1:100,12);x#抽样x=matrix(1:20,4,5);x#矩阵的构造x=matrix(1:20,4,5,byrow=T);x#矩阵的构造,按行排列t(x)#矩阵转置x=matrix(sample(1:100,20),4,5)2*xx+5y=matrix(sample(1:100,20),5,4)x+t(y)#矩阵之间相加(z=x%*%y)#矩阵乘法z1=solve(z)#solve(a,b)可以解ax=b方程z1%*%z#应该是单位向
14、量,但浮点运算不可能得到干净的0round(z1%*%z,14)#四舍五入b=solve(z,1:4);b#解联立方程,矩阵继续,nrow(x);ncol(x);dim(x)#行列数目x=matrix(rnorm(24),4,6)xc(2,1),#第2和第1行x,c(1,3)#第1和第3列x2,1#第2,1元素xx,10,1#第1列大于0的元素sum(x,10)#第1列大于0的元素的个数sum(x,10 x#得到上三角阵,#为得到下三角阵,用xupper.tri(x)=0),矩阵与向量之间的运算,x=matrix(1:20,5,4)#5乘4矩阵sweep(x,1,1:5,*)#把向量1:5的每
15、个元素乘到每一行sweep(x,2,1:4,+)#把向量1:4的每个元素加到每一列x*1:5sweep(x,2,1:4,+)#scale是标准化,即每一列元素减去该列均值,除以该列标准差:(x=matrix(sample(1:100,24),6,4);(x1=scale(x)(x2=scale(x,scale=F)#自己观察并总结结果(x3=scale(x,center=F)#自己观察并总结结果round(apply(x1,2,mean),14)#自己观察并总结结果apply(x1,2,sd)#自己观察并总结结果round(apply(x2,2,mean),14);apply(x2,2,sd)
16、#自己观察并总结结果round(apply(x3,2,mean),14);apply(x3,2,sd)#自己观察并总结结果,缺失值,数据的合并,airquality#有缺失值(NA)的R自带数据complete.cases(airquality)#没有缺失值的那些行中那些是缺失的which(complete.cases(airquality)=F)#没有缺失值的行号sum(complete.cases(airquality)#完整观测值的个数na.omit(airquality)#删去缺失值的数据#附加,横或竖合并数据:append,cbind,rbindx=1:10;x12=3(x1=app
17、end(x,77,after=5)cbind(1:5,rnorm(5)rbind(1:5,rnorm(5)cbind(1:3,4:6);rbind(1:3,4:6)#去掉矩阵重复的行(x=rbind(1:5,runif(5),runif(5),1:5,7:11)x!duplicated(x),unique(x),list,#list可以是任何对象(包括list本身)的集合z=list(1:3,Tom=c(1:2,a=list(R,letters1:5),w=hi!)z1;z2z$Tz$T$a2z$T3z$T$w,如何写函数,#下面这个函数是按照定义(编程简单,但效率不高,计算量大)求n以内的素
18、数,缺省值n=100ss=function(n=100)z=2;for(i in 2:n)if(any(i%2:(i-1)=0)=F)z=c(z,i);return(z)#fix(ss)#用来修改任何函数或编写一个新函数ss()#计算100以内的素数t1=Sys.time()#记录时间点ss(10000)#计算10000以内的素数Sys.time()-t1#费了多少时间system.time(ss(10000)#计算执行ss(10000)所用时间#函数可以不写return,这时最后一个值为return的值.为了输出多个值最好使用list,画图,x=seq(-3,3,len=20);y=dnorm(x)#产生数据w=data.frame(x,y)#合并x,成为数据wpar(mfcol=c(2,2)#准备画四个图的地方plot(y x,w,main=正态密度函数)plot(y x,w,type=l,main=正态密度函数)plot(y x,w,type=o,main=正态密度函数)plot(y x,w,type=b,main=正态密度函数)par(mfcol=c(1,1)#取消par(mfcol=c(2,2),