International Physical Activity Questionnaire (IPAQ)
Description: Assesses the types of intensity of physical activity and sitting time that people do as part of their daily lives.
Number of Items: 7
| Item | Question Wording | TILDA Variable |
|---|---|---|
| 1 | Over the last 7 days how many days did you do vigorous physical activities like heavy lifting, digging, aerobics, or fast bicycling? | bh101 |
| 2 | How much time did you usually spend doing vigorous physical activities on one of those days? | bh102 |
| 3 | During the last 7 days, on how many days did you do moderate physical activities like carrying light loads, bicycling at a regular pace, or doubles tennis? Do not include walking. | bh103 |
| 4 | How much time did you usually spend doing moderate physical activities on one of those days? | bh104 |
| 5 | During the last 7 days, on how many days did you walk for at least 10 minutes at a time? | bh105 |
| 6 | How much time did you usually spend walking on one of those days? | bh106 |
| 7 | During the last 7 days, how much time (per day) did you spend sitting (at work/home/while doing course work/during leisure time) on a weekday? | bh107 |
Scoring Method:
Participants report the number of days per week and the average duration per day spent in:
Vigorous physical activity
Moderate physical activity
Walking
Weekly minutes of activity were calculated by multiplying the reported duration (minutes/day) by the number of days performed per week.
Metabolic Equivalent Task (MET)-minutes per week are calculated for each activity type using standard IPAQ weighting factors:
Walking = 3.3 × minutes walked × walking days
Moderate activity = 4.0 × moderate activity minutes × moderate activity days
Vigorous activity = 8.0 × vigorous activity minutes × vigorous activity days
A total physical activity score (MET-minutes/week) was generated by summing walking, moderate, and vigorous activity MET-minutes.
Energy expenditure (kcal/week) can be estimated as:
$\text{kcal/week} = \frac{\text{MET-minutes/week} \times \text{body weight (kg)}}{60}$
Physical Activity Classification:
Low Physical Activity
- Did not meet criteria for Moderate or High physical activity.
Moderate Physical Activity
Met at least one of the following criteria:
Vigorous activity on ≥3 days for >20 minutes/day; or
Walking and/or moderate activity on ≥5 days for >30 minutes/day; or
Any combination of activities on ≥5 days accumulating >600 MET-minutes/week.
High Physical Activity
Met at least one of the following criteria:
Vigorous activity on ≥3 days accumulating ≥1500 MET-minutes/week; or
Any combination of walking, moderate and vigorous activity on ≥7 days accumulating >3000 MET-minutes/week.
Citation:
- Hurtig-Wennlöf, A., Hagströmer, M., & Olsson, L. A. (2010). The International Physical Activity Questionnaire modified for the elderly: aspects of validity and feasibility. Public Health Nutrition, 13(11), 1847–1854. doi:10.1017/S1368980010000157
Example TILDA Papers:
Donoghue, O., O'Connell, M. and Kenny, R.A. (2016). Walking to Wellbeing: Physical Activity, Social Participation and Psychological Health in Irish Adults Aged 50 Years and Older. Dublin: The Irish Longitudinal Study on Ageing (TILDA), Trinity College Dublin. https://doi.org/10.38018/TildaRe.2016-00
Herring, M. P., Rasmussen, C. L., McDowell, C. P., Gordon, B. R., Kenny, R. A., & Laird, E. (2024). Physical activity dose for generalized anxiety disorder & worry: Results from the Irish longitudinal study on ageing. Psychiatry research, 332: 1-7. https://doi.org/10.1016/j.psychres.2024.115723
McDowell, C. P., Wilson, K. E., Monroe, D. C., McCrory, C., Kenny, R. A., & Herring, M. P. (2020). Physical activity partially mediates associations between "Big" personality traits and incident generalized anxiety disorder: Findings from the Irish longitudinal study on ageing. Journal of affective disorders, 277, 46–52. https://doi.org/10.1016/j.jad.2020.07.124
Wolf, S., Meinzinger, E., Frei, A. K., Seiffer, B., Löchner, J., Takano, K., Scarlett, S., Kenny, R. A., Derhon, V., Guimarães, M. E. A., & Schuch, F. B. (2024). Is higher physical activity behaviour associated with less subsequent use of any psychotropic medication: Results of a random-effects meta-analysis of prospective cohort studies. Mental Health and Physical Activity, 27, 1-7. https://doi.org/10.1016/j.mhpa.2024.100645
Code
tab1 bh101 bh102* bh103 bh104* bh105 bh106*
foreach varname of varlist bh101 bh102* bh103 bh104* bh105 bh106* {
replace `varname' = . if inlist(`varname',-98,-99)
replace `varname' = 0 if `varname' ==-1
}
**Change from Wave 1/2. E.g. bh102 = hours, bh102a = minutes. In Wave 3 onwards, bh102h = hours, bh102m == minutes. Adjust code as needed.
*sets those routed around the how much time follow ons to the how many days questions to 0, not missing -
*otherwise the sums end up dropping most of the sample (although you could do them differently)
** to finish**
capture drop mins*
capture drop *met
capture drop W2FRipaqmetminutes
gen minswalking = 60*bh106h + bh106m
gen minsmoderate = 60*bh104h + bh104m
gen minsvigorous = 60*bh102h + bh102m
replace minswalking = . if bh106m == . | bh106h == . | bh105 == .
replace minsmoderate = . if bh104m == . | bh104h == . | bh103 == .
replace minsvigorous = . if bh102m == . | bh102h == . | bh101 == .
tab1 minsvigorous minsmoderate minsvigorous
replace minswalking = 180 if minswalking > 180 & minswalking <.
replace minsmoderate = 180 if minsmoderate > 180 & minsmoderate <.
replace minsvigorous = 180 if minsvigorous > 180 & minsvigorous <.
gen walkingmet = 3.3 * ( minswalking ) * bh105
gen moderatemet = 4.0 * ( minsmoderate ) * bh103
gen vigorousmet = 8.0 * ( minsvigorous ) * bh101
gen FRipaqmetminutes = walkingmet+moderatemet+vigorousmet
label variable FRipaqmetminutes ///
"IPAQ Met minutes of physical activity"
notes FRipaqmetminutes : Walking MET-minutes/week = 3.3 * walking minutes * walking days
notes FRipaqmetminutes : Moderate MET-minutes/week = 4.0 * moderate-intensity activity minutes * moderate days
notes FRipaqmetminutes : Vigorous MET-minutes/week = 8.0 * vigorous-intensity activity minutes * vigorous-intensity days
notes FRipaqmetminutes : Total physical activity MET-minutes/week = sum of Walking + Moderate + Vigorous METminutes/week scores.
tab FRipaqmetminutes
tab SR_Weight_Kilogrammes
recode SR_Weight_Kilogrammes (0/30=.)
gen FRipaqkcal = FRipaqmetminutes*SR_Weight_Kilogrammes/60
label variable FRipaqkcal ///
"IPAQ kcal equals IPAQ metminutes multiplied by self report capi weight (kg) divided by 60 kg"
*Exercise summary variable
capture drop FRexercise3
gen FRexercise3 = 0
/* 3 or more vigorous 20mins per day */
replace FRexercise3 = 1 if ((minsvigorous) > 20) & (minsvigorous!=.) & bh101>3
/* 30 minutes or more walking or moderate exercise for at least five days */
replace FRexercise3 = 1 if ((minswalking) + (minsmoderate))>30 & ((minswalking) + (minsmoderate)) !=. & (bh103+bh105)>=5
/* 5 or more days of any activity, total exercise >600 met minutes per week. */
replace FRexercise3 = 1 if ((bh105+bh103+bh101)>=5) & FRipaqmetminutes > 600
/* 3 or more days of vigorous activity totalling 1500 met-minutes or more */
replace FRexercise3 = 2 if bh101>3 & FRipaqmetminutes >=1500
replace FRexercise3 = 2 if ((bh101+bh103+bh105)>=7) & FRipaqmetminutes > 3000
replace FRexercise3 = . if FRipaqmetminutes == .
label variable FRexercise3 "Physical Activity"
label define FRexercise3 0 "Low" 1 "Moderate" 2 "High", modify
label values FRexercise3 FRexercise3
notes FRexercise3 : Exercise in three groups reported according the IPAQ (short form) scoring protocol.
tab FRexercise3ipaq_raw <- unique(c(
"bh101",
grep("^bh102", names(data), value = TRUE),
"bh103",
grep("^bh104", names(data), value = TRUE),
"bh105",
grep("^bh106", names(data), value = TRUE)
))
ipaq_raw <- ipaq_raw[ipaq_raw %in% names(data)]
for (v in ipaq_raw) {
data[[v]][data[[v]] %in% c(-98, -99)] <- NA_real_
data[[v]][!is.na(data[[v]]) & data[[v]] == -1] <- 0
}
# Wave 3+ naming used by the source.
data$minswalking <- 60 * data$bh106h + data$bh106m
data$minsmoderate <- 60 * data$bh104h + data$bh104m
data$minsvigorous <- 60 * data$bh102h + data$bh102m
data$minswalking[
is.na(data$bh106m) | is.na(data$bh106h) | is.na(data$bh105)
] <- NA_real_
data$minsmoderate[
is.na(data$bh104m) | is.na(data$bh104h) | is.na(data$bh103)
] <- NA_real_
data$minsvigorous[
is.na(data$bh102m) | is.na(data$bh102h) | is.na(data$bh101)
] <- NA_real_
data$minswalking[!is.na(data$minswalking) & data$minswalking > 180] <- 180
data$minsmoderate[!is.na(data$minsmoderate) & data$minsmoderate > 180] <- 180
data$minsvigorous[!is.na(data$minsvigorous) & data$minsvigorous > 180] <- 180
data$walkingmet <- 3.3 * data$minswalking * data$bh105
data$moderatemet <- 4.0 * data$minsmoderate * data$bh103
data$vigorousmet <- 8.0 * data$minsvigorous * data$bh101
# Ordinary addition: any missing activity component makes the total missing.
data$FRipaqmetminutes <-
data$walkingmet + data$moderatemet + data$vigorousmet
attr(data$FRipaqmetminutes, "label") <-
"IPAQ Met minutes of physical activity"
attr(data$FRipaqmetminutes, "note") <- paste(
"Walking MET-minutes/week = 3.3 * walking minutes * walking days;",
"Moderate MET-minutes/week = 4.0 * moderate-intensity activity minutes * moderate days;",
"Vigorous MET-minutes/week = 8.0 * vigorous-intensity activity minutes * vigorous-intensity days;",
"Total physical activity MET-minutes/week = sum of Walking + Moderate + Vigorous METminutes/week scores."
)
# Weight values 0-30 are set to missing in the source.
data$SR_Weight_Kilogrammes[
!is.na(data$SR_Weight_Kilogrammes) &
data$SR_Weight_Kilogrammes >= 0 &
data$SR_Weight_Kilogrammes <= 30
] <- NA_real_
data$FRipaqkcal <-
data$FRipaqmetminutes * data$SR_Weight_Kilogrammes / 60
attr(data$FRipaqkcal, "label") <-
"IPAQ kcal equals IPAQ metminutes multiplied by self report capi weight (kg) divided by 60 kg"
# Exercise summary variable.
data$FRexercise3 <- 0
cond <- !is.na(data$minsvigorous) & data$minsvigorous > 20 &
!is.na(data$bh101) & data$bh101 > 3
data$FRexercise3[cond] <- 1
sum_walk_mod <- data$minswalking + data$minsmoderate
sum_days_wm <- data$bh103 + data$bh105
cond <- !is.na(sum_walk_mod) & sum_walk_mod > 30 &
!is.na(sum_days_wm) & sum_days_wm >= 5
data$FRexercise3[cond] <- 1
sum_days_all <- data$bh105 + data$bh103 + data$bh101
cond <- !is.na(sum_days_all) & sum_days_all >= 5 &
!is.na(data$FRipaqmetminutes) & data$FRipaqmetminutes > 600
data$FRexercise3[cond] <- 1
cond <- !is.na(data$bh101) & data$bh101 > 3 &
!is.na(data$FRipaqmetminutes) & data$FRipaqmetminutes >= 1500
data$FRexercise3[cond] <- 2
cond <- !is.na(sum_days_all) & sum_days_all >= 7 &
!is.na(data$FRipaqmetminutes) & data$FRipaqmetminutes > 3000
data$FRexercise3[cond] <- 2
data$FRexercise3[is.na(data$FRipaqmetminutes)] <- NA_real_
attr(data$FRexercise3, "label") <- "Physical Activity"
attr(data$FRexercise3, "labels") <- c("Low" = 0, "Moderate" = 1, "High" = 2)
attr(data$FRexercise3, "note") <-
"Exercise in three groups reported according the IPAQ (short form) scoring protocol."
print(table(data$FRexercise3, useNA = "ifany"))RECODE bh101 bh102h bh102m bh103 bh104h bh104m bh105 bh106h bh106m
(-98=SYSMIS) (-99=SYSMIS) (-1=0).
COMPUTE minswalking = 60 * bh106h + bh106m.
COMPUTE minsmoderate = 60 * bh104h + bh104m.
COMPUTE minsvigorous = 60 * bh102h + bh102m.
IF (MISSING(bh106m) OR MISSING(bh106h) OR MISSING(bh105))
minswalking = $SYSMIS.
IF (MISSING(bh104m) OR MISSING(bh104h) OR MISSING(bh103))
minsmoderate = $SYSMIS.
IF (MISSING(bh102m) OR MISSING(bh102h) OR MISSING(bh101))
minsvigorous = $SYSMIS.
IF (minswalking > 180) minswalking = 180.
IF (minsmoderate > 180) minsmoderate = 180.
IF (minsvigorous > 180) minsvigorous = 180.
COMPUTE walkingmet = 3.3 * minswalking * bh105.
COMPUTE moderatemet = 4.0 * minsmoderate * bh103.
COMPUTE vigorousmet = 8.0 * minsvigorous * bh101.
COMPUTE FRipaqmetminutes = walkingmet + moderatemet + vigorousmet.
VARIABLE LABELS FRipaqmetminutes "IPAQ Met minutes of physical activity".
* Notes from the Stata source:
* Walking MET-minutes/week = 3.3 * walking minutes * walking days.
* Moderate MET-minutes/week = 4.0 * moderate-intensity activity minutes * moderate days.
* Vigorous MET-minutes/week = 8.0 * vigorous-intensity activity minutes * vigorous-intensity days.
* Total = Walking + Moderate + Vigorous MET-minutes/week.
RECODE SR_Weight_Kilogrammes (0 THRU 30=SYSMIS).
COMPUTE FRipaqkcal = FRipaqmetminutes * SR_Weight_Kilogrammes / 60.
VARIABLE LABELS FRipaqkcal
"IPAQ kcal equals IPAQ metminutes multiplied by self report capi weight (kg) divided by 60 kg".
COMPUTE FRexercise3 = 0.
IF (minsvigorous > 20 AND bh101 > 3) FRexercise3 = 1.
IF ((minswalking + minsmoderate) > 30 AND
(bh103 + bh105) >= 5) FRexercise3 = 1.
IF ((bh105 + bh103 + bh101) >= 5 AND FRipaqmetminutes > 600)
FRexercise3 = 1.
IF (bh101 > 3 AND FRipaqmetminutes >= 1500) FRexercise3 = 2.
IF ((bh101 + bh103 + bh105) >= 7 AND FRipaqmetminutes > 3000)
FRexercise3 = 2.
IF (MISSING(FRipaqmetminutes)) FRexercise3 = $SYSMIS.
VARIABLE LABELS FRexercise3 "Physical Activity".
VALUE LABELS FRexercise3
0 "Low" 1 "Moderate" 2 "High".
* Note: Exercise in three groups reported according the IPAQ (short form)
* scoring protocol.
FREQUENCIES VARIABLES=FRexercise3 /MISSING=INCLUDE.
EXECUTE.