Short Form of the Informant Questionnaire on Cognitive Decline in the Elderly (Short IQCODE)
Description: Screening tool for dementia - only asked in Proxy interviews.
Number of Items: 16
| Item | Question Wording | TILDA Variable |
|---|---|---|
| Compared with 10 years ago how is this person at: | ||
| 1 | Remembering things about family and friends e.g. occupations, birthdays, addresses. | ph148 |
| 2 | Remembering things that have happened recently. | ph149 |
| 3 | Recalling conversations a few days later. | ph150 |
| 4 | Remembering his/her address and telephone number. | ph151 |
| 5 | Remembering what day and month it is. | ph152 |
| 6 | Remembering where things are usually kept. | ph153 |
| 7 | Remembering where to find things which have been put in a different place from usual. | ph154 |
| 8 | Knowing how to work familiar machines around the house. | ph155 |
| 9 | Learning to use a new gadget or machine around the house. | ph156 |
| 10 | Learning new things in general. | ph157 |
| 11 | Following a story in a book or on TV. | ph158 |
| 12 | Making decisions on everyday matters. | ph159 |
| 13 | Handling money for shopping. | ph160 |
| 14 | Handling financial matters e.g. the pension, dealing with the bank. | ph161 |
| 15 | Handling other everyday arithmetic problems e.g. knowing how much food to buy, knowing how long between visits from family or friends. | ph162 |
| 16 | Using his/her intelligence to understand what's going on and to reason things through. | ph163 |
Scoring Method:
6-point Likert scale
1 = Much Improved
2 = A bit Improved
3 = Not much changed
4 = A bit worse
5 = Much worse
6 = Does not apply
Scores are added for each question with a response of 1-5 and divided by the total number of items by 16.
Higher scores represent greater perceived cognitive decline
****
Citation:
- Jorm, A. F., & Jacomb, P. A. (1989). The Informant Questionnaire on Cognitive Decline in the Elderly (IQCODE): socio-demographic correlates, reliability, validity and some norms. Psychological medicine, 19(4), 1015-1022.
Example TILDA Papers:
- Feeney, J., Monaghan, A., McLoughlin, S., De Looze, C., Oto, G., Lawlor, B., Weir, D., Kenny, R.A. and McGarrigle, C. A. (2025). Cohort Profile Update: The Harmonised Cognitive Assessment Protocol Sub-study of The Irish Longitudinal Study on Ageing (TILDA-HCAP). International Journal of Epidemiology, 54(1): 1-8. https://doi.org/10.1093/ije/dyaf008
Code
egen noresponse = anycount(ph148-ph163), values(6)
egen responses = anycount (ph148-ph163), values (1 2 3 4 5 6)
recode ph148 (-1=.)
recode ph149 (-1=.)
recode ph150 (-1=.)
recode ph151 (-1=.)
recode ph152 (-1=.)
recode ph153 (-1=.)
recode ph154 (-1=.)
recode ph155 (-1=.)
recode ph156 (-1=.)
recode ph157 (-1=.)
recode ph158 (-1=.)
recode ph159 (-1=.)
recode ph160 (-1=.)
recode ph161 (-1=.)
recode ph162 (-1=.)
recode ph163 (-1=.)
recode ph148 (6=.) (98/99=.), gen (IQCODE1)
recode ph149 (6=.) (98/99=.), gen (IQCODE2)
recode ph150 (6=.) (98/99=.), gen (IQCODE3)
recode ph151 (6=.) (98/99=.), gen (IQCODE4)
recode ph152 (6=.) (98/99=.), gen (IQCODE5)
recode ph153 (6=.) (98/99=.), gen (IQCODE6)
recode ph154 (6=.) (98/99=.), gen (IQCODE7)
recode ph155 (6=.) (98/99=.), gen (IQCODE8)
recode ph156 (6=.) (98/99=.), gen (IQCODE9)
recode ph157 (6=.) (98/99=.), gen (IQCODE10)
recode ph158 (6=.) (98/99=.), gen (IQCODE11)
recode ph159 (6=.) (98/99=.), gen (IQCODE12)
recode ph160 (6=.) (98/99=.), gen (IQCODE13)
recode ph161 (6=.) (98/99=.), gen (IQCODE14)
recode ph162 (6=.) (98/99=.), gen (IQCODE15)
recode ph163 (6=.) (98/99=.), gen (IQCODE16)
egen IQCODEtotal=rowtotal(IQCODE1 - IQCODE16) if hh005!=1
gen IQCODEscore = IQCODEtotal/responses if noresponse<=2&hh005!=1ph_items <- paste0("ph", 148:163)
# Counts are computed before the raw -1 recode in the Stata source.
data$noresponse <- rowSums(sapply(ph_items, function(v) data[[v]] == 6), na.rm = TRUE)
data$responses <- rowSums(
sapply(ph_items, function(v) data[[v]] %in% c(1,2,3,4,5,6)),
na.rm = TRUE
)
# Recode raw -1 to missing.
for (v in ph_items) {
data[[v]][!is.na(data[[v]]) & data[[v]] == -1] <- NA_real_
}
# Create IQCODE1-IQCODE16, additionally recoding 6 and 98-99 to missing.
iq_items <- paste0("IQCODE", 1:16)
for (i in seq_along(ph_items)) {
data[[iq_items[i]]] <- data[[ph_items[i]]]
x <- data[[iq_items[i]]]
x[!is.na(x) & (x == 6 | (x >= 98 & x <= 99))] <- NA_real_
data[[iq_items[i]]] <- x
}
# Stata's hh005 != 1 is true for Stata system missing; include R NA here
# to preserve that comparison behaviour as closely as possible.
eligible <- is.na(data$hh005) | data$hh005 != 1
data$IQCODEtotal <- NA_real_
tot <- rowSums(data[iq_items], na.rm = TRUE)
data$IQCODEtotal[eligible] <- tot[eligible]
data$IQCODEscore <- NA_real_
score_ok <- eligible & !is.na(data$noresponse) & data$noresponse <= 2 &
!is.na(data$responses) & data$responses != 0
data$IQCODEscore[score_ok] <-
data$IQCODEtotal[score_ok] / data$responses[score_ok]COUNT noresponse = ph148 ph149 ph150 ph151 ph152 ph153 ph154 ph155 ph156 ph157 ph158 ph159 ph160 ph161 ph162 ph163 (6).
COUNT responses = ph148 ph149 ph150 ph151 ph152 ph153 ph154 ph155 ph156 ph157 ph158 ph159 ph160 ph161 ph162 ph163 (1,2,3,4,5,6).
RECODE ph148 ph149 ph150 ph151 ph152 ph153 ph154 ph155 ph156 ph157 ph158 ph159 ph160 ph161 ph162 ph163 (-1=SYSMIS).
DO REPEAT src = ph148 ph149 ph150 ph151 ph152 ph153 ph154 ph155 ph156 ph157 ph158 ph159 ph160 ph161 ph162 ph163
/dst = IQCODE1 IQCODE2 IQCODE3 IQCODE4 IQCODE5 IQCODE6 IQCODE7 IQCODE8 IQCODE9 IQCODE10 IQCODE11 IQCODE12 IQCODE13 IQCODE14 IQCODE15 IQCODE16.
COMPUTE dst = src.
RECODE dst (6=SYSMIS) (98 THRU 99=SYSMIS).
END REPEAT.
COMPUTE IQCODEtotal = $SYSMIS.
IF (MISSING(hh005) OR hh005 <> 1)
IQCODEtotal = SUM(IQCODE1, IQCODE2, IQCODE3, IQCODE4, IQCODE5, IQCODE6, IQCODE7, IQCODE8, IQCODE9, IQCODE10, IQCODE11, IQCODE12, IQCODE13, IQCODE14, IQCODE15, IQCODE16).
IF ((MISSING(hh005) OR hh005 <> 1) AND
NMISS(IQCODE1, IQCODE2, IQCODE3, IQCODE4, IQCODE5, IQCODE6, IQCODE7, IQCODE8, IQCODE9, IQCODE10, IQCODE11, IQCODE12, IQCODE13, IQCODE14, IQCODE15, IQCODE16) = 16)
IQCODEtotal = 0.
COMPUTE IQCODEscore = $SYSMIS.
IF (noresponse <= 2 AND (MISSING(hh005) OR hh005 <> 1) AND responses <> 0)
IQCODEscore = IQCODEtotal / responses.
EXECUTE.