我想对回归进行拟合,其中结果是销售单位,预测指标是原木价格。我想计算弹性。
但是我有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时才计算弹性。
答案 0 :(得分:0)
您可以使用 ifelse 函数创建新变量:
price <- ifelse(INDEX == 1, logRP, logPP)
我正在使用您的索引以不参加促销活动。如果为1,则新变量将采用logRP的值,如果为0,则将采用logPP的值。这样,新变量将具有您仅感兴趣的价格,您可以将其用作解释变量。