I'm trying to estimate a difference-in-difference model with pooled cross-sectional data. The dataset consists of rental prices in one city for the years of 2011-2021 and includes a wide range of other variables (e.g. living size, lift, heating etc.).
I added a dummy variable "braked": 0 if the dwelling is in the control group and 1: if the dwelling is in the treatment group plus a time dummy variable "rba": 0 if the policy (rental brake in Germany) is not active and 1: if the policy is active at the time of observation (all units are treated/not treated at the same single point of time)
The model is specified as:
model_advanced <- lm(rent_log ~ construction_year + living_space_sqm
+ floor_of_object + number_of_floors
+ elevator + balcony + built_in_kitchen + garden + cellar
+ Sophisticated + Normal + Deluxe + Simple
+ floor_heating + selfcontained_central_heating
+ district_heating + gas_heating + oil_heating
+ night_storage_heaters + electric_heating
+ well_kempt + like_new + completely_renovated
+ modernised + reconstructed
+ needs_renovation + dilapidated
+ rba + braked + braked*rba,
data = data_rbind1)
My questions are the following:
- I have to include the location of the dwellings in some way, because the rental prices are of course higher in the center of the city than outside of the city. Could I just add a municipality fixed effect (based on the zip code)?
- Should I create a time fixed effect for the years 2011-2021 to account for changes within time? (see in the following code: variable "ajahr" is the date of offer of the rental unit)
- Could the results be biased if the number of observations in the treatment and control group differ? I have
My R Code looks like the following with fixed effects:
model_advanced_FE <- feols(rent_log ~ construction_year + living_space_sqm
+ floor_of_object + number_of_floors
+ elevator + balcony + built_in_kitchen + garden + cellar
+ Sophisticated + Normal + Deluxe + Simple
+ floor_heating + selfcontained_central_heating
+ district_heating + gas_heating + oil_heating
+ night_storage_heaters + electric_heating
+ well_kempt + like_new + completely_renovated
+ modernised + reconstructed
+ needs_renovation + dilapidated
+ rba + braked + braked*rba| zipcode + ajahr,
data = data_rbind1,
demeaned = TRUE
)
Would this be the right approach?