1、建模建模:问题问题数据数据模型模型结论结论柏宏斌柏宏斌数据处理与统计建模数据处理与统计建模统计的本质 面对需要、收集数据、根据数据建立模型、利用面对需要、收集数据、根据数据建立模型、利用模型做预测或得到其它结论、模型则随时根据新模型做预测或得到其它结论、模型则随时根据新的信息进行更新的信息进行更新.即即:收集、分析、展示、解释收集、分析、展示、解释数据的科学数据的科学观测观测/实验数实验数据据理论理论/假说假说/模型模型问题:是不是所有的符合这个定义的科学都在目前的”统计”之内?模型是如何来的?首先,根据数据状况(探索性数据分析)主观确定出一个参数模型类型或者一个算法 其中典型参数模型例子为线
2、性回归模型等,而算法模型例子为决策树,随机森林等 其次,根据已知数据训练/学习出参数模型的参数或者算法模型的程序模型是根据数据训练出来的!参数模型:起源于前计算机时代 经典统计-假定背景分布下的假设检验及点估计、线性回归、多元分析等等(现在大部分数理统计课程是以经典统计为主的)。特点:数学味道很浓,模型形式是根据经验及数学的可算性假定的可以写出公式的模型,模型参数由数据来估计 经典统计判断模型好坏的方法:拟合优度检验、t检验、F检验,p值、残差分析等等。只有一个训练集(自己对自己投票)没有测试集 误差基本上应该是数据和模型的差距+模型本身解的精确性,但只能核对后者22参数模型是用写得出来的公式
3、描述的数学模型,有了形式之后才训练以得到参数估计算法模型:开始于计算机时代 算法建模(机器学习、数据挖掘、人工智能等等,现在均可称为机器学习)。大约是上世纪70年中后期代开始,以神经网络为前导。特点:根据数据训练一个算法模型(模型是一个计算机程序,而不是一个数学公式)判断模型的好坏:用一部分不参加建模的数据(测试集)检验另一部分数据(训练集)建立的模型,即客观公正的交叉验证算法模型是计算机程序,以不同的方法来区分,由数据来训练建模首先必须是问题驱动首先有了问题,才会寻找数据(也可能挖掘数据)有了数据,才会寻找模型,而不是相反 根据模型寻找数据不是科学的 一个数据必定有很多模型可以尝试拟合 分析
4、之前不应该指定某一个模型对于一个数据必须尝试尽可能多的模型挑选相对较好的模型来拟合 最客观的比较方法是交叉验证(可以比较任何模型)在参数模型中,可用诸如AIC比较【SC 指的是施瓦茨准则,AIC指的是赤池信息准则,这两个参数的数值越小,就代表你所做的模型越好,】在无法证实的正态性假定下,用拟合优度检验等比较必须是问题/数据驱动而不是模型驱动提醒(1)避免只用一种方法(未比较其他模型和交叉验证),应该避免没有根据或比较地地任意假定模型形式 避免使用现成的经济和金融模型,比如Cobb-Douglas模型,新古典增长理论等(皇帝的新衣)有哪个诺贝尔经济奖获得者能够预测出任何一次经济危机,特别是最近的
5、金融危机?任何一个现成模型必须得经受最新数据的考验,否则必须被替代学经济和学统计的区别是什么?提醒(2)避免使用31个省市自治区数据做除了描述之外的任何事情(如回归等推断).它们是样本吗?避免使用宏观数据(大都是汇总数据,炒过的菜还能做什么?任何宏观结论必须有微观分析的支持)避免只使用汇总数据(均值,百分数,比例)等加工过的数据 避免任意假定正态分布(或者不提分布,但出现t检验,F检验和p值),分布假定必须要有根据 避免任意使用大样本结论于小样本情况统计课本错误很多,不要迷信提醒(3)统计建模可以是任何领域任何领域的问题(我们要获得的我们要获得的是在任何体制是在任何体制,任何领域任何领域,任何
6、国家都能够生存的任何国家都能够生存的知识和能力知识和能力)数据必须是未加工的 如果一定要搞经济问题(为什么一定去扎堆?),尽量使用微观数据中国每年产生无数类似的没有人看的宏观分析文章,培养上百个“宏观经济学家”.本来一个国家最多有100个人分析宏观经济就够多了.提醒(4)结论只能从数据分析的结果给出,避免加入拍脑袋也能得到的结论 避免用时间序列做宏观经济预测(包括单位根检验和协整检验等等)避免分析股票之类的数据 避免用国外现成模型于国内数据的所谓“实证研究”中国每年至少有一千篇论文提出“政策建议”,其实根本没有人看,没有人在乎.数据收集 首先要根据实际目的收集数据.有些是需要人工收集的,比如通
7、过普查、调查、实验、观察等手段得到的;而另一些则来自各种与计算机联系的数据源,比如遥感数据、网络数据、商务数据、远程上报数据等等.确定哪些变量的数据需要收集是非常关键的,这不是数学或统计问题,而是基于对相应领域的了解和经验.有数据不一定能够得到需要的结论,我们需要的是与所关心问题充分有关充分有关的变量的数据.从质量差的数据得不到高质量的结论数据预处理 原始数据往往或多或少地存在各种缺失值以及不合逻辑或不一致等问题.这需要预处理.这些工作很可能非常费时而且极其琐碎,但必须去做,否则后续的分析是不可能的.填补缺失值有很多方法,最简单的就是删除,或者用同一变量其他值的均值或中位数填补,或者在各个变量
8、之间建立模型(比如回归模型,最近邻方法等大量选择)来填补.这是必须做的事情寻找适合的模型 有了数据,我们需要的是模型,其目的或者是为了预测,或者是为了理解产生数据的机制.为了寻找模型,首先要对数据做探索性分析,利用图形、各种统计量、或者稍微复杂的探索方法来查看数据的关联性、线性性、异方差性、多重共线性、聚类特征、平衡特征、分布形状等等.有了对数据的粗略认识之后,就要寻找适合的模型,无论是传统意义上的模型还是以算法为基础的模型.首先寻找现成的模型,要比较各种模型的计算结果,如果现有模型不能满足需要时,新的数据分析方法就应该产生了.模型选择的过程贯穿于整个数据分析过程.根据对数据的感觉寻找适当的模
9、型,并根据数据来训练和比较模型(为了选择).比较模型的标准 在传统统计中,通常要在对分布和模型形式作出假定,并且在这些假定下确定损失函数,并依此得到各种判别准则,这些准则包括各种检验、一些统计量的临界值等等.但绝对不要忘记,所有这些都是在对数据分布及描述变量之间关系的模型所做的假定之下得到的(这些假定都是无法用确定性方法验证的,最多只能尝试用显著性检验来拒绝它,如果没有充分理由拒绝,也不能证明这些假定是对的,仍然还属于假定假定.).如果这些假定不满足,这些准则也没有什么意义.“假定”主要是源于信仰或者方便比较模型的标准(继续)在使用算法模型时,由于没有传统模型的那些假定,判断模型好坏通常都用交
10、叉验证(cross validation),也就是说,拿一部分数据作为训练集(training set),得到模型,再用另一部分数据(称为测试集,testing set)来看误差是多少.有时需要进行k折交叉验证(k-fold cross validation),即把数据分成k份,每次拿k-1份作为训练集,用剩下的一份作为测试集,重复k次,得到k个误差作出平均,以避免仅用一个测试集可能出现的偏差.显然,交叉验证的方法也适用于传统模型之间或者在传统模型和算法模型之间的比较.选择模型不是最终目的,最终目的是解释模型所产生的结果,而结果必须是应用领域的结果,必须有实际意义.仅仅用统计术语说某个模型较好
11、,某个变量显著之类的话是不够的.真正的误差由两部分组成:1.你的结果在假定(猜想)的模型之下的精确度(相合性,无偏性等等,无论大样本还是小样本)2.你的假定模型和真实规律的距离(一般以模型驱动的研究人员都回避这个问题,因为他们无法回答)谁也不知道理论和真理之间的距离,除非他(她)知道什么是真理下面介绍根据不同类型的数据可能采取的模型横截面数据:因变量为数量变量 简单LS线性回归(必须有下面无法验证的假定)必须假定因变量为自变量的线性组合形式 必须假定可加误差项 必须假定误差独立同分布 必须假定损失函数是对称的二次函数 指数变换 共线性问题 Lasso,PLS,岭回归等 延伸:多项式回归等等 非
12、线性回归(必须知道函数形式)这是经典数理统计横截面数据:因变量为数量变量(延续)机器学习方法(无需对数据做任何假定,模型形式为算法或计算机程序)决策树(回归树).R:rpart,tree 等Boosting回归.R:mboost 等Bagging回归.R:ipred 等随机森林回归.R:randomForest 等人工神经网络回归.R:nnet 等支持向量机回归.R:rminer 等 可用k折交叉验证来比较模型这些长期被排除于“统计”之外横截面数据:因变量为分类变量 logistic和probit回归(因变量限制为二分因变量)R:glm等 判别分析(自变量限制为数量变量)R:lda等 没有限制
13、的情况:机器学习方法决策树(分类树).R:rpart,tree 等Adaboost分类.R:adabag 等Bagging分类.R:adabag 等随机森林分类.R:randomForest 等支持向量机分类.R:e1071 等最近邻方法分类.R:kknn 等 可用k折交叉验证来比较模型绝大部分情况“经典”统计无能为力横截面数据:因变量为计数/频数 Poisson对数线性模型 R:glm等 Dispersion现象 R:dglm,statmod,glm.nb等 零膨胀现象 R:pscl等 LS和机器学习方法回归(回归总可以试)多项分布情况 多项logit模型 R:mlogit等 多项分布对数线
14、性模型 R:MASS,nnet没有计算机都无法算纵向数据,多水平数据,面板数据 线性随机效应混合模型 R:nlme,lme4等 广义线性随机效应混合模型 R:lme4等 决策树及随机效应模型 R:REEMtree等 纵向生存数据R:coxme,JM等(一般生存分析:R:survival)面板数据R:plm等不同的领域有不同的的名字多元分析(不分自变量及因变量)要求多元正态分布数据:经典多元分析(主成份分析,因子分析,聚类分析,典型相关分析)对应分析 不一定数量变量,可以分层,分群:现代多元分析 R:FactoMineR 关联规则分析(啤酒和尿布)R:arules现代方法太漂亮了!路径模型(结构方程模型)PLS方法 R:plspm等不要求多元正态分布可以求出隐变量的值数据量少些也可 协方差方法(AMOS,LISREL,ML)R:sem要求多元正态分布数据不稳健不能求出隐变量的值和绝对系数PLS方法可以赚大钱,但很容易滥用和误导时间序列模型(适宜做什么?)一元时间序列(长期预测?)多元时间序列(经济?金融)单位根和协整检验(出现矛盾和条件不满足)VARX模型计算 状态空间模型计算小心!要相信常识,不要迷信数学谢谢!