在Logistic回归中偏移SAS过采样中的罕见事件

时间:2016-07-05 05:50:22

标签: sas logistic-regression

任何人都可以帮助我理解在Logistic回归中使用偏移方法(最好在Proc Logistic and Scoring中的Base SAS中)进行过采样的Premodel和Postmodel调整。

我会举一个例子。考虑到银行的传统信用评分模型,假设我们有10000个客户,50000个好客户和2000个坏客户。现在,对于我的Logistic回归,我使用了所有2000个不良随机样本的2000个好客户。如何使用偏移等选项以及评分期间在Proc Logistic中调整此过采样。你对这个主题的插图有什么参考吗? 在此先感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

好的,这是我的2美分。

有时,目标变量是一种罕见的事件,如欺诈。在这种情况下,使用逻辑回归将由于事件数据不足而具有显着的样本偏差。过采样是一种常见的方法,因为它简单。

然而,当分数用于决策时需要进行模型校准(这是您的情况) - 但是如果模型仅用于排序,则无需进行任何操作(请记住,概率将被夸大但订单仍然相同) )。

协变量的参数和比值比估计(及其置信限)不受此类采样(或过采样)的影响,因此不需要加权。但是,截距估计会受到采样的影响,因此任何基于完整参数估计值的计算都是不正确的。

假设真实模型为:ln(y/(1-y))=b0+b1*x.使用过采样时,b1′与真实模型一致,但b0′不等于bo

通常有两种方法:

  1. 加权逻辑回归,
  2. 只需添加偏移量。
  3. 我将根据您的问题解释偏移版本。

    让我们创建一些虚拟数据,其中你的DP(y)和你的IV(iv)之间的真实关系是ln(y/(1-y)) = -6+2iv

    data dummy_data;
        do j=1 to 1000;
            iv=rannor(10000); *independent variable;
            p=1/(1+exp(-(-6+2*iv))); * event probability;
            y=ranbin(10000,1,p);  * independent variable 1/0;
            drop j;
            output;
        end;
    run;
    

    让我们看看你的事件发生率:

    proc freq data=dummy_data;
    tables y;
    run;
    
    
        Cumulative    Cumulative
    y    Frequency     Percent     Frequency      Percent
    ------------------------------------------------------
    0         979       97.90           979        97.90  
    1          21        2.10          1000       100.00  
    

    与您的问题相似,事件发生率为p = 0.0210,换句话说非常罕见

    让我们使用poc logistic来估计参数

    proc logistic data=dummy_data;
    model y(event="1")=iv;
    run;
    
                                   Standard          Wald
    Parameter    DF    Estimate       Error    Chi-Square    Pr > ChiSq
    
    Intercept     1     -5.4337      0.4874      124.3027        <.0001
    iv            1      1.8356      0.2776       43.7116        <.0001
    

    逻辑结果与真实模型非常接近,但基本假设不会像你所知的那样成立。

    现在让我们通过选择p = 0.2的所有事件案例和非事件案例来对原始数据集进行过采样

    data oversampling; 
    set dummy_data;
       if y=1 then output;
       if y=0 then do;
         if ranuni(10000)<1/20 then output;
       end;
    run;
    
    
    
    proc freq data=oversampling;
    tables y;
    run;
    
                          Cumulative    Cumulative
    y    Frequency     Percent     Frequency      Percent
    ------------------------------------------------------
    0          54       72.00            54        72.00  
    1          21       28.00            75       100.00  
    

    您的事件发生率(神奇地)从2.1%跳升到28%。让我们再次运行proc logistic。

    proc logistic data=oversampling;
    model y(event="1")=iv;
    run;
                                     Standard        Wald
    Parameter    DF    Estimate       Error    Chi-Square    Pr > ChiSq
    
    Intercept     1     -2.9836      0.6982       18.2622        <.0001
    iv            1      2.0068      0.5139       15.2519        <.0001 
    

    正如您所看到的,静态估计值仍接近实际值,但您的截距已从-5.43更改为-2.98,这与我们-6的真实值非常不同。

    这是偏移量发挥作用的地方。偏移量是已知总体与样本事件概率之间的比率的对数,并根据事件的真实分布而不是样本分布(过采样数据集)调整截距。

    Offset = log(0.28)/(1-0.28)*(0.0210)/(1-0.0210) = 2.897548

    因此,您的拦截调整将为intercept = -2.9836-2.897548= -5.88115,这与实际值非常接近。

    或者在proc logistic中使用offset选项:

    data oversampling_with_offset;
    set oversampling;
    off= log((0.28/(1-0.28))*((1-0.0210)/0.0210)) ;
    run;
    
    proc logistic data=oversampling_with_offset;
    model y(event="1")=iv / offset=off;
    run;
    
    
                                   Standard          Wald
    Parameter    DF    Estimate       Error    Chi-Square    Pr > ChiSq
    
    Intercept     1     -5.8811      0.6982       70.9582        <.0001
    iv            1      2.0068      0.5138       15.2518        <.0001
    off           1      1.0000           0         .             .    
    

    从这里,您的所有估算值都会得到正确调整和分析。解释应该照常进行。

    希望得到它的帮助。

答案 1 :(得分:0)

这是一个很好的解释。

在罕见事件实验中对样本进行过采样或欠采样时,截距会受到影响,而不是倾斜。因此,在最终输出中,您只需要通过在SAS的proc logistic中添加offset语句来调整截距。概率受到过采样的影响,但是再次受到影响,排名没有受到上述影响。

如果您的目的是对数据进行分位数评估,则无需调整偏移量,可以根据过采样模型的观察概率对观察结果进行排序,然后将它们放入分位数(正常使用Proc Rank)。但是,实际概率分数会受到影响,因此您无法使用实际概率值。 ROC曲线也不会受到影响。