Skip to content

Instantly share code, notes, and snippets.

@mynameisvinn
Created August 19, 2025 13:43
Show Gist options
  • Save mynameisvinn/bf69d3508416d8424f300e1119525262 to your computer and use it in GitHub Desktop.
Save mynameisvinn/bf69d3508416d8424f300e1119525262 to your computer and use it in GitHub Desktop.
Housing
* Optimal Bedroom Calculator in Stata
* Calculate the minimum number of bedrooms needed based on household composition
*
* Rules:
* - Children under 5 can be paired two per room
* - Children 6-9 of different sex cannot share a bedroom
* - Children 6-9 of same sex can share a bedroom
* - Anyone over 10, incapacitated, or full-time student gets their own bedroom
* Clear existing data and set up
clear all
* Create example dataset
input q1d_1 q1d_2M q1d_2F q1d_2U q1d_3M q1d_3F q1d_3U q1d_4 q1d_5I q1d_5S
1 0 1 0 1 0 0 0 0 0
2 1 0 0 2 1 0 0 0 1
0 2 1 0 0 1 0 1 0 0
3 0 0 1 1 2 0 0 0 0
1 1 1 0 0 1 0 1 1 0
0 0 0 0 2 1 1 0 0 2
2 1 0 0 1 2 0 0 0 0
1 0 2 0 0 1 0 1 0 1
0 1 0 1 1 1 0 0 1 0
2 0 1 0 2 0 0 1 0 0
end
* Label variables for clarity
label var q1d_1 "Children 5 and under"
label var q1d_2M "Children 6-9 male"
label var q1d_2F "Children 6-9 female"
label var q1d_2U "Children 6-9 sex unspecified"
label var q1d_3M "Children 10-17 male"
label var q1d_3F "Children 10-17 female"
label var q1d_3U "Children 10-17 sex unspecified"
label var q1d_4 "Children 18-20"
label var q1d_5I "Incapacitated children 21-23"
label var q1d_5S "Full time student children 21-23"
* Calculate optimal bedrooms using generate commands
* 1. Children under 5: 2 per room (round up using ceil function)
gen bedrooms_under_5 = ceil(q1d_1 / 2)
* 2. Children 6-9: Same sex can share, different sex cannot
gen bedrooms_6_9_male = ceil(q1d_2M / 2)
gen bedrooms_6_9_female = ceil(q1d_2F / 2)
* For unspecified sex children 6-9, be conservative - each needs own room
gen bedrooms_6_9_unspecified = q1d_2U
* Total bedrooms for 6-9 age group
gen bedrooms_6_9_total = bedrooms_6_9_male + bedrooms_6_9_female + bedrooms_6_9_unspecified
* 3. Everyone else gets their own bedroom
gen individual_bedrooms = q1d_3M + q1d_3F + q1d_3U + q1d_4 + q1d_5I + q1d_5S
* Total optimal bedrooms
gen optimal_bedrooms = bedrooms_under_5 + bedrooms_6_9_total + individual_bedrooms
* Label the calculated variables
label var bedrooms_under_5 "Bedrooms for children under 5"
label var bedrooms_6_9_total "Bedrooms for children 6-9"
label var individual_bedrooms "Individual bedrooms (10+, incap, students)"
label var optimal_bedrooms "Total optimal bedrooms"
* Display results with detailed breakdown
list q1d_1 q1d_2M q1d_2F q1d_2U bedrooms_under_5 bedrooms_6_9_total individual_bedrooms optimal_bedrooms, ///
title("Household Bedroom Requirements") ///
separator(0) ///
clean
* Summary statistics
di ""
di "Summary Statistics:"
di "=================="
summarize optimal_bedrooms, detail
* More detailed breakdown for analysis
di ""
di "Detailed Breakdown by Household:"
di "==============================="
forvalues i = 1/`=_N' {
di ""
di "Household `i':"
di " Children under 5: " q1d_1[`i'] " → " bedrooms_under_5[`i'] " bedrooms"
di " Children 6-9: M:" q1d_2M[`i'] ", F:" q1d_2F[`i'] ", U:" q1d_2U[`i'] " → " bedrooms_6_9_total[`i'] " bedrooms"
di " Individual rooms needed: " individual_bedrooms[`i'] " bedrooms"
di " TOTAL BEDROOMS: " optimal_bedrooms[`i']
}
* Save results if needed
* save "bedroom_calculations.dta", replace
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment