R回归:仅当指标为真时才估计系数

时间:2018-08-13 12:23:00

标签: r regression

我想对回归进行拟合,其中结果是销售单位,预测指标是原木价格。我想计算弹性。

但是我有2个变量,一个是正常价格,另一个是促销价格。我想有2种不同的弹性。但是,在我的数据集中,两个价格始终存在,我的意思是,当产品不促销时,常规价格等于促销价格。促销时,促销价格较低。

我尝试了几种使用指标变量进行计算的方法。

1。当产品没有打折时,我创建了一个索引,当产品打折时,它创建了一个索引。

    lm(logSales ~ 1 + logRP:I(INDEX==1) + logPP:I(INDEX!=1) ...)


    logRP:I(INDEX == 1)FALSE -1.45618    0.06189  -23.53   <2e-16 ***
    logRP:I(INDEX == 1)TRUE  -2.24568    0.08454  -26.56   <2e-16 ***
    logPP:I(INDEX != 1)FALSE -2.18178    0.01997 -109.27   <2e-16 ***
    logPP:I(INDEX != 1)TRUE  -1.85235    0.01646 -112.50   <2e-16 ***

但是,这似乎不是一个正确的解决方案,因为我不希望它为假的估计。

2。我为正常价格和促销价格创建了虚拟变量,并使用了指标I。

 lm(logSales ~ 1 + I(logRP*RP_Multiplier) + I(logPP*PP_Multiplier)

但是这里的结果对我来说根本没有意义,我的信号有误。

3。我试图简单地进行互动

    lm(logSales ~ 1 + logRP*RP_Multiplier + logPP*PP_Multiplier

但是,我不想估计乘数或价格的系数。无论如何,这根本不是我的目标。

仅当观察满足我设置的条件时,如何设置模型以估计系数?在这种情况下,仅当该变量的乘数为1时才计算弹性。

1 个答案:

答案 0 :(得分:0)

您可以使用 ifelse 函数创建新变量:

price <- ifelse(INDEX == 1, logRP, logPP)

我正在使用您的索引以不参加促销活动。如果为1,则新变量将采用logRP的值,如果为0,则将采用logPP的值。这样,新变量将具有您仅感兴趣的价格,您可以将其用作解释变量。