Reduced Form
Models with AVMMC
# data set: data.houston
# OLS
data.hou <- data.houston[data.houston$id.brand>1, ]
avmmc.ols0 <- lm(adr ~ avmmc, data= data.hou)
avmmc.ols1 <- lm(adr ~ avmmc + rating, data= data.hou)
avmmc.ols2 <- lm(adr ~ avmmc + rating + hi.sales, data= data.hou)
avmmc.ols3 <- lm(adr ~ avmmc + factor(chain), data= data.hou)
avmmc.ols4 <- lm(adr ~ avmmc + rating + factor(chain), data= data.hou)
avmmc.ols5 <- lm(adr ~ avmmc + rating + hi.sales + factor(chain), data= data.hou)
stargazer(avmmc.ols0, avmmc.ols1, avmmc.ols2, avmmc.ols3, avmmc.ols4, avmmc.ols5,
type="html", omit =c("chain"),
add.lines = list(c("Chain FE", rep("No", 3), rep("Yes", 3))),
title = c("Results of OLS Models with AVMMC")
)
Results of OLS Models with AVMMC
|
|
Dependent variable:
|
|
|
|
adr
|
|
(1)
|
(2)
|
(3)
|
(4)
|
(5)
|
(6)
|
|
avmmc
|
0.059
|
0.089***
|
0.088***
|
-0.149***
|
-0.064**
|
-0.068**
|
|
(0.049)
|
(0.029)
|
(0.029)
|
(0.037)
|
(0.032)
|
(0.032)
|
|
|
|
|
|
|
|
rating
|
|
28.886***
|
28.679***
|
|
24.046***
|
24.054***
|
|
|
(0.583)
|
(0.580)
|
|
(1.135)
|
(1.122)
|
|
|
|
|
|
|
|
hi.sales
|
|
|
-29.174***
|
|
|
-33.394***
|
|
|
|
(6.679)
|
|
|
(6.099)
|
|
|
|
|
|
|
|
Constant
|
97.336***
|
21.011***
|
25.308***
|
143.851***
|
48.595***
|
52.545***
|
|
(2.380)
|
(2.074)
|
(2.282)
|
(2.782)
|
(5.089)
|
(5.083)
|
|
|
|
|
|
|
|
|
Chain FE
|
No
|
No
|
No
|
Yes
|
Yes
|
Yes
|
Observations
|
1,274
|
1,274
|
1,274
|
1,274
|
1,274
|
1,274
|
R2
|
0.001
|
0.660
|
0.665
|
0.635
|
0.732
|
0.738
|
Adjusted R2
|
0.0003
|
0.659
|
0.664
|
0.628
|
0.726
|
0.733
|
Residual Std. Error
|
48.810 (df = 1272)
|
28.503 (df = 1271)
|
28.303 (df = 1270)
|
29.767 (df = 1249)
|
25.536 (df = 1248)
|
25.245 (df = 1247)
|
F Statistic
|
1.426 (df = 1; 1272)
|
1,231.605*** (df = 2; 1271)
|
839.110*** (df = 3; 1270)
|
90.625*** (df = 24; 1249)
|
136.175*** (df = 25; 1248)
|
135.130*** (df = 26; 1247)
|
|
Note:
|
p<0.1; p<0.05; p<0.01
|
avmmc2.ols0 <- lm(adr ~ avmmc2, data= data.hou)
avmmc2.ols1 <- lm(adr ~ avmmc2 + rating, data= data.hou)
avmmc2.ols2 <- lm(adr ~ avmmc2 + rating + hi.sales, data= data.hou)
avmmc2.ols3 <- lm(adr ~ avmmc2 + factor(chain), data= data.hou)
avmmc2.ols4 <- lm(adr ~ avmmc2 + rating + factor(chain), data= data.hou)
avmmc2.ols5 <- lm(adr ~ avmmc2 + rating + hi.sales + factor(chain), data= data.hou)
stargazer(avmmc2.ols0, avmmc2.ols1, avmmc2.ols2, avmmc2.ols3, avmmc2.ols4, avmmc2.ols5,
type="html", omit =c("chain"),
add.lines = list(c("Chain FE", rep("No", 3), rep("Yes", 3))),
title = c("Results of OLS Models with AVMMC2")
)
Results of OLS Models with AVMMC2
|
|
Dependent variable:
|
|
|
|
adr
|
|
(1)
|
(2)
|
(3)
|
(4)
|
(5)
|
(6)
|
|
avmmc2
|
0.520
|
2.593***
|
2.788***
|
-2.466***
|
-0.451
|
-0.213
|
|
(1.072)
|
(0.625)
|
(0.622)
|
(0.847)
|
(0.731)
|
(0.724)
|
|
|
|
|
|
|
|
rating
|
|
29.008***
|
28.799***
|
|
24.236***
|
24.311***
|
|
|
(0.582)
|
(0.579)
|
|
(1.137)
|
(1.124)
|
|
|
|
|
|
|
|
hi.sales
|
|
|
-31.318***
|
|
|
-32.949***
|
|
|
|
(6.666)
|
|
|
(6.120)
|
|
|
|
|
|
|
|
Constant
|
98.746***
|
19.642***
|
23.842***
|
141.441***
|
45.586***
|
48.504***
|
|
(2.330)
|
(2.087)
|
(2.255)
|
(2.708)
|
(5.059)
|
(5.033)
|
|
|
|
|
|
|
|
|
Chain FE
|
No
|
No
|
No
|
Yes
|
Yes
|
Yes
|
Observations
|
1,274
|
1,274
|
1,274
|
1,274
|
1,274
|
1,274
|
R2
|
0.0002
|
0.662
|
0.667
|
0.633
|
0.731
|
0.737
|
Adjusted R2
|
-0.001
|
0.661
|
0.667
|
0.626
|
0.726
|
0.732
|
Residual Std. Error
|
48.833 (df = 1272)
|
28.418 (df = 1271)
|
28.186 (df = 1270)
|
29.856 (df = 1249)
|
25.572 (df = 1248)
|
25.290 (df = 1247)
|
F Statistic
|
0.236 (df = 1; 1272)
|
1,242.781*** (df = 2; 1271)
|
849.615*** (df = 3; 1270)
|
89.775*** (df = 24; 1249)
|
135.652*** (df = 25; 1248)
|
134.475*** (df = 26; 1247)
|
|
Note:
|
p<0.1; p<0.05; p<0.01
|
Reduced Form with AVMMC.KNN
# starting data set: data.houston
avmmc.knn <- get.avmmc.knn(mkt.id.fld = "qtr", id.brand.fld = "id.brand",
id.chain.fld = "id.chain" , price.fld = "adr",
ocu.fld ="ocu", room.fld = "room",
rating.fld = "rating",lat.fld = "lat",
lon.fld = "lon", knn = 4, data= data.houston)
data.houston1 <- data.houston
for (var in names(avmmc.knn)){
# print(var)
temp <- avmmc.knn[[var]]
temp <- as.data.frame(temp)
if(length(grep("knn", var))==1){
colnames(temp) <- var
} else{
colnames(temp) <- paste0(var, ".knn")
}
data.houston1[,colnames(temp)] <- temp
}
# data frame: data.houston1
# data set: data.houston
# OLS
data.hou1 <- data.houston1[data.houston1$id.brand>1, ]
avmmc.knn.ols0 <- lm(adr ~ avmmc.knn , data= data.hou1)
avmmc.knn.ols1 <- lm(adr ~ avmmc.knn + rating, data= data.hou1)
avmmc.knn.ols2 <- lm(adr ~ avmmc.knn + rating + hi.sales, data= data.hou1)
avmmc.knn.ols3 <- lm(adr ~ avmmc.knn + factor(chain), data= data.hou1)
avmmc.knn.ols4 <- lm(adr ~ avmmc.knn + rating + factor(chain), data= data.hou1)
avmmc.knn.ols5 <- lm(adr ~ avmmc.knn + rating + hi.sales + factor(chain), data= data.hou1)
stargazer(avmmc.knn.ols0, avmmc.knn.ols1, avmmc.knn.ols2, avmmc.knn.ols3, avmmc.knn.ols4, avmmc.knn.ols5,
type="html", omit =c("chain"),
add.lines = list(c("Chain FE", rep("No", 3), rep("Yes", 3))),
title = c("Results of OLS Models with AVMMC.KNN")
)
Results of OLS Models with AVMMC.KNN
|
|
Dependent variable:
|
|
|
|
adr
|
|
(1)
|
(2)
|
(3)
|
(4)
|
(5)
|
(6)
|
|
avmmc.knn
|
-1.574***
|
-0.085
|
0.010
|
-0.967***
|
-0.516***
|
-0.419***
|
|
(0.163)
|
(0.104)
|
(0.105)
|
(0.122)
|
(0.108)
|
(0.109)
|
|
|
|
|
|
|
|
rating
|
|
28.693***
|
28.657***
|
|
23.207***
|
23.442***
|
|
|
(0.614)
|
(0.610)
|
|
(1.142)
|
(1.134)
|
|
|
|
|
|
|
|
hi.sales
|
|
|
-29.459***
|
|
|
-28.472***
|
|
|
|
(6.856)
|
|
|
(6.190)
|
|
|
|
|
|
|
|
Constant
|
109.343***
|
25.547***
|
28.816***
|
140.586***
|
50.835***
|
52.712***
|
|
(1.656)
|
(2.056)
|
(2.179)
|
(2.071)
|
(4.767)
|
(4.746)
|
|
|
|
|
|
|
|
|
Chain FE
|
No
|
No
|
No
|
Yes
|
Yes
|
Yes
|
Observations
|
1,274
|
1,274
|
1,274
|
1,274
|
1,274
|
1,274
|
R2
|
0.069
|
0.657
|
0.662
|
0.648
|
0.736
|
0.740
|
Adjusted R2
|
0.068
|
0.657
|
0.661
|
0.641
|
0.730
|
0.735
|
Residual Std. Error
|
47.132 (df = 1272)
|
28.602 (df = 1271)
|
28.408 (df = 1270)
|
29.231 (df = 1249)
|
25.346 (df = 1248)
|
25.143 (df = 1247)
|
F Statistic
|
93.696*** (df = 1; 1272)
|
1,218.694*** (df = 2; 1271)
|
829.779*** (df = 3; 1270)
|
95.906*** (df = 24; 1249)
|
138.984*** (df = 25; 1248)
|
136.611*** (df = 26; 1247)
|
|
Note:
|
p<0.1; p<0.05; p<0.01
|
avmmc.knn2.ols0 <- lm(adr ~ avmmc.knn2 , data= data.hou1)
avmmc.knn2.ols1 <- lm(adr ~ avmmc.knn2 + rating, data= data.hou1)
avmmc.knn2.ols2 <- lm(adr ~ avmmc.knn2 + rating + hi.sales.knn, data= data.hou1)
avmmc.knn2.ols3 <- lm(adr ~ avmmc.knn2 + factor(chain), data= data.hou1)
avmmc.knn2.ols4 <- lm(adr ~ avmmc.knn2 + rating + factor(chain), data= data.hou1)
avmmc.knn2.ols5 <- lm(adr ~ avmmc.knn2 + rating + hi.sales.knn + factor(chain), data= data.hou1)
stargazer(avmmc.knn2.ols0, avmmc.knn2.ols1, avmmc.knn2.ols2, avmmc.knn2.ols3, avmmc.knn2.ols4, avmmc.knn2.ols5,
type="html", omit =c("chain"),
add.lines = list(c("Chain FE", rep("No", 3), rep("Yes", 3))),
title = c("Results of OLS Models with AVMMC.KNN2")
)
Results of OLS Models with AVMMC.KNN2
|
|
Dependent variable:
|
|
|
|
adr
|
|
(1)
|
(2)
|
(3)
|
(4)
|
(5)
|
(6)
|
|
avmmc.knn2
|
-6.265***
|
-0.414
|
-0.380
|
-4.093***
|
-2.286***
|
-2.276***
|
|
(0.680)
|
(0.430)
|
(0.432)
|
(0.508)
|
(0.449)
|
(0.449)
|
|
|
|
|
|
|
|
rating
|
|
28.677***
|
28.731***
|
|
23.180***
|
23.295***
|
|
|
(0.611)
|
(0.614)
|
|
(1.138)
|
(1.140)
|
|
|
|
|
|
|
|
hi.sales.knn
|
|
|
-9.189
|
|
|
-15.577
|
|
|
|
(10.883)
|
|
|
(9.877)
|
|
|
|
|
|
|
|
Constant
|
108.144***
|
25.626***
|
28.073***
|
140.050***
|
50.747***
|
54.699***
|
|
(1.613)
|
(2.010)
|
(3.527)
|
(2.051)
|
(4.733)
|
(5.353)
|
|
|
|
|
|
|
|
|
Chain FE
|
No
|
No
|
No
|
Yes
|
Yes
|
Yes
|
Observations
|
1,274
|
1,274
|
1,274
|
1,274
|
1,274
|
1,274
|
R2
|
0.063
|
0.657
|
0.658
|
0.649
|
0.736
|
0.737
|
Adjusted R2
|
0.062
|
0.657
|
0.657
|
0.642
|
0.731
|
0.731
|
Residual Std. Error
|
47.285 (df = 1272)
|
28.600 (df = 1271)
|
28.603 (df = 1270)
|
29.206 (df = 1249)
|
25.315 (df = 1248)
|
25.299 (df = 1247)
|
F Statistic
|
84.910*** (df = 1; 1272)
|
1,219.067*** (df = 2; 1271)
|
812.765*** (df = 3; 1270)
|
96.150*** (df = 24; 1249)
|
139.450*** (df = 25; 1248)
|
134.342*** (df = 26; 1247)
|
|
Note:
|
p<0.1; p<0.05; p<0.01
|
Reduced Form Model with AVMMC.CL
\(AVMMC.CL_j\) is the average measure of \(MMC_{jk} = \frac{\sum_m I_j^m*I_k^m}{\sum_m I_j}\) over all firms in market \(m\).
# load new data set with variable cluster
load("~/Research/MMC_September_2020/data.houston.Rdata")
kable(table(data.houston$cluster), col.names = c("Cluster", "No. of Obs."),
cpation ="Clusters in Houston, TX")
0 |
233 |
1 |
458 |
2 |
224 |
3 |
57 |
4 |
118 |
5 |
23 |
6 |
65 |
7 |
156 |
8 |
56 |
9 |
134 |
10 |
16 |
11 |
23 |
12 |
20 |
13 |
56 |
14 |
33 |
15 |
16 |
16 |
16 |
17 |
60 |
18 |
16 |
19 |
56 |
20 |
16 |
21 |
28 |
data.hou.cl <- data.houston[data.houston$cluster>0,]
data.hou.cl <- data.hou.cl[order(data.hou.cl$qtr, data.hou.cl$cluster),]
mmc.cl <- get.avmmc.cluster(mkt.id.fld ="id.msa.qtr",id.brand.fld="id.brand", id.chain.fld ="id.chain", price.fld ="adr",
ocu.fld = "ocu", room.fld ="room",
revpar.fld = "revpar", rating.fld ="rating",
cluster.fld ="cluster", data = data.hou.cl)
data.hou.cl1 <- data.hou.cl
mmc.cl$avmmc <- unlist(mmc.cl$avmmc)
for (var in names(mmc.cl)){
# print(var)
temp <- mmc.cl[[var]]
temp <- as.data.frame(temp)
if(length(grep("cl", var))==1){
colnames(temp) <- var
} else{
colnames(temp) <- paste0(var, ".cl")
}
data.hou.cl1[,colnames(temp)] <- temp
}
data.hou.cl0 <- data.hou.cl1
data.hou.cl1 <- data.hou.cl0[data.hou.cl0$id.brand>1,]
avmmc.cl.ols0 <- lm(adr ~ avmmc.cl , data= data.hou.cl1)
avmmc.cl.ols1 <- lm(adr ~ avmmc.cl + rating, data= data.hou.cl1)
avmmc.cl.ols2 <- lm(adr ~ avmmc.cl + rating + hi.sales.cl, data= data.hou.cl1)
avmmc.cl.ols3 <- lm(adr ~ avmmc.cl + factor(chain), data= data.hou.cl1)
avmmc.cl.ols4 <- lm(adr ~ avmmc.cl + rating + factor(chain), data= data.hou.cl1)
avmmc.cl.ols5 <- lm(adr ~ avmmc.cl + rating + hi.sales.cl + factor(chain), data= data.hou.cl1)
stargazer(avmmc.cl.ols0, avmmc.cl.ols1, avmmc.cl.ols2, avmmc.cl.ols3, avmmc.cl.ols4, avmmc.cl.ols5,
type="html", omit =c("chain"),
add.lines = list(c("Chain FE", rep("No", 3), rep("Yes", 3))),
title = c("Results of OLS Models with AVMMC.CL")
)
Results of OLS Models with AVMMC.CL
|
|
Dependent variable:
|
|
|
|
adr
|
|
(1)
|
(2)
|
(3)
|
(4)
|
(5)
|
(6)
|
|
avmmc.cl
|
4.374**
|
7.395***
|
7.401***
|
3.133**
|
5.015***
|
5.007***
|
|
(2.077)
|
(1.207)
|
(1.207)
|
(1.514)
|
(1.284)
|
(1.284)
|
|
|
|
|
|
|
|
rating
|
|
29.164***
|
29.154***
|
|
25.248***
|
25.234***
|
|
|
(0.614)
|
(0.614)
|
|
(1.196)
|
(1.196)
|
|
|
|
|
|
|
|
hi.sales.cl
|
|
|
-12.229
|
|
|
-13.234
|
|
|
|
(13.216)
|
|
|
(12.043)
|
|
|
|
|
|
|
|
Constant
|
97.447***
|
16.918***
|
17.997***
|
131.937***
|
34.531***
|
35.754***
|
|
(2.550)
|
(2.249)
|
(2.534)
|
(2.835)
|
(5.201)
|
(5.318)
|
|
|
|
|
|
|
|
|
Chain FE
|
No
|
No
|
No
|
Yes
|
Yes
|
Yes
|
Observations
|
1,148
|
1,148
|
1,148
|
1,148
|
1,148
|
1,148
|
R2
|
0.004
|
0.665
|
0.665
|
0.622
|
0.729
|
0.730
|
Adjusted R2
|
0.003
|
0.664
|
0.664
|
0.614
|
0.723
|
0.723
|
Residual Std. Error
|
49.272 (df = 1146)
|
28.589 (df = 1145)
|
28.591 (df = 1144)
|
30.662 (df = 1123)
|
25.952 (df = 1122)
|
25.950 (df = 1121)
|
F Statistic
|
4.436** (df = 1; 1146)
|
1,136.053*** (df = 2; 1145)
|
757.559*** (df = 3; 1144)
|
76.986*** (df = 24; 1123)
|
120.990*** (df = 25; 1122)
|
116.404*** (df = 26; 1121)
|
|
Note:
|
p<0.1; p<0.05; p<0.01
|