HousingConditions
Accommodation Scale - 21
Measuring: Problems with the home.
Number of Items: 21
| Item | Question Wording | TILDA Variable |
|---|---|---|
| 1 | A leaking roof? | SCQAccom1 |
| 2 | Leaking or moisture getting in through walls? | SCQAccom2 |
| 3 | Leaking or moisture getting in at door or windows? | SCQAccom3 |
| 4 | Leaks from water pipes? | SCQAccom4 |
| 5 | Rising damp? | SCQAccom5 |
| 6 | Condensation dampness? | SCQAccom6 |
| 7 | General dampness from unknown sources? | SCQAccom7 |
| 8 | Mould on walls/ceilings etc? | SCQAccom8 |
| 9 | Corrosion or rot around any external door(s)? | SCQAccom9 |
| 10 | Badly fitting doors? | SCQAccom10 |
| 11 | Corrosion or rot around any window(s)? | SCQAccom11 |
| 12 | Leaky or draughty windows? | SCQAccom12 |
| 13 | Windows that don’t open/close properly? | SCQAccom13 |
| 14 | Rot in timbers other than windows/doors? | SCQAccom14 |
| 15 | Such as rot in joists, floorboards etc? | SCQAccom15 |
| 16 | Structural cracks in internal or external SUPPORT walls? | SCQAccom16 |
| 17 | Subsidence in floors? | SCQAccom17 |
| 18 | Pests – rats, mice, cockroaches? | SCQAccom18 |
| 19 | Noise from neighbouring houses? | SCQAccom19 |
| 20 | Difficulty in heating your accommodation? | SCQAccom20 |
| 21 | Difficulty in cooling your accommodation? | SCQAccom21 |
| 22 | Other problems, please specify. | SCQAccom20oth |
Note:
- Item 21 is only included in Wave 7.
Scoring Method:
1 = Yes
0 = No
Items are evaluated individually, or can be assessed under 5 categories;
Moisture, damp, mould
- Items 1-8
Structural
- Items 9-17
Heating
- Items 20-21
Pests
- Item 18
Noise
- Item 19
Citation: https://tilda.tcd.ie/publications/reports/pdf/Report_HousingConditions.pdf
Example TILDA Papers: Orr, J., Scarlett, S., Donoghue, O., McGarrigle, C., & Place, L. (2016). Housing Conditions of Ireland's Older Population. Implications for Physical and Mental Health. The Irish Longitudinal Study on Ageing on behalf of TILDA, 2016-02.
Code
*---------------------------------------------------------------*
* 1. Dichotomous accommodation problems
*
* 0 = No problem
* 1 = Problem
*---------------------------------------------------------------*
forvalues i = 1/20 {
recode SCQAccom`i' ///
(min/0 = .) ///
(1 = 0) ///
(2/max = 1), ///
gen(Accomm`i')
}
* Some routing/error codes indicate presence of the problem
* according to the original scoring code
replace Accomm1 = 1 if SCQAccom1 == -823
replace Accomm3 = 1 if SCQAccom3 == -834
replace Accomm5 = 1 if SCQAccom5 == -834
replace Accomm9 = 1 if ///
inlist(SCQAccom9, -834, -823)
replace Accomm10 = 1 if SCQAccom10 == -823
replace Accomm15 = 1 if SCQAccom15 == -834
replace Accomm16 = 1 if SCQAccom16 == -834
replace Accomm18 = 1 if SCQAccom18 == -823
capture label drop Accomm01
label define Accomm01 ///
0 "No problem" ///
1 "Problem"
label values Accomm1-Accomm20 Accomm01
*---------------------------------------------------------------*
* 2. Number of accommodation problems
*
* Original code uses Items 1-19
*---------------------------------------------------------------*
egen AccommProbs1 = rowtotal(Accomm1-Accomm19)
egen AccommProbs_missing = rowmiss(Accomm1-Accomm19)
replace AccommProbs1 = . if AccommProbs_missing > 0
label variable AccommProbs1 ///
"Number of accommodation problems"
drop AccommProbs_missing
*---------------------------------------------------------------*
* 3. Accommodation problem severity items
*
* Original:
* 1 -> 0
* 2 -> 1
* 3 -> 2
* 4 -> 3
*
* Range for each item: 0-3
*---------------------------------------------------------------*
forvalues i = 1/20 {
recode SCQAccom`i' ///
(min/0 = .) ///
(1 = 0) ///
(2 = 1) ///
(3 = 2) ///
(4 = 3) ///
(else = .), ///
gen(AccommP`i')
}
*---------------------------------------------------------------*
* 4. Overall accommodation problem severity scale
*
* Original scale uses Items 1-19
* Range: 0-57
*---------------------------------------------------------------*
egen ProbScale = rowtotal(AccommP1-AccommP19)
egen ProbScale_missing = rowmiss(AccommP1-AccommP19)
replace ProbScale = . if ProbScale_missing > 0
label variable ProbScale ///
"Accommodation problems severity scale (0-57)"
drop ProbScale_missing
*---------------------------------------------------------------*
* 5. Categorical accommodation problem scale
*---------------------------------------------------------------*
gen HProbsScale = .
replace HProbsScale = 0 if ProbScale == 0
replace HProbsScale = 1 if inrange(ProbScale, 1, 2)
replace HProbsScale = 2 if inrange(ProbScale, 3, 57)
capture label drop HProbsScale
label define HProbsScale ///
0 "None" ///
1 "One or two minor" ///
2 "A few or more"
label values HProbsScale HProbsScale
label variable HProbsScale ///
"Accommodation problem categories"
*---------------------------------------------------------------*
* 6. Any accommodation problem
*
* 0 if at least one valid item is 0 and none are 1
* 1 if any accommodation problem is present
* Missing if all 20 indicators are missing
*---------------------------------------------------------------*
egen HProbs = rowmax(Accomm1-Accomm20)
capture label drop AccommAny
label define AccommAny ///
0 "No accommodation problems" ///
1 "Any problems"
label values HProbs AccommAny
label variable HProbs ///
"Any accommodation problem"
*---------------------------------------------------------------*
* 7. Accommodation problem categories
*---------------------------------------------------------------*
* Moisture, damp or mould:
* Items 1-8 and 12
egen PDampMould = rowmax( ///
Accomm1-Accomm8 ///
Accomm12 ///
)
* Structural problems:
* Items 9-11 and 13-16
egen PStruct = rowmax( ///
Accomm9-Accomm11 ///
Accomm13-Accomm16 ///
)
* Individual problem domains
gen PNoise = Accomm18
gen PPest = Accomm17
gen PHeat = Accomm19
*---------------------------------------------------------------*
* Labels
*---------------------------------------------------------------*
label variable PDampMould ///
"Moisture, damp or mould"
label variable PStruct ///
"Structural"
label variable PNoise ///
"Noise"
label variable PPest ///
"Pests"
label variable PHeat ///
"Heating"
capture label drop ProbsLab1
label define ProbsLab1 ///
0 "No problem" ///
1 "Problem"
label values ///
PDampMould ///
PStruct ///
PNoise ///
PPest ///
ProbsLab1
capture label drop PHeatLab
label define PHeatLab ///
0 "No heating difficulties" ///
1 "Any heating difficulties"
label values PHeat PHeatLab
*---------------------------------------------------------------*
* Checks
*---------------------------------------------------------------*
summarize AccommProbs1 ProbScale
tab HProbsScale, missing
tab HProbs, missing
tab PDampMould, missing
tab PStruct, missing
tab PNoise, missing
tab PPest, missing
tab PHeat, missing
# ---------------------------------------------------------------
# 1. Dichotomous accommodation problems
# 0 = No problem
# 1 = Problem
# ---------------------------------------------------------------
for (i in 1:20) {
src <- paste0("SCQAccom", i)
out <- paste0("Accomm", i)
x <- data[[src]]
data[[out]] <- NA_real_
data[[out]][!is.na(x) & x == 1] <- 0
data[[out]][!is.na(x) & x >= 2] <- 1
}
# Some routing/error codes indicate presence of the problem
# according to the original Stata scoring code.
data$Accomm1[!is.na(data$SCQAccom1) & data$SCQAccom1 == -823] <- 1
data$Accomm3[!is.na(data$SCQAccom3) & data$SCQAccom3 == -834] <- 1
data$Accomm5[!is.na(data$SCQAccom5) & data$SCQAccom5 == -834] <- 1
data$Accomm9[!is.na(data$SCQAccom9) &
data$SCQAccom9 %in% c(-834, -823)] <- 1
data$Accomm10[!is.na(data$SCQAccom10) & data$SCQAccom10 == -823] <- 1
data$Accomm15[!is.na(data$SCQAccom15) & data$SCQAccom15 == -834] <- 1
data$Accomm16[!is.na(data$SCQAccom16) & data$SCQAccom16 == -834] <- 1
data$Accomm18[!is.na(data$SCQAccom18) & data$SCQAccom18 == -823] <- 1
for (i in 1:20) {
attr(data[[paste0("Accomm", i)]], "labels") <-
c("No problem" = 0, "Problem" = 1)
}
# ---------------------------------------------------------------
# 2. Number of accommodation problems
# Original code uses Items 1-19
# ---------------------------------------------------------------
accomm_1_19 <- paste0("Accomm", 1:19)
data$AccommProbs1 <- rowSums(data[accomm_1_19], na.rm = TRUE)
accomm_missing <- rowSums(is.na(data[accomm_1_19]))
data$AccommProbs1[accomm_missing > 0] <- NA_real_
attr(data$AccommProbs1, "label") <- "Number of accommodation problems"
# ---------------------------------------------------------------
# 3. Accommodation problem severity items
# 1->0, 2->1, 3->2, 4->3
# ---------------------------------------------------------------
for (i in 1:20) {
src <- paste0("SCQAccom", i)
out <- paste0("AccommP", i)
x <- data[[src]]
data[[out]] <- NA_real_
valid <- !is.na(x) & x >= 1 & x <= 4
data[[out]][valid] <- x[valid] - 1
}
# ---------------------------------------------------------------
# 4. Overall accommodation problem severity scale
# Original scale uses Items 1-19; range 0-57
# ---------------------------------------------------------------
accommp_1_19 <- paste0("AccommP", 1:19)
data$ProbScale <- rowSums(data[accommp_1_19], na.rm = TRUE)
prob_missing <- rowSums(is.na(data[accommp_1_19]))
data$ProbScale[prob_missing > 0] <- NA_real_
attr(data$ProbScale, "label") <-
"Accommodation problems severity scale (0-57)"
# ---------------------------------------------------------------
# 5. Categorical accommodation problem scale
# ---------------------------------------------------------------
data$HProbsScale <- NA_real_
data$HProbsScale[!is.na(data$ProbScale) & data$ProbScale == 0] <- 0
data$HProbsScale[!is.na(data$ProbScale) &
data$ProbScale >= 1 & data$ProbScale <= 2] <- 1
data$HProbsScale[!is.na(data$ProbScale) &
data$ProbScale >= 3 & data$ProbScale <= 57] <- 2
attr(data$HProbsScale, "label") <- "Accommodation problem categories"
attr(data$HProbsScale, "labels") <- c(
"None" = 0,
"One or two minor" = 1,
"A few or more" = 2
)
# ---------------------------------------------------------------
# 6. Any accommodation problem
# Missing only if all 20 indicators are missing
# ---------------------------------------------------------------
rowmax_na <- function(df) {
out <- apply(df, 1, function(x) {
if (all(is.na(x))) NA_real_ else max(x, na.rm = TRUE)
})
as.numeric(out)
}
data$HProbs <- rowmax_na(data[paste0("Accomm", 1:20)])
attr(data$HProbs, "label") <- "Any accommodation problem"
attr(data$HProbs, "labels") <- c(
"No accommodation problems" = 0,
"Any problems" = 1
)
# ---------------------------------------------------------------
# 7. Accommodation problem categories
# ---------------------------------------------------------------
data$PDampMould <- rowmax_na(
data[c(paste0("Accomm", 1:8), "Accomm12")]
)
data$PStruct <- rowmax_na(
data[c(paste0("Accomm", 9:11), paste0("Accomm", 13:16))]
)
data$PNoise <- data$Accomm18
data$PPest <- data$Accomm17
data$PHeat <- data$Accomm19
attr(data$PDampMould, "label") <- "Moisture, damp or mould"
attr(data$PStruct, "label") <- "Structural"
attr(data$PNoise, "label") <- "Noise"
attr(data$PPest, "label") <- "Pests"
attr(data$PHeat, "label") <- "Heating"
problem_labels <- c("No problem" = 0, "Problem" = 1)
attr(data$PDampMould, "labels") <- problem_labels
attr(data$PStruct, "labels") <- problem_labels
attr(data$PNoise, "labels") <- problem_labels
attr(data$PPest, "labels") <- problem_labels
attr(data$PHeat, "labels") <- c(
"No heating difficulties" = 0,
"Any heating difficulties" = 1
)
# ---------------------------------------------------------------
# Checks
# ---------------------------------------------------------------
summary(data[c("AccommProbs1", "ProbScale")])
table(data$HProbsScale, useNA = "ifany")
table(data$HProbs, useNA = "ifany")
table(data$PDampMould, useNA = "ifany")
table(data$PStruct, useNA = "ifany")
table(data$PNoise, useNA = "ifany")
table(data$PPest, useNA = "ifany")
table(data$PHeat, useNA = "ifany")
*---------------------------------------------------------------*
* 1. Dichotomous accommodation problems
*
* 0 = No problem
* 1 = Problem
*---------------------------------------------------------------*
forvalues i = 1/20 {
recode SCQAccom`i' ///
(min/0 = .) ///
(1 = 0) ///
(2/max = 1), ///
gen(Accomm`i')
}
* Some routing/error codes indicate presence of the problem
* according to the original scoring code
replace Accomm1 = 1 if SCQAccom1 == -823
replace Accomm3 = 1 if SCQAccom3 == -834
replace Accomm5 = 1 if SCQAccom5 == -834
replace Accomm9 = 1 if ///
inlist(SCQAccom9, -834, -823)
replace Accomm10 = 1 if SCQAccom10 == -823
replace Accomm15 = 1 if SCQAccom15 == -834
replace Accomm16 = 1 if SCQAccom16 == -834
replace Accomm18 = 1 if SCQAccom18 == -823
capture label drop Accomm01
label define Accomm01 ///
0 "No problem" ///
1 "Problem"
label values Accomm1-Accomm20 Accomm01
*---------------------------------------------------------------*
* 2. Number of accommodation problems
*
* Original code uses Items 1-19
*---------------------------------------------------------------*
egen AccommProbs1 = rowtotal(Accomm1-Accomm19)
egen AccommProbs_missing = rowmiss(Accomm1-Accomm19)
replace AccommProbs1 = . if AccommProbs_missing > 0
label variable AccommProbs1 ///
"Number of accommodation problems"
drop AccommProbs_missing
*---------------------------------------------------------------*
* 3. Accommodation problem severity items
*
* Original:
* 1 -> 0
* 2 -> 1
* 3 -> 2
* 4 -> 3
*
* Range for each item: 0-3
*---------------------------------------------------------------*
forvalues i = 1/20 {
recode SCQAccom`i' ///
(min/0 = .) ///
(1 = 0) ///
(2 = 1) ///
(3 = 2) ///
(4 = 3) ///
(else = .), ///
gen(AccommP`i')
}
*---------------------------------------------------------------*
* 4. Overall accommodation problem severity scale
*
* Original scale uses Items 1-19
* Range: 0-57
*---------------------------------------------------------------*
egen ProbScale = rowtotal(AccommP1-AccommP19)
egen ProbScale_missing = rowmiss(AccommP1-AccommP19)
replace ProbScale = . if ProbScale_missing > 0
label variable ProbScale ///
"Accommodation problems severity scale (0-57)"
drop ProbScale_missing
*---------------------------------------------------------------*
* 5. Categorical accommodation problem scale
*---------------------------------------------------------------*
gen HProbsScale = .
replace HProbsScale = 0 if ProbScale == 0
replace HProbsScale = 1 if inrange(ProbScale, 1, 2)
replace HProbsScale = 2 if inrange(ProbScale, 3, 57)
capture label drop HProbsScale
label define HProbsScale ///
0 "None" ///
1 "One or two minor" ///
2 "A few or more"
label values HProbsScale HProbsScale
label variable HProbsScale ///
"Accommodation problem categories"
*---------------------------------------------------------------*
* 6. Any accommodation problem
*
* 0 if at least one valid item is 0 and none are 1
* 1 if any accommodation problem is present
* Missing if all 20 indicators are missing
*---------------------------------------------------------------*
egen HProbs = rowmax(Accomm1-Accomm20)
capture label drop AccommAny
label define AccommAny ///
0 "No accommodation problems" ///
1 "Any problems"
label values HProbs AccommAny
label variable HProbs ///
"Any accommodation problem"
*---------------------------------------------------------------*
* 7. Accommodation problem categories
*---------------------------------------------------------------*
* Moisture, damp or mould:
* Items 1-8 and 12
egen PDampMould = rowmax( ///
Accomm1-Accomm8 ///
Accomm12 ///
)
* Structural problems:
* Items 9-11 and 13-16
egen PStruct = rowmax( ///
Accomm9-Accomm11 ///
Accomm13-Accomm16 ///
)
* Individual problem domains
gen PNoise = Accomm18
gen PPest = Accomm17
gen PHeat = Accomm19
*---------------------------------------------------------------*
* Labels
*---------------------------------------------------------------*
label variable PDampMould ///
"Moisture, damp or mould"
label variable PStruct ///
"Structural"
label variable PNoise ///
"Noise"
label variable PPest ///
"Pests"
label variable PHeat ///
"Heating"
capture label drop ProbsLab1
label define ProbsLab1 ///
0 "No problem" ///
1 "Problem"
label values ///
PDampMould ///
PStruct ///
PNoise ///
PPest ///
ProbsLab1
capture label drop PHeatLab
label define PHeatLab ///
0 "No heating difficulties" ///
1 "Any heating difficulties"
label values PHeat PHeatLab
*---------------------------------------------------------------*
* Checks
*---------------------------------------------------------------*
summarize AccommProbs1 ProbScale
tab HProbsScale, missing
tab HProbs, missing
tab PDampMould, missing
tab PStruct, missing
tab PNoise, missing
tab PPest, missing
tab PHeat, missing