setwd("~/Documents/MSBA/pricing/hw2")
pizza = read.csv('pizzaWithIncr.csv')
head(pizza)
## Week U.Vol.DiGiorno Price.DiGiorno U.Vol.Fresch
## 1 WEEK ENDING 11/22/03 7394 4.99 2483
## 2 WEEK ENDING 11/29/03 5721 5.00 4054
## 3 WEEK ENDING 12/06/03 6084 5.10 16585
## 4 WEEK ENDING 12/13/03 5965 4.99 11527
## 5 WEEK ENDING 12/20/03 7002 4.99 2693
## 6 WEEK ENDING 12/27/03 6237 4.99 1916
## Price.Fresch U.Vol.JO Price.JO U.Vol.RB Price.RB U.Vol.Tomb Price.Tomb
## 1 4.99 36815 2.50 6702 4.00 9486 3.98
## 2 4.83 29019 2.50 4990 4.00 7450 4.00
## 3 4.48 79794 2.00 5681 4.00 8102 4.00
## 4 4.49 32075 2.50 23893 3.33 8970 4.00
## 5 4.99 37042 2.33 6294 3.99 9146 4.00
## 6 4.99 32268 2.43 26025 3.00 9100 3.89
## U.Vol.TO Price.TO Incr.DiGiorno Decr.DiGiorno Incr.Fresch Decr.Fresch
## 1 11380 2.26 1 0 1 0
## 2 8460 2.29 1 0 0 1
## 3 6521 2.34 1 0 0 1
## 4 9384 2.23 0 1 1 0
## 5 9276 2.25 1 0 1 0
## 6 6469 2.26 1 0 1 0
## Incr.JO Decr.JO Incr.RB Decr.RB Incr.Tomb Decr.Tomb Incr.TO Decr.TO
## 1 1 0 1 0 1 0 1 0
## 2 1 0 1 0 1 0 1 0
## 3 0 1 1 0 1 0 1 0
## 4 1 0 0 1 1 0 0 1
## 5 0 1 1 0 1 0 1 0
## 6 1 0 0 1 0 1 1 0
dim(pizza)
## [1] 156 25
# take log prices
pizza[,2:13] = log(pizza[,2:13])
head(pizza)
## Week U.Vol.DiGiorno Price.DiGiorno U.Vol.Fresch
## 1 WEEK ENDING 11/22/03 8.908424 1.607436 7.817223
## 2 WEEK ENDING 11/29/03 8.651899 1.609438 8.307459
## 3 WEEK ENDING 12/06/03 8.713418 1.629241 9.716254
## 4 WEEK ENDING 12/13/03 8.693664 1.607436 9.352447
## 5 WEEK ENDING 12/20/03 8.853951 1.607436 7.898411
## 6 WEEK ENDING 12/27/03 8.738255 1.607436 7.557995
## Price.Fresch U.Vol.JO Price.JO U.Vol.RB Price.RB U.Vol.Tomb Price.Tomb
## 1 1.607436 10.51366 0.9162907 8.810161 1.386294 9.157572 1.381282
## 2 1.574846 10.27571 0.9162907 8.515191 1.386294 8.915969 1.386294
## 3 1.499623 11.28720 0.6931472 8.644883 1.386294 8.999866 1.386294
## 4 1.501853 10.37583 0.9162907 10.081341 1.202972 9.101641 1.386294
## 5 1.607436 10.51981 0.8458683 8.747352 1.383791 9.121072 1.386294
## 6 1.607436 10.38183 0.8878913 10.166813 1.098612 9.116030 1.358409
## U.Vol.TO Price.TO Incr.DiGiorno Decr.DiGiorno Incr.Fresch Decr.Fresch
## 1 9.339613 0.8153648 1 0 1 0
## 2 9.043104 0.8285518 1 0 0 1
## 3 8.782783 0.8501509 1 0 0 1
## 4 9.146761 0.8020016 0 1 1 0
## 5 9.135186 0.8109302 1 0 1 0
## 6 8.774777 0.8153648 1 0 1 0
## Incr.JO Decr.JO Incr.RB Decr.RB Incr.Tomb Decr.Tomb Incr.TO Decr.TO
## 1 1 0 1 0 1 0 1 0
## 2 1 0 1 0 1 0 1 0
## 3 0 1 1 0 1 0 1 0
## 4 1 0 0 1 1 0 0 1
## 5 0 1 1 0 1 0 1 0
## 6 1 0 0 1 0 1 1 0
logpizza = pizza
attach(logpizza)
# multiply Increase / Decrease to price
logpizza$Incr.DiGiorno = logpizza$Incr.DiGiorno * Price.DiGiorno
logpizza$Decr.DiGiorno = logpizza$Decr.DiGiorno * Price.DiGiorno
logpizza$Incr.Fresch = logpizza$Incr.Fresch * Price.Fresch
logpizza$Decr.Fresch = logpizza$Decr.Fresch * Price.Fresch
logpizza$Incr.JO = logpizza$Incr.JO * Price.JO
logpizza$Decr.JO = logpizza$Decr.JO * Price.JO
logpizza$Incr.RB = logpizza$Incr.RB * Price.RB
logpizza$Decr.RB = logpizza$Decr.RB * Price.RB
logpizza$Incr.Tomb = logpizza$Incr.Tomb * Price.Tomb
logpizza$Decr.Tomb = logpizza$Decr.Tomb * Price.Tomb
logpizza$Incr.TO = logpizza$Incr.TO * Price.TO
logpizza$Decr.TO = logpizza$Decr.TO * Price.TO
fit.incr.digiorno = lm(logpizza$U.Vol.DiGiorno ~ Incr.DiGiorno + Decr.DiGiorno,
data=logpizza)
summary(fit.incr.digiorno)
##
## Call:
## lm(formula = logpizza$U.Vol.DiGiorno ~ Incr.DiGiorno + Decr.DiGiorno,
## data = logpizza)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.70696 -0.18083 -0.02849 0.11259 1.19049
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 14.7398 0.3934 37.47 <2e-16 ***
## Incr.DiGiorno -3.6868 0.2293 -16.08 <2e-16 ***
## Decr.DiGiorno -3.4578 0.2443 -14.15 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.288 on 153 degrees of freedom
## Multiple R-squared: 0.7525, Adjusted R-squared: 0.7492
## F-statistic: 232.5 on 2 and 153 DF, p-value: < 2.2e-16
fit.incr.Fresch = lm(logpizza$U.Vol.Fresch ~ Incr.Fresch + Decr.Fresch,
data=logpizza)
summary(fit.incr.Fresch)
##
## Call:
## lm(formula = logpizza$U.Vol.Fresch ~ Incr.Fresch + Decr.Fresch,
## data = logpizza)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.9077 -0.3419 -0.0834 0.2224 2.3763
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 13.7914 0.4659 29.60 <2e-16 ***
## Incr.Fresch -3.5485 0.2774 -12.79 <2e-16 ***
## Decr.Fresch -3.2527 0.2989 -10.88 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.534 on 153 degrees of freedom
## Multiple R-squared: 0.6118, Adjusted R-squared: 0.6067
## F-statistic: 120.6 on 2 and 153 DF, p-value: < 2.2e-16
fit.incr.JO = lm(logpizza$U.Vol.JO ~ Incr.JO + Decr.JO,
data=logpizza)
summary(fit.incr.JO)
##
## Call:
## lm(formula = logpizza$U.Vol.JO ~ Incr.JO + Decr.JO, data = logpizza)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.52257 -0.13450 0.00539 0.12245 0.94370
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 13.8091 0.1438 96.06 <2e-16 ***
## Incr.JO -3.6642 0.1372 -26.71 <2e-16 ***
## Decr.JO -3.3598 0.1655 -20.30 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.2039 on 153 degrees of freedom
## Multiple R-squared: 0.8923, Adjusted R-squared: 0.8909
## F-statistic: 634 on 2 and 153 DF, p-value: < 2.2e-16
fit.incr.RB = lm(logpizza$U.Vol.RB ~ Incr.RB + Decr.RB,
data=logpizza)
summary(fit.incr.RB)
##
## Call:
## lm(formula = logpizza$U.Vol.RB ~ Incr.RB + Decr.RB, data = logpizza)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.89416 -0.16459 0.02692 0.16090 1.54236
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 13.3881 0.2461 54.40 <2e-16 ***
## Incr.RB -3.2502 0.1728 -18.81 <2e-16 ***
## Decr.RB -2.9790 0.2011 -14.81 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.3122 on 153 degrees of freedom
## Multiple R-squared: 0.8095, Adjusted R-squared: 0.807
## F-statistic: 325 on 2 and 153 DF, p-value: < 2.2e-16
fit.incr.Tomb = lm(logpizza$U.Vol.Tomb ~ Incr.Tomb + Decr.Tomb,
data=logpizza)
summary(fit.incr.Tomb)
##
## Call:
## lm(formula = logpizza$U.Vol.Tomb ~ Incr.Tomb + Decr.Tomb, data = logpizza)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.73229 -0.19070 0.03189 0.14755 1.44151
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 13.4178 0.2796 47.99 <2e-16 ***
## Incr.Tomb -3.1194 0.1939 -16.09 <2e-16 ***
## Decr.Tomb -2.8166 0.2221 -12.68 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.3093 on 153 degrees of freedom
## Multiple R-squared: 0.7703, Adjusted R-squared: 0.7673
## F-statistic: 256.6 on 2 and 153 DF, p-value: < 2.2e-16
fit.incr.TO = lm(logpizza$U.Vol.TO ~ Incr.TO + Decr.TO,
data=logpizza)
summary(fit.incr.TO)
##
## Call:
## lm(formula = logpizza$U.Vol.TO ~ Incr.TO + Decr.TO, data = logpizza)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.80054 -0.16952 0.00844 0.17859 0.83076
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 12.7830 0.1803 70.91 <2e-16 ***
## Incr.TO -4.3470 0.1828 -23.79 <2e-16 ***
## Decr.TO -4.2752 0.2059 -20.77 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.2721 on 153 degrees of freedom
## Multiple R-squared: 0.8051, Adjusted R-squared: 0.8026
## F-statistic: 316.1 on 2 and 153 DF, p-value: < 2.2e-16
If DiGiorno raises its price by 1%, the average percentage decrease in its demand is 3.69%, given all else equal.
If DiGiorno drops its price by 1%, the average percentage increase in its demand is 3.45%, given all else equal.
If Red Baron raises its price by 1%, the average percentage decrease in its demand is 3.25%, given all else equal.
If DiGiorno drops its price by 1%, the average percentage increase in its demand is 2.97%, given all else equal.
If JO raises its price by 1%, the average percentage decrease in its demand is 3.66%, given all else equal.
If JO drops its price by 1%, the average percentage increase in its demand is 3.35%, given all else equal.
comments
We used two dummy variables to mark periods when prices increase, and periods when prices decrease. Then, we multiplied log price to dummy variables, and ran regression models on those two variables. Loss aversion does exist because in all 5 regression models, price elasticity for price increase is higher (in absolute value) than price decrease. That means, for the same 1% price change, consumers are more sensitive to price increase rather than decrease.