《统计建模与数据分析课件》由会员分享,可在线阅读,更多相关《统计建模与数据分析课件(25页珍藏版)》请在金锄头文库上搜索。
1、参考参考书籍:籍:复复杂数据数据统计方法方法基于基于R R的的应用,吴喜之用,吴喜之编著,中国著,中国人民大学出版社人民大学出版社主要内容引引 言言横截面数据:因横截面数据:因变量量为实数数轴上的数量上的数量变量量横截面数据:因横截面数据:因变量量为分分类变量及因量及因变量量为计数数变量的情量的情况况纵向数据(多水平数据、面板数据)向数据(多水平数据、面板数据)多元分析(不分因多元分析(不分因变量和自量和自变量)量)路径建模(路径建模(结构方程建模)数据的构方程建模)数据的PLSPLS分析分析多元多元时间序列数据序列数据引 言统计是科学统计是科学?是科学?科学的基本特征是其方法科学的基本特征是
2、其方法论:对世界的世界的认识源于源于观测或或实验的信息的信息( (或者数据或者数据), ), 总结信息信息时会形成模型会形成模型( (亦称亦称为假假说或理或理论), ), 模型会指模型会指导进一步的探索一步的探索, , 直到遇到直到遇到这些模型无些模型无法解法解释的的现象象, , 这就就导致致对这些模型的更新和替代些模型的更新和替代. .统计可以定可以定义为收集、分析、展示和解收集、分析、展示和解释数据的科学数据的科学, , 或者称或者称为数据科学数据科学(science of data).(science of data).统计应用于几乎所有用于几乎所有领域域. . 统计与数学、计算机的关系
3、统计统计的思的思维维方式是方式是归纳归纳(induction), (induction), 也就是从数据所反映也就是从数据所反映的的现实现实得到稍微一般的模型得到稍微一般的模型, , 希望以此解希望以此解释释数据所代表的数据所代表的那部分世界那部分世界. . 这这和以演和以演绎绎(deduction)(deduction)为为主的数学思主的数学思维维方式方式相反相反, ,演演绎则绎则是在一些人是在一些人为为的的假定假定 ( (比如一个公理系比如一个公理系统统) )之下之下, , 推推导导出各种出各种结论结论. .在在统计发统计发展的前期展的前期, , 没有没有计计算机算机, , 只能在只能在对
4、对数据数据加上一些数学假定后加上一些数学假定后, , 建立一些假定的数学模型建立一些假定的数学模型, , 推推导导出出结结果的性果的性质质, , 诸诸如置信区如置信区间间, , 假假设检验设检验的的p p值值, , 相合性等等相合性等等. . 在数据分布与假定的正在数据分布与假定的正态态分布相差甚分布相差甚远远的情况的情况, , 人人们们又利用又利用诸诸如中心极限定理或大如中心极限定理或大样样本定理得到本定理得到渐渐近近正正态态的的结结果果. .据此又得到大据此又得到大样样本本时时的各种性的各种性质质, , 包括置信区包括置信区间间或或置信置信带带, p, p值值, , 相合性等等相合性等等.
5、 .统计统计的的这这种种发发展方式展方式, , 给统计给统计打上了很深的数学烙打上了很深的数学烙印印. .在在现成的数学模型无法成的数学模型无法处理大量的复理大量的复杂数据的情况下,数据的情况下,计算机算机领域的研究人域的研究人员和部分概率和部分概率论及及统计学家开学家开发了了许多多计算方法,算方法,处理了理了传统统计无法解决的大量无法解决的大量问题。诸如人如人工神工神经网网络、决策、决策树、boostingboosting、随机森林、支持向量机、随机森林、支持向量机等大量等大量算法模型。算法模型。统计研究逐步由数据或者研究逐步由数据或者问题驱动,创造模型的目的是适造模型的目的是适应现实数据。
6、数据。随着随着时时代的前代的前进进, , 院系院系现现在也出在也出现现了了诸诸如数据挖掘、机器如数据挖掘、机器学学习习等等课课程程, , 统计杂统计杂志也开始逐志也开始逐渐渐重重视这视这些研究些研究. . 这这些算法模型大都不是用封些算法模型大都不是用封闭闭的数学公式来描述的数学公式来描述, ,而是体而是体现现在在计计算机算法或程序上算机算法或程序上. . 参考参考书籍:籍:The Elements of Statistical Learning:Data Mining, The Elements of Statistical Learning:Data Mining, Inference,
7、and Prediction.Inference, and Prediction. Second EditionSecond Edition. . Trevor Hastie, Robert Tibshirani, Jerome Friedman, Trevor Hastie, Robert Tibshirani, Jerome Friedman, SpringerSpringer学术期刊Top Top 期刊期刊The Annals of Statistics.The Annals of Statistics.Journal of the Royal Statistical Society,
8、Series B.Journal of the Royal Statistical Society, Series B.Journal of the American Statistical Association.Journal of the American Statistical Association.Biometrika.Biometrika.Journal of Machine Learning ResearchJournal of Machine Learning ResearchEconometrika Econometrika BiostatisticsBiostatisti
9、cs文献检索文献检索的一点经验文献检索的一点经验No sweat, No sweet. 数据分析的实践数据收集数据收集. . 首先要根据实际目的. 有数据不一定能够得到需要的结论, 我们需要的是与所关心问题充分有关的变量的数据.数据数据预处预处理理. . 缺失值寻寻找适合的模型找适合的模型:为了寻找模型,首先要对数据进行探索性分析,利用图形、各种统计量、或者比较复杂的探索方法来查看数据的关联性、线性性、异方差性、多重共线性、聚类特征、分布形状等。有了对数据的粗略认识之后,就寻找合适的模型。数据分析的实践比比较较模型的模型的标标准准. 传统统计中: 各种判别准则(各种检验、一些统计量的临界值等等
10、). 都是在对数据分布及描述变量之间关系的模型所做的假定之下得到的. 在使用算法模型时, 由于没有传统模型的那些假定, 判断模型好坏通常都用交叉验证(cross validation)。对结对结果的解果的解释释. . 选择模型并不是目的, 目的是解释模型所产生的结果, 而结果必须是应用领域的结果, 必须有实际意义. 仅仅用统计术语说某个模型较好, 某个变量显著之类的话是不够的.R软件入门R软件的安装http:/ xsample(x,20) #sample(x,20) #从从1,.,1001,.,100中随机不放回地抽取中随机不放回地抽取2020个个值作作为样本本set.seed(0);samp
11、le(1:10,3)#set.seed(0);sample(1:10,3)#先先设随机种子再抽随机种子再抽样. .z=sample(1:200000,10000)#z=sample(1:200000,10000)#从从1,.,2000001,.,200000中随机不放回地抽取中随机不放回地抽取1000010000个个值作作为样本本z1:10z1:10 # #方括号中方括号中为向量向量z z的下的下标y=c(1,3,7,3,4,2)y=c(1,3,7,3,4,2)zy#zy#以以y y为下下标的的z z的元素的元素值(z=sample(x,100,rep=T)#(z=sample(x,100,r
12、ep=T)#从从x x放回地抽取放回地抽取100100个随机个随机样本本(z1=unique(z)(z1=unique(z)length(z1)#zlength(z1)#z中不同的元素个数中不同的元素个数xz=setdiff(x,z) #xxz=setdiff(x,z) #x和和z z之之间的不同元素的不同元素-集合差集合差sort(union(xz,z)#sort(union(xz,z)#对对xzxz及及z z的并的元素从小到大排序的并的元素从小到大排序setequal(union(xz,z),x) #setequal(union(xz,z),x) #对对xzxz及及z z的并的元素与的并的
13、元素与x x是否一是否一样intersect(1:10,7:50) #intersect(1:10,7:50) #两个数据的交两个数据的交sample(1:100,20,prob=1:100)#sample(1:100,20,prob=1:100)#从从1:1001:100中不等概率随机抽中不等概率随机抽样, , # #各数目抽到的概率与各数目抽到的概率与1:1001:100成比例成比例一些简单运算pi *102 #pi *102 #能能够用用? ?”* *”来看基本算来看基本算术运算方法运算方法, pi, pi是是圆周率周率pi * (1:10)-2.3#pi * (1:10)-2.3#可以
14、可以对向量求指数向量求指数幂x = pi * 102x = pi * 102x xprint(x) #print(x) #和上面一和上面一样(x=pi *102) #(x=pi *102) #赋值带打印打印pi(1:5) #pi(1:5) #指数也可以是向量指数也可以是向量print(x, digits = 12)#print(x, digits = 12)#输出出x x的的1212位数字位数字简单图形x=rnorm(200)#200x=rnorm(200)#200个随机正个随机正态数数赋值到到x xhist(x, col = light blue)#hist(x, col = light b
15、lue)#直方直方图(histogram)(histogram)rug(x) #rug(x) #在直方在直方图下面加上下面加上实际点的大小点的大小stem(x)#stem(x)#茎叶茎叶图x - rnorm(500)x - rnorm(500)y - x + rnorm(500) #y 0,1 #xx,10,1 #第第1 1列大于列大于0 0的元素的元素sum(x,10) #sum(x,10) #第第1 1列大于列大于0 0的元素的个数的元素的个数sum(x,1=0) #sum(x,10&x,30&x,30|x,10|x,1.51,1#第第1 1中小于中小于.51.51或者相或者相应于第于第2
16、 2列中大于列中大于0 0的元素的元素(或或)x!x,2.51,1#x!x,2.51,1#第一列中相第一列中相应于第于第2 2列中不小于列中不小于.51.51的元素的元素( (“非非”) )apply(x,1,mean);apply(x,2,sum)#apply(x,1,mean);apply(x,2,sum)#分分别对行行( (第一第一维) )和列和列( (第二第二维) )做均做均值和求和运算和求和运算x=matrix(rnorm(24),4,6)x=matrix(rnorm(24),4,6)xlower.tri(x)=0;x #xlower.tri(x)=0;x #得到上三角得到上三角阵,
17、 ,# #为得到下三角得到下三角阵, , 用用xupper.tri(x)=0)xupper.tri(x)=0)矩阵与向量之间的运算x=matrix(1:20,5,4) #5x=matrix(1:20,5,4) #5乘乘4 4矩矩阵sweep(x,1,1:5,*)#sweep(x,1,1:5,*)#把向量把向量1:51:5的每个元素乘到每一行的每个元素乘到每一行sweep(x,2,1:4,+)#sweep(x,2,1:4,+)#把向量把向量1:41:4的每个元素加到每一列的每个元素加到每一列x*1:5x*1:5sweep(x,2,1:4,+)#scalesweep(x,2,1:4,+)#scal
18、e是是标准化准化, ,即每一列元素减去即每一列元素减去该列均列均值, ,除以除以该列列标准准差差: :(x=matrix(sample(1:100,24),6,4);(x1=scale(x)(x=matrix(sample(1:100,24),6,4);(x1=scale(x)(x2=scale(x,scale=F)#(x2=scale(x,scale=F)#自己自己观察并察并总结结果果(x3=scale(x,center=F) #(x3=scale(x,center=F) #自己自己观察并察并总结结果果round(apply(x1,2,mean),14) #round(apply(x1,2,
19、mean),14) #自己自己观察并察并总结结果果apply(x1,2,sd)#apply(x1,2,sd)#自己自己观察并察并总结结果果round(apply(x2,2,mean),14);apply(x2,2,sd)#round(apply(x2,2,mean),14);apply(x2,2,sd)#自己自己观察并察并总结结果果round(apply(x3,2,mean),14);apply(x3,2,sd)#round(apply(x3,2,mean),14);apply(x3,2,sd)#自己自己观察并察并总结结果果缺失值, 数据的合并airquality #airquality #有
20、缺失有缺失值(NA)(NA)的的R R自自带数据数据complete.cases(airquality)#complete.cases(airquality)#没有缺失没有缺失值的那些行中那些是缺失的那些行中那些是缺失的的which(complete.cases(airquality)=F) #which(complete.cases(airquality)=F) #没有缺失没有缺失值的行号的行号sum(complete.cases(airquality) #sum(complete.cases(airquality) #完整完整观测值的个数的个数na.omit(airquality) #na
21、.omit(airquality) #删去缺失去缺失值的数据的数据# #附加附加, , 横或横或竖合并数据合并数据: append,cbind,rbind: append,cbind,rbindx=1:10;x12=3x=1:10;x12=3(x1=append(x,77,after=5)(x1=append(x,77,after=5)cbind(1:5,rnorm(5)cbind(1:5,rnorm(5)rbind(1:5,rnorm(5)rbind(1:5,rnorm(5)cbind(1:3,4:6);rbind(1:3,4:6) #cbind(1:3,4:6);rbind(1:3,4:6
22、) #去掉矩去掉矩阵重复的行重复的行(x=rbind(1:5,runif(5),runif(5),1:5,7:11)(x=rbind(1:5,runif(5),runif(5),1:5,7:11)x!duplicated(x),x!duplicated(x),unique(x)unique(x)list#list#list可以是任何可以是任何对象象( (包括包括listlist本身本身) )的集合的集合z=list(1:3,Tom=c(1:2,a=list(R,letters1:5),w=hz=list(1:3,Tom=c(1:2,a=list(R,letters1:5),w=hi!)i!)z
23、1;z2z1;z2z$Tz$Tz$T$a2z$T$a2z$T3z$T3z$T$wz$T$w如何写函数# #下面下面这个函数是按照定个函数是按照定义( (编程程简单, , 但效率不高但效率不高, ,计算量大算量大) )求求n n以内的素数以内的素数, , 缺省缺省值n=100n=100ss=function(n=100)z=2;ss=function(n=100)z=2;for (i in 2:n)if(any(i%2:(i-1)=0)=F)z=c(z,i);return(z) for (i in 2:n)if(any(i%2:(i-1)=0)=F)z=c(z,i);return(z) #fix
24、(ss) #fix(ss) #用来修改任何函数或用来修改任何函数或编写一个新函数写一个新函数ss() #ss() #计算算100100以内的素数以内的素数t1=Sys.time() #t1=Sys.time() #记录时间点点ss(10000) #ss(10000) #计算算1000010000以内的素数以内的素数Sys.time()-t1 #Sys.time()-t1 #费了多少了多少时间system.time(ss(10000)#system.time(ss(10000)#计算算执行行ss(10000)ss(10000)所用所用时间# #函数可以不写函数可以不写return,return,
25、这时最后一个最后一个值为returnreturn的的值. .为了了输出多个出多个值最好使用最好使用listlist画图x=seq(-3,3,len=20);y=dnorm(x)#x=seq(-3,3,len=20);y=dnorm(x)#产生数据生数据w= data.frame(x,y)#w= data.frame(x,y)#合并合并x,x,成成为数据数据w wpar(mfcol=c(2,2)#par(mfcol=c(2,2)#准准备画四个画四个图的地方的地方plot(y x, w,main=plot(y x, w,main=正正态密度函数密度函数)plot(y x,w,type=l, main=plot(y x,w,type=l, main=正正态密度函数密度函数)plot(y x,w,type=o, main=plot(y x,w,type=o, main=正正态密度函数密度函数)plot(y x,w,type=b,main=plot(y x,w,type=b,main=正正态密度函数密度函数)par(mfcol=c(1,1)#par(mfcol=c(1,1)#取消取消par(mfcol=c(2,2)par(mfcol=c(2,2)