TILDA Resources
  • Questionnaire Harmonisation
  • Questionnaire Scales
  • Scale Harmonisation
  • Health Assessment
  • Biomarkers
  • Back to TILDA Homepage
  1. IPAQ-E
  • 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

IPAQ-E

The International Physical Activity Questionnaire Environment Module (IPAQ-E)

Measuring: Assess environmental factors for physical activity participation; Residential density - Item 1, Access to destinations - Item 2, Item 3, Item 6, Neighbourhood’s infrastructure - Item 4, Item 5, and Neighbourhood safety - Item 7.

Number of Items: 7

Item Question Wording TILDA Variable
1 What is the main type of housing in your neighbourhood? SCQIPAQE1
2 Many shops are within walking distance of my home. SCQIPAQE2
3 It is within a 10- to 15-min walk to a transit stop from my home. SCQIPAQE3
4 There are sidewalks on most of the streets in my neighbourhood. SCQIPAQE4
5 There are facilities to bicycle in or near my neighbourhood. SCQIPAQE5
6 My neighbourhood has several free or low-cost recreation facilities. SCQIPAQE6
7 The crime rate in my neighbourhood makes it unsafe to go on walks at night. SCQIPAQE7

Scoring Method:

Response options differ dependent on item. All 5-point Likert scale.

The TILDA version of the IPAQ Environmental Module includes seven core items covering four aspects of the neighbourhood environment: residential density, access to destinations, neighbourhood infrastructure, and neighbourhood safety.

Item 1.

1 = Detached single-family housing.

2 = Townhouses, row houses, apartments, or condos of 2-3 stories.

3 = Mix of single-family residences and townhouses, row houses, apartments or condos.

4 = Apartments or condos of 4-12 stories.

5 = Apartments or condos of more than 12 stories.

Items 2 – 7.

1 = Strongly Disagree.

2 = Somewhat Disagree.

3 = Somewhat Agree.

4 = Strongly Agree.

5 = Don’t Know/Not Sure.

  • There are four measures generated from this scale;

Four domain scores are generated:

  • Residential density (Item 1)

  • Access to destinations (mean of Item 2, Item 3, Item 6)

  • Neighbourhood’s infrastructure (mean of Item 4 - Item 5)

  • Neighbourhood safety (reverse scored Item 7)

  • Item 1 assesses residential density and is scored separately: detached single-family housing is coded 0, while all other housing types are coded 1, with higher values indicating greater residential density.

  • Items 2–6 are scored on a 4-point Likert scale from 1 = Strongly disagree to 4 = Strongly agree. A response of 5 = Don’t know/Not sure is treated as missing. Higher scores indicate a more favourable neighbourhood environment.

  • Item 7 assesses perceived neighbourhood safety and is negatively worded. It is reverse scored so that higher values indicate greater perceived safety.

  • The access and infrastructure domains are calculated as mean scores and therefore range from 1 to 4. The safety score also ranges from 1 to 4, with higher scores indicating a more favourable neighbourhood environment. Residential density is coded 0–1.

Citation: Oyeyemi, A.L., Adegoke, B.O., Oyeyemi, A.Y. et al. Test-retest reliability of IPAQ environmental- module in an African population. Int J Behav Nutr Phys Act 5, 38 (2008). https://doi.org/10.1186/1479-5868-5-38

Code

  • Stata
  • R
  • SPSS

*---------------------------------------------------------------*
* Recode no-response values
*---------------------------------------------------------------*

mvdecode SCQIPAQE1-SCQIPAQE7, mv(-99=.)

* Items 2-7: 5 = Don't know / Not sure
foreach var of varlist SCQIPAQE2-SCQIPAQE7 {
    replace `var' = . if `var' == 5
}


*---------------------------------------------------------------*
* Residential density
* Item 1
*---------------------------------------------------------------*

gen IPAQE_density = .

replace IPAQE_density = 0 if SCQIPAQE1 == 1
replace IPAQE_density = 1 if inrange(SCQIPAQE1, 2, 5)

label variable IPAQE_density ///
    "IPAQ-E residential density (0=detached, 1=other housing)"


*---------------------------------------------------------------*
* Access to destinations
* Items 2, 3 and 6
* Mean score range: 1-4
*---------------------------------------------------------------*

egen IPAQE_access = rowmean( ///
    SCQIPAQE2 ///
    SCQIPAQE3 ///
    SCQIPAQE6 ///
)

* Require all three items
egen IPAQE_access_missing = rowmiss( ///
    SCQIPAQE2 ///
    SCQIPAQE3 ///
    SCQIPAQE6 ///
)

replace IPAQE_access = . if IPAQE_access_missing > 0

label variable IPAQE_access ///
    "IPAQ-E access to destinations mean score (1-4)"


*---------------------------------------------------------------*
* Neighbourhood infrastructure
* Items 4 and 5
* Mean score range: 1-4
*---------------------------------------------------------------*

egen IPAQE_infrastructure = rowmean( ///
    SCQIPAQE4 ///
    SCQIPAQE5 ///
)

* Require both items
egen IPAQE_infrastructure_missing = rowmiss( ///
    SCQIPAQE4 ///
    SCQIPAQE5 ///
)

replace IPAQE_infrastructure = . ///
    if IPAQE_infrastructure_missing > 0

label variable IPAQE_infrastructure ///
    "IPAQ-E neighbourhood infrastructure mean score (1-4)"


*---------------------------------------------------------------*
* Neighbourhood safety
* Item 7 - reverse scored
*---------------------------------------------------------------*

gen IPAQE_safety = 5 - SCQIPAQE7 ///
    if inrange(SCQIPAQE7, 1, 4)

label variable IPAQE_safety ///
    "IPAQ-E neighbourhood safety score (1-4)"


*---------------------------------------------------------------*
* Checks
*---------------------------------------------------------------*

summarize ///
    IPAQE_density ///
    IPAQE_access ///
    IPAQE_infrastructure ///
    IPAQE_safety

tab IPAQE_density, missing
tab IPAQE_safety, missing


*---------------------------------------------------------------*
* Drop temporary variables
*---------------------------------------------------------------*

drop IPAQE_access_missing IPAQE_infrastructure_missing

Download Stata .do file

# ---------------------------------------------------------------
# Recode no-response values
# ---------------------------------------------------------------

ipaqe_items <- paste0("SCQIPAQE", 1:7)

for (v in ipaqe_items) {
  data[[v]][!is.na(data[[v]]) & data[[v]] == -99] <- NA_real_
}

# Items 2-7: 5 = Don't know / Not sure
for (v in paste0("SCQIPAQE", 2:7)) {
  data[[v]][!is.na(data[[v]]) & data[[v]] == 5] <- NA_real_
}


# ---------------------------------------------------------------
# Residential density
# Item 1
# ---------------------------------------------------------------

data$IPAQE_density <- NA_real_

data$IPAQE_density[
  !is.na(data$SCQIPAQE1) & data$SCQIPAQE1 == 1
] <- 0

data$IPAQE_density[
  !is.na(data$SCQIPAQE1) &
  data$SCQIPAQE1 >= 2 &
  data$SCQIPAQE1 <= 5
] <- 1

attr(data$IPAQE_density, "label") <-
  "IPAQ-E residential density (0=detached, 1=other housing)"


# ---------------------------------------------------------------
# Access to destinations
# Items 2, 3 and 6
# Mean score range: 1-4
# ---------------------------------------------------------------

access_items <- c("SCQIPAQE2", "SCQIPAQE3", "SCQIPAQE6")

# Calculate row mean, then require all three items to be present
data$IPAQE_access <- rowMeans(data[access_items], na.rm = TRUE)

data$IPAQE_access_missing <- rowSums(is.na(data[access_items]))

data$IPAQE_access[
  data$IPAQE_access_missing > 0
] <- NA_real_

attr(data$IPAQE_access, "label") <-
  "IPAQ-E access to destinations mean score (1-4)"


# ---------------------------------------------------------------
# Neighbourhood infrastructure
# Items 4 and 5
# Mean score range: 1-4
# ---------------------------------------------------------------

infrastructure_items <- c("SCQIPAQE4", "SCQIPAQE5")

# Calculate row mean, then require both items to be present
data$IPAQE_infrastructure <- rowMeans(
  data[infrastructure_items],
  na.rm = TRUE
)

data$IPAQE_infrastructure_missing <- rowSums(
  is.na(data[infrastructure_items])
)

data$IPAQE_infrastructure[
  data$IPAQE_infrastructure_missing > 0
] <- NA_real_

attr(data$IPAQE_infrastructure, "label") <-
  "IPAQ-E neighbourhood infrastructure mean score (1-4)"


# ---------------------------------------------------------------
# Neighbourhood safety
# Item 7 - reverse scored
# ---------------------------------------------------------------

data$IPAQE_safety <- NA_real_

valid_safety <- !is.na(data$SCQIPAQE7) &
                data$SCQIPAQE7 >= 1 &
                data$SCQIPAQE7 <= 4

data$IPAQE_safety[valid_safety] <-
  5 - data$SCQIPAQE7[valid_safety]

attr(data$IPAQE_safety, "label") <-
  "IPAQ-E neighbourhood safety score (1-4)"


# ---------------------------------------------------------------
# Checks
# ---------------------------------------------------------------

summary(data[c(
  "IPAQE_density",
  "IPAQE_access",
  "IPAQE_infrastructure",
  "IPAQE_safety"
)])

table(data$IPAQE_density, useNA = "ifany")
table(data$IPAQE_safety, useNA = "ifany")


# ---------------------------------------------------------------
# Drop temporary variables
# ---------------------------------------------------------------

data$IPAQE_access_missing <- NULL
data$IPAQE_infrastructure_missing <- NULL

Download R file


* ---------------------------------------------------------------.
* Recode no-response values.
* ---------------------------------------------------------------.

RECODE SCQIPAQE1 TO SCQIPAQE7
  (-99 = SYSMIS).

* Items 2-7: 5 = Don't know / Not sure.
RECODE SCQIPAQE2 TO SCQIPAQE7
  (5 = SYSMIS).


* ---------------------------------------------------------------.
* Residential density.
* Item 1.
* ---------------------------------------------------------------.

COMPUTE IPAQE_density = $SYSMIS.

IF (SCQIPAQE1 = 1) IPAQE_density = 0.
IF (RANGE(SCQIPAQE1, 2, 5)) IPAQE_density = 1.

VARIABLE LABELS IPAQE_density
  "IPAQ-E residential density (0=detached, 1=other housing)".


* ---------------------------------------------------------------.
* Access to destinations.
* Items 2, 3 and 6.
* Mean score range: 1-4.
* ---------------------------------------------------------------.

COMPUTE IPAQE_access = MEAN(
  SCQIPAQE2,
  SCQIPAQE3,
  SCQIPAQE6
).

* Require all three items.
COMPUTE IPAQE_access_missing = NMISS(
  SCQIPAQE2,
  SCQIPAQE3,
  SCQIPAQE6
).

IF (IPAQE_access_missing > 0) IPAQE_access = $SYSMIS.

VARIABLE LABELS IPAQE_access
  "IPAQ-E access to destinations mean score (1-4)".


* ---------------------------------------------------------------.
* Neighbourhood infrastructure.
* Items 4 and 5.
* Mean score range: 1-4.
* ---------------------------------------------------------------.

COMPUTE IPAQE_infrastructure = MEAN(
  SCQIPAQE4,
  SCQIPAQE5
).

* Require both items.
COMPUTE IPAQE_infrastructure_missing = NMISS(
  SCQIPAQE4,
  SCQIPAQE5
).

IF (IPAQE_infrastructure_missing > 0)
  IPAQE_infrastructure = $SYSMIS.

VARIABLE LABELS IPAQE_infrastructure
  "IPAQ-E neighbourhood infrastructure mean score (1-4)".


* ---------------------------------------------------------------.
* Neighbourhood safety.
* Item 7 - reverse scored.
* ---------------------------------------------------------------.

COMPUTE IPAQE_safety = $SYSMIS.

IF (RANGE(SCQIPAQE7, 1, 4))
  IPAQE_safety = 5 - SCQIPAQE7.

VARIABLE LABELS IPAQE_safety
  "IPAQ-E neighbourhood safety score (1-4)".


* ---------------------------------------------------------------.
* Checks.
* ---------------------------------------------------------------.

DESCRIPTIVES VARIABLES=
  IPAQE_density
  IPAQE_access
  IPAQE_infrastructure
  IPAQE_safety.

FREQUENCIES VARIABLES=
  IPAQE_density
  IPAQE_safety
  /MISSING=INCLUDE.


* ---------------------------------------------------------------.
* Drop temporary variables.
* ---------------------------------------------------------------.

DELETE VARIABLES
  IPAQE_access_missing
  IPAQE_infrastructure_missing.

EXECUTE.

Download SPSS .sps file

IPAQ
IQCODE

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

 

TILDA, Department of Health and Health Research Board