TILDA Resources
  • Questionnaire Harmonisation
  • Questionnaire Scales
  • Scale Harmonisation
  • Health Assessment
  • Biomarkers
  • Back to TILDA Homepage
  1. IPAQ
  • Questionnaire Scales
  • ADL
  • AMT
  • APQ-17
  • APQ-32
  • CAGE
  • CASP-12
  • CASP-19
  • CESD-20
  • CESD-8
  • CIDI-SF-Anxiety
  • CIDI-SF-Depression
  • CISS-21
  • Creative Lives
  • Everyday Ageism
  • EQ-5D-5L
  • FES-I
  • Flourishing
  • GAD-7
  • Gratitude
  • HADS-A
  • Housing Conditions
  • IADL
  • IPAQ
  • IPAQ-E
  • IQCODE
  • MHC-SF
  • MESA
  • MMSE
  • MCSI
  • MCTQ
  • Neighbourhood Cohesion
  • NEO-PI
  • PSS
  • PWSQ
  • PCL-6
  • PIL
  • Relationship Quality
  • SWLS
  • Social Activities
  • STAI
  • UCLA

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

  • Stata
  • R
  • SPSS
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 FRexercise3

Download Stata .do file

ipaq_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"))

Download R file

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.

Download SPSS .sps file

IADL
IPAQ-E

Copyright 2026, The Irish Longitudinal Study on Ageing (TILDA)

 

TILDA, Department of Health and Health Research Board