1
$\begingroup$

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:

  1. 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)?
  2. 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)
  3. 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?

$\endgroup$
6
  • $\begingroup$ Welcome. Is the policy at the municipality level? Could you provide more clarification about your treatment? $\endgroup$ Commented Mar 16, 2022 at 15:09
  • $\begingroup$ Hello @ThomasBilach, yes, the policy (some sort of rent regulation) introduced in 08/2015 applies to the whole municipality (Munich, with around 73 different zipcodes). Since then, dwellings within the municipality are either regulated or non-regulated according to specific characteristics (which I grouped into treatment and control group according to those characteristics). $\endgroup$
    – kaliscle
    Commented Mar 16, 2022 at 15:56
  • $\begingroup$ So the policy affects all areas within Munich? If this is so, then it appears you want to see whether the policy affects regulated and non-regulated dwellings differently after the policy is introduced? Do I understand it correctly? In short, the actual treatment/control group is regulated versus non-regulated, right? $\endgroup$ Commented Mar 16, 2022 at 16:11
  • $\begingroup$ yes all areas within Munich and yes, the treatment/control group is regulated vs. non-regulated. Similar to this paper (if you can access it): degruyter.com/document/doi/10.1111/geer.12195/html $\endgroup$
    – kaliscle
    Commented Mar 17, 2022 at 7:40
  • $\begingroup$ In that paper, the newly built/renovated apartments are part of the unbraked group, whereas the other newly advertised apartments serve as part of the braked group. I have some further follow-up: (1) You indicated you have repeated cross-sectional data. So you're sampling a new subset of dwellings within Munich in each year? (2) Do you have data for any other cities? Hamburg? Cologne? $\endgroup$ Commented Mar 19, 2022 at 0:34

1 Answer 1

0
$\begingroup$

In order for this to work, a sampled rental/dwelling unit $i$ must belong to a particular group, say group $T_{g} \in {0,1}$ (1 = braked), and the two groups should be observed before and after the reform. If my understanding is correct, newly built or modernized/renovated apartments serve as part of the unbraked group; they are not affected by the rent brake (i.e., treatment). The other newly advertised rentals/dwellings serve as part of the braked segment; they're the units that are actually affected by the reform. Your goal is to follow these two groups pre-/post-reform, in keeping with a traditional difference-in-differences framework. The model would look something like the following:

$$ \log(R_{igt}) = \gamma T_{g} + \lambda P_{t} + \delta (T_{g} \times P_{t}) + X_{igt}'\theta + \epsilon_{igt} $$

where $R$ is the rental price (logged) of interest. As indicated before, $T_{g}$ a treatment dummy, grouping units into either the braked/unbraked group. $P_{t}$ is a time indicator, where a value of 1 means we are in the reform epoch, 0 otherwise. The product of these two terms returns the difference-in-differences estimate. And lastly, the covariate vector $X$ is whatever housing characteristics you want to include in your model; it seems like you have a lot of them.

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)?

The names of the different areal units (i.e., territorial divisions) may vary, but yes including a set of district dummies is one way to account for location. You could easily estimate them in a linear model. I recommend excluding the coefficients from your tabular results as your model already includes a large number of covariates. Try estimating the above model with, and without, the district dummies and assess how they affect your point estimates.

Also, if you're concerned about where a unit is relative to the center of a jurisdiction, then consider including a covariate which represents the distance to the city center, which you should consider including logarithmically.

Should I create a time fixed effect for the years 2011-2021 to account for changes within time?

Yes.

But note that the pre-/post-reform indicator $P_{t}$ is enough to capture the time effects. It's just another way to capture those common time shocks affecting both groups. In a setting where the reform (i.e., treatment) affects the "braked group" at a precise, well-defined point in time, then you'll find the point estimates shouldn't change much whether you add a pre-/post-reform indicator or include the individual year dummies.

If you do decide to estimate a series of year effects, then you'll discover that software will invariably drop the pre-/post-reform indicator. In the research you cited, tabular results don't include a main effect for "post" (see, e.g., Table 2). The year dummies completely absorb the pre-/post-reform indicator. Again, a pre-/post-reform indicator is just another way of modeling the time shocks affecting both groups.

Could the results be biased if the number of observations in the treatment and control group differ?

It could, but I assume your sample size if sufficient. In previous evaluations of the rent brake, the number of sampled $i$ was usually around 10,000 units. In some city jurisdictions (e.g., Berlin), the number of rentals was nearly seven times that amount.

I included some R code below, which explicitly introduces greater model complexity as we include more and more adjustments.

## Unadjusted difference-in-differences

model_1 <- lm(rent_log ~ braked*rba, data = ...)

## Adjusted difference-in-differences
 # covariates = housing characteristics (e.g., year of construction, number of floors, etc.)

model_2 <- lm(rent_log ~ braked*rba + covariates, data = ...)

## Adjusted difference-in-differences
 # as.factor(zipcode) = district (location) fixed effects

model_3 <- lm(rent_log ~ braked*rba + covariates + as.factor(zipcode), data = ...)

## Adjusted difference-in-differences
 # as.factor(year) = year (time) fixed effects

model_4 <- lm(rent_log ~ braked*rba + covariates + as.factor(zipcode) + as.factor(year), data = ...)

To be honest, the feols() function from the fixest package offers some great functionality. The fixed effects listed on the right-hand side of the | shouldn't appear in your output, which is nice. Just note that rba will be dropped in the presence of the year fixed effects. I am somewhat partial to the latter approach, as it will result in somewhat cleaner output.

$\endgroup$
4
  • $\begingroup$ Thank you for your answer and the model specifications. I tried the different adjustments within the lm-function. If I include the zipcode + year dummies, the R² is highest compared to the model with only a location fixed effect and the p-value of the interaction term braked:rba is <0.01 whereas with only a location fixed effect the p-value is <0.05. The standard error doesn't change for the interaction term. As you pointed out, the value of the estimates just changed from -0.006 (location dummies) to -0.009 (year+location dummies) $\endgroup$
    – kaliscle
    Commented Mar 28, 2022 at 11:37
  • $\begingroup$ No problem. Including the time dummies seems wise. But I do have a concern. Why do you use the “date of offer” as standing in for the times fixed effects? Why not use a series of year dummies? $\endgroup$ Commented Mar 28, 2022 at 19:41
  • $\begingroup$ I actually included the years of offer as the time dummy set which corresponds to 10 years (2011 as reference category). If adding a series for year dummies, how could I compute them? I mean based on which argument would it be 0/1 in each year 2011-2021? $\endgroup$
    – kaliscle
    Commented Mar 29, 2022 at 18:54
  • $\begingroup$ or do you think I should include a fixed time effect for the construction year of the dwellings? $\endgroup$
    – kaliscle
    Commented Mar 30, 2022 at 12:46

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.