知识库 > 数学方法 > 回归分析 > 多重共线性的修正

逐步回归    

  • 首先,我们定义一个统计量,设原模型为中所含解释变量的集合为,则在解释变量中加入后,我们有

    式7.21形式和F统计量类似,所以我们将其叫做伪统计量。
    这样我们就可以给出逐步回归的基本步骤了:
    1:对每一个,对解释变量单独做回归计算值,,若,则选择进入模型,否则没有变量进入模型,这时我们认为所有解释变量对的影响都不显著。
    2:在第一步的基础上在剩下的个解释变量逐个加入到模型中,并计算相应的,若没有变量进入模型,第一步得到的模型就是最优模型。否则选择进入模型,考虑是否要将剔除:,若则剔除
    3:,若没有变量进入模型,上一步得到的模型就是最优模型。否则选择进入模型,考虑是否要将,…, 剔除。
    重复3直到没有变量进入模型,而且所有进入的变量都不能被剔除为此。最后一个模型就是我们要选取得最优模型。
    不足之处:该方法最终只提供一个“最优”回归方程,而无其他选择的余地

    定义:Regress_Stepwise(y:array,X:array,A_E,A_D:Real):array;
    说明:默认的回归方程包含常数项,程序返回的结果,x行为筛选的变量的下标(从0开始标示解释变量),regress行为筛选变量与因变量进行回归的结果(第一项为常数项)
    参数:
    y : 被解释变量序列,为一维数组类型;
    x : 解释变量矩阵,为二维数组类型,每一列为一个解释变量;
    A_E:选取变量的显著性水平,默认为0.05,为实数类型;
    A_D:剔除变量的显著性水平,默认为0.1,为实数类型;

    股票涨幅与各财务指标的逐步回归

    endt:=inttodate(20100910);
    stklist:=GetBKByDate('sh000300',endt);
    y:=array();
    x:=array();
    For i:=0 to length(stklist)-1 do
    Begin
    setsysparam(pn_stock(),Stklist[i]);
    setsysparam(pn_date(),endt);
    setsysparam(pn_rate(),1);
    RDate:=NewReportDateOfEndT2(EndT);
    y[i]:=stockzf3();
    x[i][0]:=Last12MData(RDate,9900000);//每股收益
    x[i][1]:=Last12MData(RDate,9900003);//每股净资产
    x[i][2]:=Last12MData(RDate,9900100);//净资产收益率
    x[i][3]:=Last12MData(RDate,9900108);//净利润率
    x[i][4]:=Last12MData(RDate,9900203);//资产负债率
    x[i][5]:=Last12MData(RDate,9900004);//净资产增长
    x[i][6]:=ln(StockMarketValue(EndT)); //流通市值
    end;
    y:=Standarize_II(`y)[:,0];//标准化
    x:=Standarize_II(x);
    return Regress_Stepwise(y,x,0.05,0.1);//逐步回归

    结果如下: