三因子模型的回归怎么做

一、三因子模型的回归怎么做

线性回归,是统计学领域的方法,用的时候需要关注假设条件是否满足、模型拟合是否达标,参数是否显著,自变量之间是否存在多重共线性等等问题因为统计学是一个过程导向的,需要每一步都要满足相应的数学逻辑。

下面讲讲我对线性回归的体会(只讲体会,原理的内容就不多说了,因为不难,而且网上相应资料很多!~):

1、linear regression 是最原始的回归,用来做数值类型的回归(有点绕,是为了区别“分类”),比如你可以利用它构建模型,输入你现在的体重、每天卡路里的摄入量、每天运动量等,预测你一个月的体重会是多少,从模型的summary中,查看模型对数据解释了多少,哪些自变量在影响你体重变化中更重要(事先对变量做了standardize),还可以看出在其它自变量不变的适合,其中一个自变量每变化1%,你的体重会变化多少(事先对自变量没做standardize)。 当问题是线性,或者偏向线性,假设条件又都满足(很难),又做好了数据预处理(工作量可能很大)时,线性回归算法的表现是挺不错的,而且在对模型很容易解释!但是,当问题不是线性问题时,普通线性回归算法就表现不太好了。

2、曲线回归,我更喜欢称之为“多项式回归”,是为了让弥补普通线性回归不擅长处理非线性问题而设计的,它给自变量加上一些适合当前问题的非线性特征(比如指数等等),让模型可以更好地拟合当前非线性问题。虽然有一些方法来帮助判断如何选择非线性特征,可以保证模型更优秀。但动手实践过的人,都知道,那有点纸上谈兵了,效果不好,而且有些非线性很难简单地表示出来!!

3、logistic regression,我感觉它应该属于机器学习领域的方法了(当你不去纠结那些繁琐的假设条件时),它主要是用来分析当因变量是分类变量的情况,且由于本身带有一丝的非线性特征,所以在处理非线性问题时,模型表现的也挺好(要用好它,需要做好数据预处理工作,把数据打磨得十分“漂亮”)。企业十分喜欢用它来做数据挖掘,原因是算法本身表现良好,而且对模型的输出结果容易解释(领导们都听得懂),不像其它高端的机器学习算法,比如Multiboost、SVM等,虽然很善于处理非线性问题,对数据质量的要求也相对较低,但它们总是在黑盒子里工作,外行人根本看不懂它是怎么运行的,它的输出结果应该怎么解释!(好吧,其实内行人也很难看懂!- - )

二、如何使用eviwes进行线性回归分析

1、建立workfile 2、建立序列对象,将你的数据输入或者导入,比如序列分别为 y x1 x2 x3 3、在命令窗口中输入ls y c x1 x2 x3 回车,得到结果。 第一步是基础,它的含义其实是建立一个容纳eviews对象的“容器”,第二步是建立数据对象

三、机器学习算法中GBDT和XGBOOST的区别有哪些

尝试回答一下

首先xgboost是Gradient Boosting的一种高效系统实现,并不是一种单一算法。xgboost里面的基学习器除了用tree(gbtree),也可用线性分类器(gblinear)。而GBDT则特指梯度提升决策树算法。

xgboost相对于普通gbm的实现,可能具有以下的一些优势:

显式地将树模型的复杂度作为正则项加在优化目标

公式推导里用到了二阶导数信息,而普通的GBDT只用到一阶

允许使用column(feature) sampling来防止过拟合,借鉴了Random Forest的思想,sklearn里的gbm好像也有类似实现。

4.实现了一种分裂节点寻找的近似算法,用于加速和减小内存消耗。

5.节点分裂算法能自动利用特征的稀疏性。

6.data事先排好序并以block的形式存储,利于并行计算

7.cache-aware, out-of-core computation,这个我不太懂。。

8.支持分布式计算可以运行在MPI,YARN上,得益于底层支持容错的分布式通信框架rabit。

四、什么是线性回归?

我们以一简单数据组来说明什么是线性回归。假设有一组数据型态为 y=y(x),其中

x={0, 1, 2, 3, 4, 5}, y={0, 20, 60, 68, 77, 110}

如果我们要以一个最简单的方程式来近似这组数据,则非一阶的线性方程式莫属。先将这组数据绘图如下

图中的斜线是我们随意假设一阶线性方程式 y=20x,用以代表这些数据的一个方程式。以下将上述绘图的 MATLAB 指令列出,并计算这个线性方程式的 y 值与原数据 y 值间误差平方的总合。

>> x=[0 1 2 3 4 5];

>> y=[0 20 60 68 77 110];

>> y1=20*x; % 一阶线性方程式的 y1 值

>> sum_sq = sum(y-y1).^2); % 误差平方总合为 573

>> axis([-1,6,-20,120])

>> plot(x,y1,x,y,'o'), title('Linear estimate'), grid

如此任意的假设一个线性方程式并无根据,如果换成其它人来设定就可能采用不同的线性方程式;所以我们 须要有比较精确方式决定理想的线性方程式。我们可以要求误差平方的总合为最小,做为决定理想的线性方 程式的准则,这样的方法就称为最小平方误差(least squares error)或是线性回归。MATLAB的polyfit函数提供了 从一阶到高阶多项式的回归法,其语法为polyfit(x,y,n),其中x,y为输入数据组n为多项式的阶数,n=1就是一阶 的线性回归法。polyfit函数所建立的多项式可以写成

从polyfit函数得到的输出值就是上述的各项系数,以一阶线性回归为例n=1,所以只有 二个输出值。如果指令为coef=polyfit(x,y,n),则coef(1)= , coef(2)=,...,coef(n+1)= 。注意上式对n 阶的多 项式会有 n+1 项的系数。我们来看以下的线性回归的示范:

>> x=[0 1 2 3 4 5];

>> y=[0 20 60 68 77 110];

>> coef=polyfit(x,y,1); % coef 代表线性回归的二个输出值

>> a0=coef(1); a1=coef(2);

>> ybest=a0*x+a1; % 由线性回归产生的一阶方程式

>> sum_sq=sum(y-ybest).^2); % 误差平方总合为 356.82

>> axis([-1,6,-20,120])

>> plot(x,ybest,x,y,'o'), title('Linear regression estimate'), grid