Philippines 2025

L2Phl Baseline Household Survey · Sep–Oct 2025

Listening to the Philippines:
Baseline Household Survey

A nationally representative survey of Filipino households covering education, livelihoods, food security, technology, and more across 2,470 households and 10,496 members in 18 regions.

Listening to the Philippines (L2Phl) · Sep–Oct 2025

108.7M
People represented
2,470
Households surveyed
14
Survey modules
scroll to explore
Contents: 10 chapters · 14 survey modules
01People: M01 Roster, M06 Migration
Population structure

A young, growing nation, with 41% under 20

The Philippines is a young country. The largest single age cohort is 10–19 year-olds at 23 percent, followed by children under 10 at 18 percent while only 4 percent of the population is over 70. The median age is 25. A young age structure is a demographic opportunity, but it pays off only to the extent that education, jobs, and social infrastructure keep pace.

This varies across the country. Mindanao is the youngest region, with 20 percent of its population under 10, while NCR has the smallest share at 15 percent, consistent with internal migration toward urban centers.

25
MEDIAN AGE (M: 24 · F: 25)
40.6%
UNDER 20
50.6% | 49.4%
MALE | FEMALE
Age group distribution
% within each group (national / male / female)
Household composition

Modal household: a head, spouse, and children

Four in ten Filipino households (40 percent) follow the classic nuclear pattern: a head, spouse, and children. But nearly as many (39 percent) are extended families, households that include grandchildren, siblings, parents, or other relatives alongside the nuclear core. The average household has 4.3 members.

Single-parent households (a head with children but no spouse) account for 8 percent, while couples without children make up 8 percent. Just 5 percent of households are single-person.

Marital status mirrors the country's young age structure. Over half of all household members are single or unmarried. Women are more likely to be widowed than men (6 percent versus 1 percent), consistent with longer female life expectancy and the care responsibilities that often fall on older women.

Household structure type
% of households (N=2,470 · mean size 4.3)
Nuclear (Head + Spouse + Children)39.5%
Extended family38.6%
Head + Children only8.4%
Couple only8.2%
Solo5.2%
Marital status by sex
% of all members
Disability

2.5% live with disability, but 42% have no PWD ID

An estimated 2.5 percent of household members, approximately 2.7 million Filipinos, have a disability. Prevalence is higher among men (3 percent) than women (2 percent), and slightly higher in rural areas (3 percent) than in urban (2 percent).

Fifty-eight percent of persons with disabilities hold a PWD ID card, while 42 percent do not. Without an ID, access to disability benefits, PhilHealth discounts, and priority services is limited. The coverage gap is widest in Mindanao, where fewer than half of PWDs hold an ID, compared with 66 percent in NCR.

Disability by type
% of persons with disability (multiple response)
28.3%
Intellectual / Mental / Psychosocial
12.4%
Visual Disability
10.7%
Speech and Language Impairment
7.8%
Perforated eardrum
Disability prevalence by age group
% with disability within each age band
1.5%
<15
1.0%
15–17
2.5%
18–45
3.8%
46–59
5.2%
60+

Disability prevalence rises with age, from 1.5% among those under 15 to 5.2% among those 60 and older.

Migration

2% of households have someone thinking about leaving, but among them, intent is strong

2.3%
HH WITH MIGRATION INTENT
33.7%
DOMESTIC DESTINATION
66.3%
ABROAD DESTINATION

Migration intent is limited but focused. About 2 percent of households report at least one member aged 15 or older considering migration within the next year, translating to roughly 1 percent of the adult population. The main reason for past moves is employment and job relocation.

Within those households, 36 percent of individual members are the ones actively considering the move.

Among those with a stated destination, two-thirds intend to go abroad and one-third to stay within the Philippines. The United States is the top overseas destination (18 percent of abroad-bound), followed by Australia (11 percent), the United Kingdom (8 percent), South Korea (8 percent), Japan (8 percent), Saudi Arabia (5 percent), and Canada (4 percent).

HHs with migration intent by macro-region
% of households with at least one member 15+ considering
National2.3%
NCR2.7%
Luzon (excl. NCR)2.4%
Visayas1.1%
Mindanao2.9%
Migration destination: domestic vs. abroad
% of those with stated destination · source macro-region to destination countries & regions
Welfare gradient · M5 PMT Quintile

Poorer households are younger, larger, and more likely to lack a PWD ID

Q1 = lowest 20% · Q5 = highest 20% · Ridge PMT welfare ranking
% members under 20
Q1
45.6%
Q2
42.8%
Q3
42.1%
Q4
38.5%
Q5
33.7%
% considering migration (15+)
Q1
0.8%
Q2
2.2%
Q3
2.3%
Q4
3.2%
Q5
4.2%
Mean household size
Q1
4.2
Q2
4.2
Q3
4.3
Q4
4.4
Q5
4.2
% disabled without PWD ID
Q1
32.2%
Q2
51.7%
Q3
43.0%
Q4
42.8%
Q5
41.6%
Q1 LowestQ2Q3Q4Q5 Highest
Poverty lens

Q1 households have more children under 20 (46% vs 34% in Q5), while migration interest is higher among Q5 households (4.2%) than Q1 households (0.8%), so the households most able to fund a move are not the ones with the largest dependent load.

Replication do-file · M01 Roster + M06 Migration
* L2Phl CAPI Baseline — Replication
* Data: Sep-Oct 2025 | Sample: 2,470 HH, 10,496 members
* Weights: indw (individual), hhw (household)
* Run 00_setup.do first to set globals.

* Prepare quintile file
use "$out/wealth_index_all_methods.dta", clear
keep hhid welfare_m5_q
qui save "$out/_quintiles_temp.dta", replace

* Gradient helpers: weighted mean and % by M5 quintile
cap program drop wq_mean
program wq_mean
    args var wt id lbl
    forval q = 1/5 {
        qui su `var' [aw=`wt'] if welfare_m5_q == `q'
        local m`q' : di %6.2f r(mean)
    }
    di "`lbl': Q1=`m1' Q2=`m2' Q3=`m3' Q4=`m4' Q5=`m5'"
end

cap program drop wq_pct
program wq_pct
    args var wt id lbl
    forval q = 1/5 {
        qui su `var' [aw=`wt'] if welfare_m5_q == `q'
        local m`q' : di %5.1f r(mean)*100
    }
    di "`lbl': Q1=`m1'% Q2=`m2'% Q3=`m3'% Q4=`m4'% Q5=`m5'%"
end

* CH01: People — M01 Roster + M06 Migration
* Weight: indw (individual), hhw (household)
* Source: 2_L2PHL_CAPI_R00_ch01_roster.do

use "$dta/${dta_file}_${date}_M01_roster.dta", clear
merge m:1 hhid fmid using "$ado/final_weights.dta", ///
    keepusing(indw hhw popw region urban hhsize) nogen keep(match)
merge m:1 hhid using "$out/_quintiles_temp.dta", nogen keep(master match)
gen_macroreg
gen_settlement

* Population
qui count
local N = r(N)
qui distinct hhid
di "Sample: `N' individuals, " r(ndistinct) " households"
qui su indw
di "Population represented: " %12.0fc r(sum)

* Median age
qui _pctile age [pw=indw], p(50)
di "Median age: " r(r1)

* Under-20
gen byte u20 = (age < 20) if !mi(age)
qui su u20 [aw=indw]
di "Under 20: " %4.1f r(mean)*100 "%"

* Sex split
gen byte male = (gender == 1) if !mi(gender)
qui su male [aw=indw]
di "Male: " %4.1f r(mean)*100 "%  Female: " %4.1f (1-r(mean))*100 "%"

* Urban
gen byte urb = (settlement == 1) if !mi(settlement)
qui su urb [aw=indw]
di "Urban: " %4.0f r(mean)*100 "%"

* Disability
gen byte disab = (member_disability == 1)
qui su disab [aw=indw]
di "Disability: " %4.2f r(mean)*100 "%"

* PWD ID gap
gen byte nopwdid = (inci_pwdid == 2) if member_disability == 1
qui su nopwdid [aw=indw] if member_disability == 1
di "No PWD ID (among disabled): " %4.0f r(mean)*100 "%"

* Welfare gradient
wq_pct u20 indw "CH01_UNDER20" "% under 20"
wq_pct disab indw "CH01_DISABILITY" "% with disability"
wq_pct nopwdid indw "CH01_PWDID" "% disabled without PWD ID"

* HH size by quintile
preserve
    bys hhid: keep if _n == 1
    merge m:1 hhid using "$out/_hhwt_temp.dta", nogen keep(master match)
    wq_mean hhsize hhw "CH01_HHSIZE" "Mean HH size"
restore

* Migration (M06)
tempfile _roster
qui save `_roster', replace

use "$dta/${dta_file}_${date}_M06_mig.dta", clear
merge m:1 hhid fmid using "$ado/final_weights.dta", ///
    keepusing(indw hhw popw region urban hhsize) nogen keep(match)
merge m:1 hhid using "$out/_quintiles_temp.dta", nogen keep(master match)
gen_macroreg
gen_settlement

* HH migration intent
preserve
    bys hhid: keep if _n == 1
    gen byte migint = (m6 == 1)
    qui su migint [aw=hhw]
    di "HH migration intent: " %4.0f r(mean)*100 "%"
    forval r = 1/4 {
        qui su migint [aw=hhw] if macroreg == `r'
        local mr`r' : di %4.0f r(mean)*100
    }
    di "  NCR: `mr1'%  Luzon: `mr2'%  Visayas: `mr3'%  Mindanao: `mr4'%"
restore

* Individual migration intent (15+)
gen byte migind = (m7 == 1) if age >= 15
replace migind = 0 if mi(migind) & age >= 15
qui su migind [aw=indw]
di "Individual intent (15+): " %4.0f r(mean)*100 "%"

* Abroad vs domestic
gen byte abroad = (m8a != 4) if !mi(m8a) & m7 == 1
qui su abroad [aw=indw] if m7 == 1 & !mi(m8a)
di "Abroad: " %4.0f r(mean)*100 "%  Domestic: " %4.0f (1-r(mean))*100 "%"

wq_pct migind indw "CH01_MIGRATE" "% considering migration (15+)"
02M02 Education: Learning
School attendance

78% of 5–24 year-olds are in school, but only 65% continue after K-12 graduation

The K-12 system keeps students in school through senior high. Attendance is near-universal at elementary level (98 percent for ages 6–11) and stays high through junior high (96 percent for 12–15). Senior high school (ages 16–17) holds at 87 percent. The transition point comes at ages 18 to 19, where only 65 percent continue to tertiary education. By 20–24, just 30 percent remain enrolled.

Girls outperform boys at every stage beyond elementary. The gender gap widens with age: at 16 to 17, girls attend at 93 percent versus boys at 82 percent, and at 18 to 19 the gap is 71 percent versus 60 percent. Overall, girls attend at 80 percent compared to boys at 76 percent, a consistent 4 percentage-point difference.

Ninety percent of students attend public schools. Private school attendance is highest in NCR at 14 percent, and lowest in Visayas at 9 percent.

Among those not attending school, employment is the most common reason cited (4 percent of non-attenders), followed by financial constraints (2 percent), having finished schooling (2 percent), family matters (2 percent), and distance to school (less than 1 percent). Cost and household responsibilities appear more prominent than academic difficulty as reasons for non-attendance.

Attendance rate by age band and gender
% attending school · K-12 ages mapped
Reasons for not attending (ages 5–24)
% of non-attenders (5–24) · multi-select
Employment3.7%
Financial constraints2.4%
Finished schooling2.2%
Family matters1.6%
Distance to school0.2%
Educational attainment

Half of adults stopped at secondary level. Women outpace men at college.

Among adults 18 and older, 51 percent have secondary as their highest attainment. Only 13 percent have completed college, though women (16 percent) outperform men (11 percent) at that level. Less than 1 percent hold postgraduate degrees.

Parental schooling is low: 65 percent of fathers and 61 percent of mothers attained only primary education. Few children reach college (13 percent), so mobility out of primary-educated households has to clear a wide gap within a single generation.

Annual education spend per student averages ₱16,973, with urban families spending ₱18,005 versus rural ₱15,834. School fees show the biggest urban-rural gap, reflecting higher private school enrolment in cities.

Highest attainment by sex (adults 18+)
% · grouped education levels
Annual education expenditure by category
Mean PHP among spenders · top 1% of each component excluded
Meals & lodging₱9,461
School fees & tuition₱6,651
Transportation₱5,653
Textbooks & materials₱1,729
Uniforms & footwear₱1,423
Early childhood

Only 24% of children 0–4 attend daycare or kindergarten

Early childhood education attendance increases with age: only 3 percent of children aged 0–2 are enrolled, rising to 31 percent at age 3 and 69 percent at age 4. Among those attending, 66 percent are in daycare or nursery programmes, while 34 percent attend kindergarten. The main reason for non-attendance is being considered too young (26 percent of non-attenders aged 0–4).

ECD attendance by age
% attending · ages 0–4
Age 0–22.9%
Age 331.4%
Age 469.2%
Type of early education
% of attending children 0–4
Daycare / Nursery66.1%
Kindergarten33.9%
Welfare gradient · M5 PMT Quintile

Head education tracks wealth closely: 47% of Q5 heads hold a degree vs 2.7% in Q1

Q1 = lowest 20% · Q5 = highest 20% · Ridge PMT welfare ranking
% attending school (5–24)
Q1
76.0%
Q2
77.3%
Q3
78.9%
Q4
80.2%
Q5
79.5%
% in public school
Q1
95.6%
Q2
92.8%
Q3
89.6%
Q4
86.9%
Q5
83.3%
Mean annual ed expense (₱)
Q1
₱13,607
Q2
₱13,949
Q3
₱15,557
Q4
₱16,688
Q5
₱21,605
% HH heads with tertiary ed
Q1
2.7%
Q2
7.4%
Q3
13.7%
Q4
23.5%
Q5
46.8%
Q1 LowestQ2Q3Q4Q5 Highest
Poverty lens

School attendance is similar across quintiles (76 to 80%), but the type of school and spending differ. In Q1, 96% attend public schools, while Q5 households spend 59% more on education. Only 2.7% of Q1 household heads hold a tertiary degree compared to 46.8% in Q5.

Replication do-file · M02 Education
* CH02: Education — M02
* Weight: indw
* Source: 2_L2PHL_CAPI_R00_ch02_edu.do

use "$dta/${dta_file}_${date}_M02_edu.dta", clear
merge m:1 hhid fmid using "$ado/final_weights.dta", ///
    keepusing(indw hhw popw region urban hhsize age gender) nogen keep(match)
merge m:1 hhid using "$out/_quintiles_temp.dta", nogen keep(master match)
gen_macroreg
gen_settlement

* Age bands
gen byte age_band = .
replace age_band = 1 if age == 5
replace age_band = 2 if inrange(age, 6, 11)
replace age_band = 3 if inrange(age, 12, 15)
replace age_band = 4 if inrange(age, 16, 17)
replace age_band = 5 if inrange(age, 18, 19)
replace age_band = 6 if inrange(age, 20, 24)
la def AGEBAND 1 "5" 2 "6-11" 3 "12-15" 4 "16-17" 5 "18-19" 6 "20-24"
la val age_band AGEBAND

* Overall attendance (5-24)
gen byte attend = (ed1 == 1) if inrange(age, 5, 24)
qui su attend [aw=indw] if inrange(age, 5, 24)
di "Overall attendance (5-24): " %4.0f r(mean)*100 "%"

forval b = 1/6 {
    qui su attend [aw=indw] if age_band == `b'
    local lbl : label AGEBAND `b'
    di "  Age `lbl': " %4.0f r(mean)*100 "%"
}

* Public school
gen byte pub = (ed2 == 1) if ed1 == 1 & !mi(ed2)
qui su pub [aw=indw]
di "Public school: " %4.0f r(mean)*100 "%"

* Education expenditure (among attending)
egen ed_exp = rowtotal(ed5a-ed5i) if ed1 == 1
replace ed_exp = . if ed_exp == 0
qui su ed_exp [aw=indw] if ed_exp > 0 & !mi(ed_exp)
di "Mean total expenditure: PHP " %10.0f r(mean)

* ECD (0-4)
gen byte ecd = (ed1 == 1) if inrange(age, 0, 4)
qui su ecd [aw=indw] if inrange(age, 0, 4)
di "ECD attendance (0-4): " %4.0f r(mean)*100 "%"

* Welfare gradient
wq_pct attend indw "CH02_ATTEND" "% attending school (5-24)"
wq_pct pub indw "CH02_PUBLIC" "% in public school"

* Cap outliers for gradient expenditure
qui su ed_exp, d
replace ed_exp = r(p99) if ed_exp > r(p99) & !mi(ed_exp)
wq_mean ed_exp indw "CH02_EXPENSE" "Mean annual ed expense (PHP)"
03M03 Employment: Working
Labour market

45% work, but most lack formal job protection.

59.0%
Male employment rate
30.2%
Female employment rate

The employment rate is 45 percent for adults 15 and older. The aggregate sits this low because the gender difference is large: men participate at 59 percent and women at 30 percent, a 29 percentage-point gap.

Employment peaks at ages 45 to 54, where 64 percent are working. Youth employment (ages 15 to 24) is 19 percent, though many in this age band are still in school. Regionally, the employment rate was highest in Luzon at 48 percent and lowest in the Visayas at 41 percent.

Employment rate by age group
% employed · adults 15+
Industry sector (top 8)
% of employed by sector
Admin / support21.3%
Agriculture17.9%
Retail trade15.0%
Construction12.1%
Food service11.4%
Transport7.0%
Other services3.1%
Public admin2.6%
· · ·
Class of worker
% among employed
Contract type among employed
% · formal vs informal
No contract71.7%
Written contract17.8%
Verbal agreement4.3%
Don't know6.1%
Job loss & search

10 percent of households had a member lose a job in the past 30 days. 3 percent of working-age adults are actively looking for a new job, and another 1 percent want more work.

Informality

About three in four workers have no contract.

Informality is the norm in the Philippine labor market. Seventy-two percent of employed workers have no formal contract. Only 18 percent hold a written contract, concentrated largely in government and formal private sector roles.

Because formal contracts are rare, access to worker protections is limited. Employers contribute to pension or social security for 28 percent of workers, ranging from 48 percent in NCR to 22 percent in Visayas. Among workers reporting on benefits, PhilHealth (34 percent) and SSS/GSIS (31 percent) are the most commonly reported where coverage exists while 60 percent receive none.

The average working week is 31 hours (median 35), with 42 percent of workers putting in fewer than 20 hours. Gig work accounts for 5 percent of employment, modest but worth tracking as platform-based work expands. (Hours: top 1% excluded.)

Welfare gradient · M5 PMT Quintile

The wealth gap in work is a gender story, poor women's employment is half that of rich women

Q1 = lowest 20% · Q5 = highest 20% · Ridge PMT welfare ranking
% employed (all)
Q1
47.6%
Q2
50.5%
Q3
52.4%
Q4
52.3%
Q5
56.8%
% employed (female)
Q1
28.7%
Q2
36.8%
Q3
39.7%
Q4
40.2%
Q5
49.4%
% with written contract
Q1
6.5%
Q2
14.8%
Q3
17.0%
Q4
23.3%
Q5
24.2%
% with no contract
Q1
83.2%
Q2
77.0%
Q3
69.9%
Q4
66.9%
Q5
65.1%
Q1 LowestQ2Q3Q4Q5 Highest
Poverty lens

Male employment is similar across quintiles (around 64%), but female employment rises from 29% in Q1 to 49% in Q5. Contract coverage also varies, with 83% having no written contract in Q1 versus 65% in Q5. Among lower-income households, work is available but often without formal protections or benefits.

Replication do-file · M03 Employment
* CH03: Employment — M03
* Weight: indw
* Source: 3_L2PHL_CAPI_R00_ch03_emp.do

use "$dta/${dta_file}_${date}_M03_emp.dta", clear
merge m:1 hhid fmid using "$ado/final_weights.dta", ///
    keepusing(indw hhw popw region urban hhsize age gender) nogen keep(match)
merge m:1 hhid using "$out/_quintiles_temp.dta", nogen keep(master match)
gen_macroreg
gen_settlement

* Employment rate (narrow: A1 only, 15+)
gen byte emp = (a1 == 1) if age >= 15
qui su emp [aw=indw] if age >= 15
di "Employment rate (15+): " %4.1f r(mean)*100 "%"

* By sex
qui su emp [aw=indw] if gender == 1 & age >= 15
di "  Male: " %4.1f r(mean)*100 "%"
qui su emp [aw=indw] if gender == 2 & age >= 15
di "  Female: " %4.1f r(mean)*100 "%"

* Informality (no contract)
gen byte nocontract = (a8 == 7) if a1 == 1 & !mi(a8)
qui su nocontract [aw=indw] if a1 == 1
di "No formal contract: " %4.1f r(mean)*100 "%"

* Hours worked
qui su a7 [aw=indw] if a1 == 1 & a7 > 0 & !mi(a7)
di "Mean hours/week: " %4.1f r(mean)

* Employment by age group
gen byte agegrp = .
replace agegrp = 1 if inrange(age, 15, 24)
replace agegrp = 2 if inrange(age, 25, 34)
replace agegrp = 3 if inrange(age, 35, 44)
replace agegrp = 4 if inrange(age, 45, 54)
replace agegrp = 5 if inrange(age, 55, 64)
replace agegrp = 6 if age >= 65 & !mi(age)
forval g = 1/6 {
    qui su emp [aw=indw] if agegrp == `g'
    di "  Age group `g': " %4.1f r(mean)*100 "%"
}

* Welfare gradient
wq_pct emp indw "CH03_EMP" "% employed (15+)"
wq_pct nocontract indw "CH03_NOCONTRACT" "% no contract (if employed)"

gen byte selfemployed = (a3 == 2) if a1 == 1 & !mi(a3)
wq_pct selfemployed indw "CH03_SELFEMP" "% self-employed"

gen byte agri = (a6 == 1) if a1 == 1 & !mi(a6)
wq_pct agri indw "CH03_AGRI" "% in agriculture"

gen byte youth_emp = emp if inrange(age, 15, 24)
wq_pct youth_emp indw "CH03_YOUTH" "% youth employed (15-24)"

gen byte female_emp = emp if gender == 2
wq_pct female_emp indw "CH03_FEMALE" "% female employed"
04M04-M05 Income & Finance: Money
Income sources

66% receive regular income, OFW remittances reach 9 percent of households

₱19,497
Mean OFW Remittance
22.8%
Domestic support
6.9%
Pension income

Sixty-six percent of individuals received regular income in the past 6 months. Mean 6-month cash earnings are ₱10,576 (median ₱7,500; top 1 percent excluded, 28 obs above ₱96,000). Wages and salaries are the main source, though non-wage income streams also contribute for many households.

Nine percent of households receive OFW remittances from family members working abroad, with a mean remittance of ₱19,497 (median ₱10,000; top 1 percent excluded). Twenty-three percent received domestic support from relatives or relief organizations. Seven percent receive pension income, reflecting the limited coverage of formal retirement systems.

Income sources
% of individuals / households receiving
Financial access indicators
% of households
Mobile money (GCash/Maya)18.0%
Took a loan (past 6 months)18.1%
Credit / debit card10.5%
Managed to save money12.9%
Savings group / paluwagan8.1%
Formal bank account4.9%
Could cover ₱300k emergency2.1%
Mobile money adoption by region
% of HHs with mobile money account
NCR25.5%
Mindanao19.2%
Luzon (excl. NCR)17.9%
Visayas11.6%
Financial inclusion

Mobile money arrived. Banks haven't.

Only 5 percent of households have transacted with a formal bank account in the past 30 days. The gap is widest in Visayas, where just 1 percent of households report any bank transaction.

Mobile money (18 percent) has grown faster than formal banking, though uptake varies by region. NCR reaches 26 percent mobile money penetration, while Visayas trails at just 12 percent.

Rural households save at slightly higher rates (14 percent) than urban (12 percent), possibly through informal mechanisms like paluwagan savings groups (8 percent nationally).

Borrowing (18 percent) outpaces saving (13 percent) by 5 percentage points. Many households are net borrowers, managing cash flow through debt rather than savings buffers. Among borrowers, 43 percent use a formal financial institution, 31 percent borrow from private individuals, and 15 percent from informal lenders (5-6). Mobile lending apps account for 6 percent.

Loan source (% of borrower HHs)
Among HHs that borrowed in past 6 months
Formal financial institution43.4%
Private individual30.5%
Informal lender (5-6)14.6%
Mobile lending app5.9%
Government programme2.2%
Loan purpose (% of borrower HHs)
Primary reason for borrowing
Business / livelihood27.1%
Food / daily needs24.7%
Housing / construction12.3%
Education11.7%
Health / medical5.6%
Government support

23% receive domestic support, government institutions lead

Twenty-three percent of households received gift, support, assistance, or relief from domestic sources in the past 6 months. Government institutions are the single largest provider (34 percent of recipients), followed by CCT/Pantawid/4Ps (18 percent) and other social programmes (17 percent).

Family members account for 16 percent of support, with AKAP (14 percent) and AICS (8 percent) providing additional government safety nets. Pension and social security programmes reach 7 percent of all households.

Government programme beneficiaries
% of HHs receiving domestic support · by programme
Government institutions34.4%
CCT / Pantawid / 4Ps18.1%
Other social programmes16.5%
Family members15.8%
AKAP14.4%
AICS7.6%
Rice/agri support3.3%
Scholarships/education2.3%
Welfare gradient · M5 PMT Quintile

Financial inclusion is near zero in the lowest quintile: 1% have a bank account, 0.2% can handle an emergency

Q1 = lowest 20% · Q5 = highest 20% · Ridge PMT welfare ranking
% with bank account
Q1
1.0%
Q2
1.7%
Q3
2.0%
Q4
4.2%
Q5
15.8%
% with mobile money
Q1
7.6%
Q2
10.9%
Q3
16.6%
Q4
19.1%
Q5
35.9%
% can save
Q1
3.4%
Q2
8.5%
Q3
9.5%
Q4
13.0%
Q5
30.0%
% emergency capacity
Q1
0.2%
Q2
0.4%
Q3
0.8%
Q4
2.5%
Q5
6.6%
Q1 LowestQ2Q3Q4Q5 Highest
Poverty lens

About 1 in 100 Q1 households has a bank account, and 1 in 500 could cover an emergency expense. Mobile money reaches 8% even in Q1, though Q5 is at 36%. The savings rate follows a similar pattern: 3.4% in Q1 versus 30% in Q5.

Replication do-file · M04 Income + M05 Finance
* CH04: Income & Finance — M04 + M05
* Weight: indw (income), hhw (finance)
* Source: 4_L2PHL_CAPI_R00_ch04_money.do

* === Income (M04) ===
use "$dta/${dta_file}_${date}_M04_income.dta", clear
merge m:1 hhid fmid using "$ado/final_weights.dta", ///
    keepusing(indw hhw popw region urban hhsize age gender) nogen keep(match)
merge m:1 hhid using "$out/_quintiles_temp.dta", nogen keep(master match)
gen_macroreg
gen_settlement

* Regular income recipients
gen byte has_income = (in1 == 1) if !mi(in1)
qui su has_income [aw=indw]
di "Regular income: " %4.0f r(mean)*100 "%"

* Mean 6-month cash earnings
qui su in3 [aw=indw] if in3 > 0 & !mi(in3)
di "Mean 6-mo cash earnings: PHP " %10.0f r(mean)

* OFW remittances
gen byte ofw = (in4 == 1) if !mi(in4)
qui su ofw [aw=indw]
di "Receives OFW remittance: " %4.1f r(mean)*100 "%"
qui su in5 [aw=indw] if in4 == 1 & in5 > 0 & !mi(in5)
di "Mean OFW amount (6-mo): PHP " %10.0f r(mean)

* Welfare gradient
wq_pct has_income indw "CH04_INCOME" "% with regular income"
wq_mean in3 indw "CH04_EARNINGS" "Mean cash earnings (PHP)"

* === Finance (M05, HH-level) ===
use "$dta/${dta_file}_${date}_M05_finance.dta", clear
merge m:1 hhid using "$out/_hhwt_temp.dta", nogen keep(match)
merge m:1 hhid using "$out/_quintiles_temp.dta", nogen keep(master match)
gen_macroreg
gen_settlement

* Bank account
gen byte bank = (f1 == 1) if !mi(f1)
qui su bank [aw=hhw]
di "Bank account: " %4.1f r(mean)*100 "%"

* Mobile money
gen byte mobile = (f2 == 1) if !mi(f2)
qui su mobile [aw=hhw]
di "Mobile money: " %4.1f r(mean)*100 "%"

* Can save
gen byte can_save = (f3 == 1) if !mi(f3)
qui su can_save [aw=hhw]
di "Can save: " %4.1f r(mean)*100 "%"

* Emergency capacity
gen byte emerg = (f6 == 1) if !mi(f6)
qui su emerg [aw=hhw]
di "Emergency fund capacity: " %4.1f r(mean)*100 "%"

* Welfare gradient
wq_pct bank hhw "CH04_BANK" "% with bank account"
wq_pct mobile hhw "CH04_MOBILE" "% use mobile money"
wq_pct can_save hhw "CH04_SAVE" "% able to save"
wq_pct emerg hhw "CH04_EMERGENCY" "% can cover emergency"
05M07 Health: Getting sick
Health access & barriers

1 in 3 needed health care, but only 77% got it. 54% have no PhilHealth.

23%
Unmet health care need
₱1,000
Median OOP cost

Thirty-four percent of household members needed health services in the past 30 days. Of those, 77 percent were able to access care, leaving a 23 percent unmet need rate. NCR fares best (88 percent access) while Visayas struggles most (63 percent).

The top reason for not accessing care is cost, with 41 percent citing inability to afford it. In the Visayas, this rises to 70 percent compared to 33 percent in NCR.

Among those who sought care, 56 percent paid cash out-of-pocket, with a median cost of ₱1,000. The distribution is skewed, because the 90th percentile reaches ₱4,300, about four times the median.

Reasons for not accessing health care
% of those who could not get care
Cannot afford41.1%
Not yet needed3.9%
Not able to avail1.0%
Afraid0.9%
No medical personnel0.7%
Healthcare facility used (past 30 days)
% of those who sought care
· · ·
Health insurance

54% have no PhilHealth. When hospitalization hits, a ₱46,834 bill arrives.

53.9%
No PhilHealth at all
46.1%
With coverage
₱46,834
Mean hospital bill
18.5%
Out-of-pocket share

The health service access gap has a financial explanation. Fifty-four percent of household members have no PhilHealth coverage, and of the 46 percent who do, most are non-paying members or dependents. Only 17 percent are contributing members.

Regionally, Visayas has 36 percent coverage compared to NCR's 53 percent. Rural and urban rates are nearly identical at 46 percent each.

When hospitalization occurs, costs can be substantial. Nine percent reported they were hospitalized in the past twelve months with an average bill of ₱46,834, with 18.5 percent of hospital costs paid directly out-of-pocket.

OOP cost distribution (₱, among cash payers)
Percentile breakdown · 56.1% paid cash out-of-pocket
₱200
P10
₱500
P25
₱1,000
MEDIAN
₱2,000
P75
₱4,300
P90

Mean ₱2,282 · Top 1% outliers (>₱80,000) excluded

PhilHealth coverage type
% of members
Not covered53.9%
Paying member15.7%
Dependent (Non-Pay)12.0%
Non-Paying member11.3%
Dependent (Paying)7.1%
PhilHealth coverage by macro-region
% covered · all categories
National46.1%
NCR52.6%
Mindanao52.7%
Luzon (excl. NCR)45.0%
Visayas36.2%
Not covered53.9%
Welfare gradient · M5 PMT Quintile

Q1 households have the lowest insurance rates but face the highest hospital bills relative to income

Q1 = lowest 20% · Q5 = highest 20% · Ridge PMT welfare ranking
% with PhilHealth
Q1
37.9%
Q2
40.9%
Q3
50.2%
Q4
47.0%
Q5
54.5%
% paid out-of-pocket
Q1
46.4%
Q2
47.8%
Q3
48.0%
Q4
59.3%
Q5
65.5%
Mean hospital bill (₱)
Q1
₱21,270
Q2
₱30,675
Q3
₱30,228
Q4
₱37,870
Q5
₱52,519
% with NO PhilHealth
Q1
62.1%
Q2
59.1%
Q3
49.8%
Q4
53.0%
Q5
45.5%
Q1 LowestQ2Q3Q4Q5 Highest
Poverty lens

PhilHealth coverage rises with wealth (38% in Q1 vs 55% in Q5), yet hospitalization rates are similar across quintiles (8 to 10%). A Q1 hospital stay averages ₱21,270, lower than Q5's ₱52,519 but a larger share of household income. About 62% of Q1 households lack health insurance.

Replication do-file · M07 Health
* CH05: Health — M07
* Weight: indw
* Source: 5_L2PHL_CAPI_R00_ch05_health.do

use "$dta/${dta_file}_${date}_M07_health.dta", clear
merge m:1 hhid fmid using "$ado/final_weights.dta", ///
    keepusing(indw hhw popw region urban hhsize age gender) nogen keep(match)
merge m:1 hhid using "$out/_quintiles_temp.dta", nogen keep(master match)
gen_macroreg
gen_settlement

* PhilHealth coverage
gen byte philhealth = (h1 == 1) if !mi(h1)
qui su philhealth [aw=indw]
di "PhilHealth coverage: " %4.1f r(mean)*100 "%"

* Needed care in past 12 months
gen byte needed = (h4 == 1) if !mi(h4)
qui su needed [aw=indw]
di "Needed care: " %4.0f r(mean)*100 "%"

* Got care (among those who needed)
gen byte gotcare = (h5 == 1) if h4 == 1 & !mi(h5)
qui su gotcare [aw=indw] if h4 == 1
di "Got care (if needed): " %4.0f r(mean)*100 "%"

* OOP payment
gen byte oop = (h8 > 0 & !mi(h8))
qui su oop [aw=indw]
di "Paid OOP: " %4.1f r(mean)*100 "%"

* Mean hospital bill
qui su h8 [aw=indw] if h8 > 0 & !mi(h8)
di "Mean hospital bill: PHP " %10.0f r(mean)

* Welfare gradient
wq_pct philhealth indw "CH05_PHILHEALTH" "% PhilHealth covered"
wq_pct oop indw "CH05_OOP" "% paid OOP"
wq_mean h8 indw "CH05_BILL" "Mean hospital bill (PHP)"

gen byte unmet = (h5 == 2) if h4 == 1
wq_pct unmet indw "CH05_UNMET" "% unmet need"

gen byte hospitalized = (h7 == 1) if !mi(h7)
wq_pct hospitalized indw "CH05_HOSPITAL" "% hospitalized"
06M08 Food & Nutrition: Eating
Food access

The wet market rules. 99.6% pay in cash.

74%
Shop at Wet Market
99.6%
Pay in cash
17.6
Min travel to food

The Philippine food system is largely local and informal. Nearly three in four households buy most of their food from wet markets, with sari-sari stores a distant second at 15 percent. Modern retail, supermarkets and large chains combined, accounts for just 7 percent.

Most transactions leave little formal trace. Eighty-four percent of shoppers receive no receipt, and nearly 100 percent pay in cash. Digital payments (GCash, Maya, QR codes) account for less than 1 percent of food purchases.

Food shopping is also a frequent, routine part of daily life. Forty-three percent shop more than once a week, and another 40 percent go once a week.

Primary food source
% of households
Wet market usage by macro-region
% of HHs buying food mainly from wet markets
National74.0%
NCR89.8%
Luzon (excl. NCR)71.4%
Visayas77.8%
Mindanao66.9%
Sugary beverages

4 in 5 drink sugar-sweetened beverages, about 7 servings a week

Eighty percent of Filipinos consume sugar-sweetened beverages (SSBs). The average consumer drinks about 7 single-serve portions per week, roughly one a day. Consumption rates are broadly similar across urban (79 percent) and rural (82 percent) settings.

At the household level, 90 percent of households have at least one SSB consumer. Regional variation is wider, with individual SSB consumption ranging from 75 percent in the National Capital Region to 86 percent in Mindanao, an 11 percentage-point gap.

The broader literature associates high SSB consumption with elevated risk of non-communicable diseases including diabetes, hypertension, dental caries, and obesity. These conditions are a growing share of the disease burden in the Philippines.

80%

consume sugar-sweetened beverages · mean 7 servings/week among consumers · varies by age

Sugary beverage consumption by age group
% consuming SSBs (individual-level, indw)
SSB consumption by age

SSB consumption is 72 percent among children under 10, increases to 85 percent among working-age adults (18 to 44), and declines to 69 percent among those 65 and above.

Child nutrition

1 in 4 children under 5 is stunted.

Among children under 5, malnutrition remains widespread: 27 percent are stunted (low height-for-age), 18 percent are underweight, and 18 percent are wasted. Boys show slightly higher stunting (30 percent) than girls (23 percent). Visayas has the highest stunting rate (32 percent) and severe stunting (18 percent).

Chronic malnutrition can affect cognitive development and long-term outcomes. With 80 percent of the population consuming SSBs by adolescence, the data show both undernutrition in early childhood and dietary risk factors that persist into adulthood.

26.6%
Under-5 stunting rate
18.2%
Underweight
Under-5 nutritional status
% of children under 5 · z-score measures

Under-5 = age < 5 years (0–59 months, UNICEF definition) · N = 739

Stunted (low height-for-age)26.6%
Underweight (low weight-for-age)18.2%
Wasted (low weight-for-height)18.0%
Severely stunted11.1%
Welfare gradient · M5 PMT Quintile

Wet market use rises with wealth, SSB consumption is similar across quintiles

Q1 = lowest 20% · Q5 = highest 20% · Ridge PMT welfare ranking
% use wet market
Q1
63.2%
Q2
71.1%
Q3
77.8%
Q4
77.4%
Q5
80.3%
% consume SSB
Q1
80.0%
Q2
80.8%
Q3
80.4%
Q4
78.1%
Q5
82.1%
Q1 LowestQ2Q3Q4Q5 Highest
Poverty lens

SSB consumption is similar across all wealth levels, ranging from 78 to 82 percent with no clear gradient. The wet market gradient is steeper, ranging from 63 percent in Q1 to 80 percent in Q5.

Replication do-file · M08 Food & SSB
* CH06: Food & Nutrition — M08
* Weight: hhw (food), indw (SSB)
* Source: 6_L2PHL_CAPI_R00_ch06_food.do

* === Food sourcing (HH-level) ===
use "$dta/${dta_file}_${date}_M08_food.dta", clear
merge m:1 hhid using "$out/_hhwt_temp.dta", nogen keep(match)
merge m:1 hhid using "$out/_quintiles_temp.dta", nogen keep(master match)
gen_macroreg
gen_settlement

* Wet market
gen byte wetmkt = (fo1 == 1) if !mi(fo1)
qui su wetmkt [aw=hhw]
di "Wet market: " %4.1f r(mean)*100 "%"
forval r = 1/4 {
    qui su wetmkt [aw=hhw] if macroreg == `r'
    di "  Region `r': " %4.1f r(mean)*100 "%"
}

* Travel time
qui su fo4 [aw=hhw] if fo4 > 0 & !mi(fo4)
di "Mean travel time: " %4.1f r(mean) " min"

* Cash payment
gen byte cash = (fo6 == 1) if !mi(fo6)
qui su cash [aw=hhw]
di "Cash payment: " %4.1f r(mean)*100 "%"

* Receipt
gen byte receipt = (fo5 == 1) if fo1 == 1 & !mi(fo5)

* Welfare gradient (food)
wq_pct wetmkt hhw "CH06_WETMARKET" "% use wet market"
wq_pct receipt hhw "CH06_RECEIPT" "% get receipt (if wet market)"

* === SSB (individual-level, SSB2 with missing recoded to No) ===
* SSB1 = HH screener (hhw, tag_hh=1): 88% of HH
* SSB2 = individual consumption (indw): 80% of individuals
use "$dta/${dta_file}_${date}_M08_ssb.dta", clear
merge 1:1 hhid fmid using "$ado/final_weights.dta", ///
    keepusing(indw hhw region urban tag_hh) nogen keep(match)
merge m:1 hhid using "$out/_quintiles_temp.dta", nogen keep(master match)
gen_macroreg
gen_settlement

* Recode missing SSB2 to No (HH where SSB1=No)
replace ssb2 = 2 if ssb2 == .
gen byte ssb_cons = (ssb2 == 1)
qui su ssb_cons [aw=indw]
di "Individual SSB consumption (SSB2, indw): " %4.1f r(mean)*100 "%"

* HH-level SSB1
gen byte ssb1f = (ssb1 == 1)
qui su ssb1f [aw=hhw] if tag_hh == 1
di "HH with SSB consumer (SSB1, hhw): " %4.1f r(mean)*100 "%"

* Mean servings (cap P99, among SSB2 consumers)
qui _pctile ssb3 [aw=indw] if ssb_cons == 1 & ssb3 > 0 & !mi(ssb3), p(99)
local p99 = r(r1)
gen ssb_srv = ssb3 if ssb_cons == 1 & ssb3 > 0 & ssb3 <= `p99'
qui su ssb_srv [aw=indw]
di "Mean servings/week: " %4.1f r(mean)

* Welfare gradient (SSB2 individual)
wq_pct ssb_cons indw "CH06_SSB_CONSUME" "% consume SSB (individual)"
wq_mean ssb_srv indw "CH06_SSB_SERVINGS" "Mean SSB servings/week"
07M09 Natural Hazards: When disasters strike
Climate & disasters

76% hit by typhoon. 50% by extreme heat. 41% by earthquake. Half got no warning.

The Philippines is among the countries most exposed to natural hazards, located along the Pacific typhoon belt and the Ring of Fire. For many Filipino households, exposure to multiple hazards is a regular occurrence.

Three in four households experienced a typhoon in the past three years. Half were affected by extreme heat events. Four in ten reported earthquake exposure. More than a third experienced flooding. These hazards often overlap and recur, affecting household welfare and assets over time, particularly among lower-income households.

Early warning coverage remains an area for improvement. Only 55 percent of affected households received advance warning before a hazard event. Among those who did, 85 percent reported understanding the message, while 15 percent did not.

76.5%
Typhoon
50.2%
Extreme heat
41.2%
Earthquake
36.1%
Drought / El Niño
31.6%
Flood / La Niña
12.2%
Pest infestation

Also: Livestock disease 9.3% · Volcanic 3.1% · Landslide 2.3% · Tsunami 0.2%

Early warning received
% of affected HHs that received advance warning
National55.0%
NCR70.6%
Luzon59.2%
Visayas49.6%
Mindanao41.3%
· · ·
Coping & preparedness

97% took preparedness measures, 87% have an emergency plan

97.4%
Took preparedness measures
86.8%
Have emergency plan
17.4%
Received assistance
83.9%
Aware of hazard maps
Hazard exposure by macro-region
% of HHs affected by any hazard (past 3 years)
National91.0%
Luzon (excl. NCR)96.9%
NCR93.1%
Visayas87.3%
Mindanao82.5%

Despite limited early warning coverage, Filipino households demonstrate strong preparedness instincts. Ninety-seven percent of affected households took some form of preparedness measures before hazard events. Eighty-seven percent report having a household emergency plan.

Only 17 percent received external assistance during or after a hazard event. Eighty-four percent are aware of hazard maps for their area, which households can use for risk-informed planning and community-level resilience.

Welfare gradient · M5 PMT Quintile

Early warning receipt varies by welfare quintile: Q1 households are less likely to receive alerts than Q5 households

Q1 = lowest 20% · Q5 = highest 20% · Ridge PMT welfare ranking
% received early warning
Q1
77.0%
Q2
81.9%
Q3
82.2%
Q4
89.2%
Q5
85.1%
Q1 LowestQ2Q3Q4Q5 Highest
Poverty lens

Hazard exposure is universal, typhoons, floods, and heat affect all quintiles equally. Early warning receipt, by contrast, follows a wealth gradient, reaching 77% in Q1 versus 89% in Q4.

Replication do-file · M09 Natural Hazards
* CH07: Natural Hazards — M09
* Weight: hhw
* Source: 7_L2PHL_CAPI_R00_ch07_hazard.do

use "$dta/${dta_file}_${date}_M09_hazard.dta", clear
merge m:1 hhid using "$out/_hhwt_temp.dta", nogen keep(match)
merge m:1 hhid using "$out/_quintiles_temp.dta", nogen keep(master match)
gen_macroreg
gen_settlement

* Hazard exposure
local hazards "nh1a nh1b nh1c nh1d nh1e nh1f nh1g nh1h nh1i nh1j"
local names `" "Typhoon" "Flood" "Earthquake" "Landslide" "Drought" "Fire" "Volcanic" "Storm surge" "Extreme heat" "Epidemic" "'
local k = 1
foreach v of local hazards {
    local nm : word `k' of `names'
    gen byte h_`k' = (`v' == 1) if !mi(`v')
    qui su h_`k' [aw=hhw]
    di "`nm': " %4.1f r(mean)*100 "%"
    local ++k
}

* Warning received
gen byte warned = (nh2 == 1) if !mi(nh2)
qui su warned [aw=hhw]
di "Warning received: " %4.1f r(mean)*100 "%"

* Evacuation
gen byte evac = (nh3 == 1) if !mi(nh3)
qui su evac [aw=hhw]
di "Evacuated: " %4.1f r(mean)*100 "%"

* Welfare gradient
wq_pct h_1 hhw "CH07_TYPHOON" "% exposed to typhoon"
wq_pct h_9 hhw "CH07_HEAT" "% exposed to extreme heat"
wq_pct warned hhw "CH07_WARNING" "% received warning"
wq_pct evac hhw "CH07_EVACUATED" "% evacuated"

gen byte any_hazard = 0
forval i = 1/10 {
    replace any_hazard = 1 if h_`i' == 1
}
wq_pct any_hazard hhw "CH07_ANY_HAZARD" "% exposed to any hazard"

gen byte multi = 0
local ct = 0
forval i = 1/10 {
    replace multi = multi + (h_`i' == 1)
}
gen byte multi3 = (multi >= 3) if !mi(multi)
wq_pct multi3 hhw "CH07_MULTI3" "% exposed to 3+ hazards"
08M10-M12 Dwelling, Sanitation & Utilities: Where families live
Dwelling

89% live in a single house, metal/GI roofing dominates at 55%

Eighty-nine percent of households live in standalone single houses. Fifty-six percent own their dwelling, 18 percent live rent-free with consent (often extended family), and 4 percent rent.

Roofing materials: metal/GI sheet is the most common at 55 percent, followed by half concrete/half GI at 19 percent. Cogon/nipa/anahaw (thatch) accounts for 9 percent, wood/bamboo 7 percent, makeshift/salvaged materials 6 percent, and concrete/tile 6 percent.

Wall materials: the dominant type is half concrete/half wood at 42 percent, followed by concrete/brick at 27 percent. Cogon/nipa/anahaw walls are found in 18 percent of homes, and wood/bamboo in 8 percent.

Housing tenure status
% of HHs
Owner56.0%
Rent-free (consent)17.5%
Other22.3%
Renting4.2%
Roof material
% of HHs
Metal/GI sheet54.7%
Half concrete/GI19.1%
Cogon/nipa8.6%
Wood/bamboo6.6%
Makeshift5.6%
Concrete/tile5.5%
Wall material
% of HHs
Half concrete/wood42.1%
Concrete/brick27.2%
Cogon/nipa17.6%
Wood/bamboo8.3%
Makeshift1.7%
Other2.5%
Toilet facility type
% of HHs
Solid waste disposal method
% of HHs
Municipal collection54.2%
Pit / landfill21.8%
Burning30.7%
Compost4.7%
Sanitation

Flush toilets are common, but 6% still practice open defecation

Seventy-one percent of households use flush toilets connected to sewage and 10 percent to septic tanks. However, 6 percent still practice open defecation, alongside 8 percent using pit latrines and 3 percent using hanging toilets.

Solid waste collection reaches 54 percent of households, but 22 percent dispose in pits or informal landfills and 31 percent burn waste. Only 13 percent properly segregate, while 33 percent do not segregate at all, a gap that affects the effectiveness of existing waste management systems.

Satisfaction with waste services is low: only 15 percent are satisfied, 11 percent are dissatisfied, and 75 percent are neutral.

Welfare gradient · M5 PMT Quintile

Internet access varies widely by quintile: 0.7% in Q1 compared with 30% in Q5

Q1 = lowest 20% · Q5 = highest 20% · Ridge PMT welfare ranking
% piped water
Q1
35.3%
Q2
51.0%
Q3
62.2%
Q4
71.6%
Q5
83.1%
% have internet
Q1
0.7%
Q2
3.3%
Q3
7.1%
Q4
11.1%
Q5
30.2%
% concrete walls
Q1
11.3%
Q2
23.8%
Q3
29.4%
Q4
32.2%
Q5
43.6%
% have electricity
Q1
83.5%
Q2
98.0%
Q3
98.8%
Q4
99.4%
Q5
100%
Q1 LowestQ2Q3Q4Q5 Highest
Poverty lens

Electricity reaches 84% of Q1 households, but piped water is at 35% and concrete walls at 11%. Internet access shows the widest gap: 0.7% in Q1 compared with 30% in Q5.

Replication do-file · M10 Dwelling + M11 Sanitation + M12 Utilities
* CH08: Dwelling & Utilities — M10 + M11 + M12
* Weight: hhw
* Source: 8_L2PHL_CAPI_R00_ch08_home.do

* === Dwelling (M10) ===
* IMPORTANT: Use M10_dwell.dta (raw), NOT M10_house.dta (cleaned)
use "$dta/${dta_file}_${date}_M10_dwell.dta", clear
merge m:1 hhid using "$out/_hhwt_temp.dta", nogen keep(match)
merge m:1 hhid using "$out/_quintiles_temp.dta", nogen keep(master match)
gen_macroreg
gen_settlement

* Tenure (owned/being amortized)
gen byte owned = inlist(d1, 1, 2) if !mi(d1)
qui su owned [aw=hhw]
di "Home owned: " %4.1f r(mean)*100 "%"

* Roof material (dw2): recode code 6 into Metal/GI (1)
replace dw2 = 1 if dw2 == 6
* Codes after recode: 1=Metal/GI sheet  2=Concrete/tile  3=Half concrete/GI
*        4=Wood/bamboo  5=Cogon/nipa/thatch  7=Makeshift
tab dw2 [aw=popw]

* Peeling paint
gen byte paint = (d8 == 1) if !mi(d8)
qui su paint [aw=hhw]
di "Peeling paint: " %4.1f r(mean)*100 "%"

* === Sanitation (M11) ===
use "$dta/${dta_file}_${date}_M11_sanit.dta", clear
merge m:1 hhid using "$out/_hhwt_temp.dta", nogen keep(match)
merge m:1 hhid using "$out/_quintiles_temp.dta", nogen keep(master match)
gen_macroreg
gen_settlement

* Flush toilet
gen byte flush = inlist(sa1, 1, 2) if !mi(sa1)
qui su flush [aw=hhw]
di "Flush toilet: " %4.1f r(mean)*100 "%"

* === Utilities (M12) ===
use "$dta/${dta_file}_${date}_M12_util.dta", clear
merge m:1 hhid using "$out/_hhwt_temp.dta", nogen keep(match)
merge m:1 hhid using "$out/_quintiles_temp.dta", nogen keep(master match)
gen_macroreg
gen_settlement

* Electricity
gen byte elec = (ut1 == 1) if !mi(ut1)
qui su elec [aw=hhw]
di "Electricity: " %4.1f r(mean)*100 "%"

* Internet
gen byte internet = (ut3 == 1) if !mi(ut3)
qui su internet [aw=hhw]
di "Internet: " %4.1f r(mean)*100 "%"

* Piped water
gen byte piped = (ut5 == 1) if !mi(ut5)
qui su piped [aw=hhw]
di "Piped water: " %4.1f r(mean)*100 "%"

* Water quality
gen byte unsafe = inlist(ut7, 1, 2) if !mi(ut7)
qui su unsafe [aw=hhw]
di "Water unsafe: " %4.1f r(mean)*100 "%"

* Welfare gradient
wq_pct elec hhw "CH08_ELECTRICITY" "% with electricity"
wq_pct internet hhw "CH08_INTERNET" "% with internet"
wq_pct piped hhw "CH08_PIPED" "% piped water"
Electricity & water

Electricity: 96%. Piped water: 61%, but 69% don't treat it.

⚡ Electricity
96% national access · 99% from grid
National95.7%
NCR98.7%
Luzon96.7%
Visayas94.9%
Mindanao92.8%

99 percent of connected households use the utility grid. Solar covers less than 1 percent. Generator/battery less than 1 percent. The urban rate (97 percent) was slightly higher than rural (95 percent).

💧 Water access
61% piped · 93% perceive water as safe
Piped (inside)60.6%
Unprotected well8.4%
Protected spring6.0%
Rainwater4.4%

61 percent have piped water inside the home, and 93 percent perceive their drinking water as safe. However, 69 percent do not treat their water, indicating a gap between perceived and treated water safety.

Drinking water safety
% of households
Very safe60.3%
Somewhat safe33.1%
Somewhat unsafe5.2%
Unsafe1.4%
Internet access

Half the country is online, but 59% had an outage last week.

📱 Internet access by region
50% national access · smartphone dominant
National50.1%
NCR67.4%
Luzon52.0%
Mindanao45.2%
Visayas40.7%

64 percent use smartphones. Devices: Smart TV (13 percent), Laptop (11 percent). Social media and communication account for the largest share of use (36 percent).

Internet use purposes
% of households by primary use · among connected HHs
Social media36.2%
News & Info15.6%
Online shopping14.0%
Online education13.1%
Entertainment8.9%
Payments/Banking4.1%
Govt information2.3%
Govt services2.0%
Welfare gradient · M5 PMT Quintile

Asset ownership tracks wealth almost perfectly, from 1% fridge ownership in Q1 to 11% in Q5

Q1 = lowest 20% · Q5 = highest 20% · Ridge PMT welfare ranking
% own motorcycle
Q1
7.0%
Q2
15.8%
Q3
25.0%
Q4
34.8%
Q5
47.0%
% own computer
Q1
17.7%
Q2
45.7%
Q3
58.4%
Q4
71.9%
Q5
81.2%
% own fridge
Q1
0.9%
Q2
2.0%
Q3
2.5%
Q4
3.5%
Q5
10.7%
% own phone
Q1
3.5%
Q2
5.2%
Q3
11.3%
Q4
16.6%
Q5
36.3%
Q1 LowestQ2Q3Q4Q5 Highest
Poverty lens

Since the PMT model uses assets as inputs, these gradients are partly mechanical, but the gaps are large: motorcycle ownership goes from 7% in Q1 to 47% in Q5, and computer access from 18% to 81%. Both affect daily mobility and the ability to work or study online.

Replication do-file · M13 Assets & Energy
* CH09: Assets & Energy — M13
* Weight: hhw
* Source: 9_L2PHL_CAPI_R00_ch09_assets.do

use "$dta/${dta_file}_${date}_M13_hc.dta", clear
merge m:1 hhid using "$out/_hhwt_temp.dta", nogen keep(match)
merge m:1 hhid using "$out/_quintiles_temp.dta", nogen keep(master match)
gen_macroreg
gen_settlement

* Asset ownership
* hc1_1=fridge, hc1_2=washing, hc1_3=aircon, hc1_4=gas stove,
* hc1_5=motorcycle, hc1_6=car
local names `" "Fridge" "Washing machine" "Air con" "Gas stove" "Motorcycle" "Car" "'
forval i = 1/6 {
    local nm : word `i' of `names'
    gen byte a`i' = (hc1_`i' >= 1 & !mi(hc1_`i'))
    qui su a`i' [aw=hhw]
    di "`nm': " %4.1f r(mean)*100 "%"
    forval r = 1/4 {
        qui su a`i' [aw=hhw] if macroreg == `r'
        di "  Region `r': " %4.1f r(mean)*100 "%"
    }
}

* Welfare gradient (from indicators file)
use "$out/wealth_index_indicators.dta", clear
merge m:1 hhid using "$out/_quintiles_temp.dta", nogen keep(master match)
merge m:1 hhid using "$out/_hhwt_temp.dta", nogen keep(master match) ///
    keepusing(hhw)

wq_pct has_car hhw "CH09_CAR" "% own car"
wq_pct has_moto hhw "CH09_MOTO" "% own motorcycle"
wq_pct has_fridge hhw "CH09_FRIDGE" "% own fridge"
wq_pct has_tv hhw "CH09_TV" "% own TV"
wq_pct has_computer hhw "CH09_COMPUTER" "% own computer"
wq_pct has_phone hhw "CH09_PHONE" "% own phone"
09M13 Assets & Energy: What families own
Household assets

Motorcycles and washing machines, but only 3.9% own a car

55.0%
Washing machine
54.0%
Motorcycle
49.0%
Refrigerator
25.9%
Gas stove
15%
Computer
10.5%
Air con
3.9%
Car/Van
1.6%
Boat

The two most common household assets are almost exactly tied: washing machines (55 percent) and motorcycles/tricycles (54 percent).

Refrigerators reach 49 percent nationally. The rate was highest in NCR (59 percent) and lowest in Visayas (45 percent). Computer or laptop ownership is 15 percent nationally, ranging from 25 percent in NCR to 9 percent in Visayas. This gap affects access to remote work and online education.

Air conditioning is found in 10 percent of households nationally, mostly concentrated in NCR (24 percent) compared to 6 percent in Mindanao. Cars are at 4 percent nationally, fairly consistent across regions.

Asset ownership rates
% of HHs owning each asset
Washing machine55.0%
Motorcycle54.0%
Refrigerator49.0%
Gas stove25.9%
Computer14.6%
Air con10.5%
Car/Van3.9%
Boat1.6%
Energy for cooking

LPG on top, but fuelwood burns in half of homes

LPG is the primary cooking fuel at 61 percent. But 51 percent of households still use fuelwood, not as a curiosity but as a primary or supplementary fuel. Twenty-seven percent use charcoal. Many households use multiple fuels depending on what they are cooking and what is available.

Cooking fuel varies sharply by region. 94 percent of NCR households use LPG compared to 39 percent in Mindanao, while 72 percent of Mindanao households use fuelwood vs only 4 percent in NCR. Visayas and Mindanao together have the highest biomass dependency.

Electricity for cooking is 21 percent nationally, highest in NCR (29 percent) and lowest in Visayas (15 percent). Despite wide electrification coverage, solid fuels remain common for cooking in most of the country.

61%
LPG
51%
Fuelwood
27%
Charcoal
21%
Electricity
94%
NCR uses LPG
72%
Mindanao fuelwood
Cooking fuel type
% of HHs using each fuel · multi-select
LPG61.5%
Fuelwood50.7%
Charcoal27.0%
Electricity21.4%
Kerosene4.1%
10M14 Views & Perceptions: What they think
Perceptions & sentiment

Life satisfaction: 3.04/5. 19% feel worse off. Prices and governance top all concerns.

3.04/5
Life satisfaction mean
19%
Feel worse off (vs last month)
11%
Feel unsafe in neighbourhood
37%
Believe taxes are well spent

Life satisfaction averages 3.04 out of 5 (where 1 is "not satisfied at all" and 5 is "completely satisfied"). Fifty-two percent select "satisfied" (code 3). Twenty-three percent report being more than satisfied or completely satisfied (codes 4-5); 25 percent are only partly satisfied or not satisfied at all (codes 1-2). Note: the scale has no neutral midpoint, code 3 is a positive response ("satisfied").

On the economic situation: 46 percent say it is the same as last month. Nineteen percent feel worse off (somewhat or much worse). Thirty-five percent feel things improved. Visayas is most pessimistic (20 percent worse) while Mindanao is most stable (52 percent same).

When asked about their income group, most place themselves in the middle: 49 percent group 3, 30 percent group 2, 20 percent group 1. Only 1 percent place themselves in the top two groups,

On neighbourhood safety, 11 percent feel unsafe walking in their area, while 80 percent feel safe or very safe.

Life satisfaction distribution
1=Not satisfied at all · 2=Partly · 3=Satisfied · 4=More than · 5=Completely
1. Not at all4.4%
2. Partly20.8%
3. Satisfied52.3%
4. More than satisfied11.3%
5. Completely11.2%
Economic situation vs last month
% of HHs by perceived change
Much worsened6.9%
Somewhat worsened11.7%
Same45.5%
Somewhat improved28.7%
Much improved7.2%
· · ·
Attitudes & concerns

Prices and governance top all concerns, AI anxiety ranks lower than expected

Strongly disagree Disagree Neither Agree Strongly agree
Worries Worries & Concerns
% agree (agree + strongly agree) · sorted high to low
Prices for the things I buy are rising too quickly75.5%
12
8
39
36
I am worried about being able to give my children a good education70.8%
11
13
49
22
I am worried about political instability in my country63.7%
6
13
17
39
24
I am worried about losing my job (or not finding a job)56.8%
7
17
19
39
18
My family's financial situation is worse now than two years ago58.2%
6
19
17
40
18
I am worried about AI/automation replacing jobs52.4%
8
19
20
36
17

Seventy-six percent agree prices are rising too quickly, and 71 percent of parents worry about their children's education. Political instability concerns 64 percent. Worsening finances (58 percent), job loss anxiety (57 percent), and AI/automation anxiety (52 percent) round out the top worries.

On the confidence side, 77 percent want more say in government decisions, the highest agreement rate across all items. Digital services earn moderate trust (60 percent), while optimism about jobs and the economy hovers around 55–56 percent.

Only 37 percent believe taxes are well-spent, and 33 percent support tax increases for better services, the lowest rates among all statements. Support for the government directing the economy sits at 54 percent, while 59 percent say digital public services provide useful access.

Confidence Confidence & Assurance
% agree/support · sorted high to low
Citizens should have more say in important government decisions77.1%
7
12
47
30
Digital public services helped me save time or cost59.9%
7
14
19
46
14
The government provides useful digital services58.8%
8
11
22
39
20
Now is a good time to find a job where I live56.4%
7
15
21
44
13
I am optimistic about the economic future of the country55.4%
7
15
23
43
13
The government directing the economy54.4%
8
14
23
35
20
The taxes that I pay are being well spent on priorities to help the country36.6%
21
24
19
27
9
Taxes should be increased to pay for better public services, like education and roads32.8%
35
19
13
19
14
· · ·
Regional sentiment

Visayas most pessimistic. Mindanao most stable.

Economic sentiment by macro-region
Stacked % better / same / worse vs last month
Better Same Worse
National34.7% / 46.3% / 19.0%
NCR33.1% / 45.8% / 21.1%
Luzon (excl. NCR)34.4% / 45.3% / 20.3%
Visayas37.8% / 42.6% / 19.6%
Mindanao33.7% / 51.6% / 14.7%

Visayas shows the highest "worse off" sentiment at 20 percent, consistent with Visayas having the lowest PhilHealth coverage, lowest internet access, lowest financial inclusion, and highest hazard exposure relative to infrastructure.

Mindanao has the highest "same" rate at 51 percent. Visayas has the highest "better off" rate at 39 percent, while NCR is at 33 percent.

· · ·
Income mobility aspirations

Where families are vs. where they want their children to be

The Sankey diagram shows the flow between self-assessed income class (left) and expected income class for one's children (right). Each band's width is proportional to the share of households in that combination.

The dominant flow is from "Middle" self-classification (48%) staying at "Middle" for children (36% of all HHs). Families in groups 1 and 2 report upward aspiration: most expect their children to reach group 3 or higher.

Almost no one places themselves in the top two groups (1.5% combined), while 19% expect their children to reach group 4 or 5, indicating widespread aspirations for upward mobility.

Self-income class to expected children's income class
Band width = % of all households · v2 (left) to v3 (right)
Welfare gradient · M5 PMT Quintile

Life satisfaction varies little by quintile, but Q1 households report the largest decline in perceived well-being

Q1 = lowest 20% · Q5 = highest 20% · Ridge PMT welfare ranking
Mean life satisfaction (1–5)
Q1
3.04
Q2
3.00
Q3
2.92
Q4
3.03
Q5
3.20
% feel worse off
Q1
24.2%
Q2
17.1%
Q3
18.8%
Q4
18.4%
Q5
16.4%
% feel better off
Q1
33.4%
Q2
32.4%
Q3
34.7%
Q4
34.5%
Q5
38.5%
% agree prices rising
Q1
74.2%
Q2
73.3%
Q3
76.2%
Q4
75.4%
Q5
78.5%
Q1 LowestQ2Q3Q4Q5 Highest
Poverty lens

Perceptions are broadly similar across wealth quintiles: AI anxiety (around 52%), price concerns (around 75%), and economic optimism (around 55%) show little variation. The main difference is subjective welfare, with 24% of Q1 feeling worse off versus 16% of Q5.

Replication do-file · M14 Views & Perceptions
* CH10: Views & Perceptions — M14
* Weight: hhw
* Source: 10_L2PHL_CAPI_R00_ch10_views.do

use "$dta/${dta_file}_${date}_M14_view.dta", clear
merge m:1 hhid using "$out/_hhwt_temp.dta", nogen keep(match)
merge m:1 hhid using "$out/_quintiles_temp.dta", nogen keep(master match)
gen_macroreg
gen_settlement

* Life satisfaction (1-5)
qui su v1 [aw=hhw] if inrange(v1, 1, 5)
di "Mean life satisfaction: " %4.2f r(mean) " / 5"

* Worse off / same / better (v5: 1-2 worse, 3 same, 4-5 better)
gen byte worse = (v5 <= 2) if inrange(v5, 1, 5)
gen byte same = (v5 == 3) if inrange(v5, 1, 5)
gen byte better = (v5 >= 4) if inrange(v5, 1, 5)
qui su worse [aw=hhw]
di "Feel worse off: " %4.1f r(mean)*100 "%"
qui su better [aw=hhw]
di "Feel better off: " %4.1f r(mean)*100 "%"

* Safety
gen byte unsafe = inlist(v8, 1, 2) if inrange(v8, 1, 5)
qui su unsafe [aw=hhw]
di "Feel unsafe: " %4.1f r(mean)*100 "%"

* Attitudes (% agree/strongly agree, v9a-v9k, codes 4+5)
local vars "v9a v9b v9c v9d v9e v9f v9g v9h v9i v9j v9k"
local names `" "Prices" "Good time job" "Econ optimism" "Family worse" "Citizens say" "Govt support" "Job loss" "AI anxiety" "Political" "Trust" "Taxes" "'
local k = 1
foreach v of local vars {
    local nm : word `k' of `names'
    gen byte ag_`k' = inlist(`v', 4, 5) if inrange(`v', 1, 5)
    qui su ag_`k' [aw=hhw]
    di "`nm': " %4.1f r(mean)*100 "%"
    local ++k
}

* Welfare gradient
gen life_sat = v1 if !mi(v1)
wq_mean life_sat hhw "CH10_LIFESAT" "Mean life satisfaction"
wq_pct worse hhw "CH10_WORSE_OFF" "% feel worse off"
wq_pct same hhw "CH10_SAME" "% feel same"
wq_pct better hhw "CH10_BETTER_OFF" "% feel better off"

gen byte worry_ai = (v9h >= 4) if !mi(v9h)
wq_pct worry_ai hhw "CH10_AI_WORRY" "% worried about AI"

gen byte prices = (v9a >= 4) if !mi(v9a)
wq_pct prices hhw "CH10_PRICES" "% agree prices rising"

gen byte optimistic = (v9c >= 4) if !mi(v9c)
wq_pct optimistic hhw "CH10_OPTIMISTIC" "% optimistic about economy"
11Survey Methodology: How we listened
Survey design

A nationally representative survey of 2,470 households and 10,496 members across 18 regions

2,470
Households surveyed
10,496
Individual members
18
Regions covered
108.7M
Population represented
14
Survey modules

The Listening to Philippines (L2Phl) Baseline Household Survey was conducted face-to-face using Computer Assisted Personal Interviewing (CAPI) between September and October 2025. The survey is part of the World Bank's Listening to the Philippines (L2Phl) programme, designed to provide timely, high-frequency data on household welfare, service delivery and perceptions.

The baseline covers the entire population of the Philippines. Every one of the country's 18 administrative regions is represented, with the sample stratified by region and urban/rural settlement type to ensure disaggregated estimates at the sub-national level. The National Capital Region (NCR) is further divided into five sub-regions for finer geographic resolution.

The 2,470 sampled households collectively represent approximately 108.7 million Filipinos. Urban areas account for 54 percent of the weighted population. The median age of the population is 25 years, and 40.6 percent are under 20 years old.

Geographic coverage
Weighted population share by macro-region
Luzon (excl. NCR)51%
Mindanao27%
Visayas22%
NCR13%
Settlement type
Weighted population share
Urban54%
Rural46%
· · ·
Sampling design

Two-stage stratified sampling with probability-proportional-to-size PSU selection

The sample uses a two-stage stratified design. Strata are defined by the cross-classification of region and urban/rural status, yielding 39 explicit strata: 17 non-NCR regions each contribute an urban and a rural stratum (34 strata), and the National Capital Region is divided into five sub-regions, all classified as urban (5 strata).

Stage 1: Primary Sampling Units (PSUs), barangays identified by their Philippine Standard Geographic Code (PSGC), were selected with probability proportional to size (PPS), using 2020 Census population as the measure of size (MOS). Within each stratum s, PSU p was selected with probability proportional to its population: π(1) = ns × POPsp / POPs.

Stage 2: Within each selected PSU, households were drawn with equal probability. The Stage-2 inclusion probability is π(2) = msp / HHsp, where msp is the number of sampled households and HHsp is the total number of households in the PSU.

The combined inclusion probability is π = π(1) × π(2), and the base household design weight is W = 1 / π.

Weight construction

Three analytic weights are produced:

hhw, Household weight. Base design weight adjusted for MOS mismatch (PPS by population vs. PPS by households) and post-stratified to 2020 Census household totals by stratum.

popw, Population weight. hhw × household size. Represents individuals at the population level.

indw, Individual weight. Used for person-level modules (roster, education, employment, health, migration). Calibrated to census population totals where needed.

MOS adjustment

Because PSUs were selected PPS by population but households are the unit of analysis, an exact correction factor (adj = hhsizesp / hhsizes) is applied to convert the population-PPS design weight to an effective HH-PPS weight. Post-stratification then aligns stratum HH totals to the 2020 Census.

· · ·
Questionnaire

14 modules covering demographics, livelihoods, services, and perceptions

Questionnaire modules
M00–M14 · Face-to-face CAPI interview
M00Passport: HH identification, GPS, interviewer metadata
M01Household roster: demographics, age, sex, disability
M02Education: attendance, attainment, expenditure
M03Employment: labour market, contracts, hours worked
M04Income: cash earnings, OFW remittances, pensions
M05Financial inclusion: bank accounts, mobile money, savings, loans
M06Migration: internal migration intent, past moves
M07Health: PhilHealth coverage, out-of-pocket costs, hospitalisation
M08Food & nutrition: wet market, SSB consumption, food expenditure
M09Natural hazards: typhoon, flood, earthquake, warning systems
M10Dwelling: tenure, construction materials, housing conditions
M11Sanitation: toilet type, waste disposal methods
M12Utilities: electricity, internet access, drinking water source
M13Assets & energy: appliance ownership, cooking fuel
M14Views & perceptions: life satisfaction, economic outlook, AI anxiety

The questionnaire was administered on tablets using SurveyToGo (STG), a mobile CAPI platform developed by Dooblo that enforces skip patterns, piping, looping, range checks and consistency validations in real time, with full offline capability for remote fieldwork areas. Modules M01 through M03 and M06–M07 collect person-level data (weighted by indw), while modules M04–M05 and M08–M14 are administered at the household level (weighted by hhw). Module M00 (Passport) records household identifiers, GPS coordinates, interview timing and enumerator metadata.

· · ·
Implementation

PSRC and the World Bank, a partnership spanning fieldwork to analysis

Field data collection was carried out by the Philippine Survey and Research Center, Inc. (PSRC), the largest independent research agency in the Philippines. Founded in 1974, PSRC brings over 50 years of field research experience and a nationwide network of trained enumerators and field supervisors. PSRC is a member of the Worldwide Independent Network (WIN), the leading global association for market research and polling, and engages with over 200,000 respondents annually across the archipelago.

For Project TIPON (the internal name for the L2Phl survey), PSRC deployed field teams across all 18 regions. Each team consisted of interviewers and a field supervisor responsible for quality oversight, spot checks and re-interviews. PSRC programmed the questionnaire using SurveyToGo (STG), their mobile CAPI platform, which supports offline data collection, GPS capture, multimedia integration, smart skip logic and real-time validation, essential for reaching remote rural barangays with limited connectivity.

Interviews were conducted face-to-face in respondents' homes during September and October 2025. PSRC supervisors monitored daily completion rates, flagged incomplete or inconsistent submissions, and conducted back-checks on a random subset of completed interviews. Mock interviews and a pilot round preceded the main fieldwork to refine question wording and test the STG scripting.

World Bank team

The survey was designed and supervised by the World Bank's Poverty and Equity Global Practice, with technical leadership from the Washington DC and Manila offices. The team provided end-to-end oversight: sampling frame construction from the 2020 Census, questionnaire design, enumerator training, real-time data monitoring and post-collection quality assurance. Weight construction, data cleaning and all statistical analysis were conducted by the World Bank team.

Key roles
Survey implementation team structure
World Bank: Technical leadership
Survey design, sampling frame, weight construction, questionnaire development, data quality monitoring, analysis and reporting
PSRC: Field implementation
CAPI scripting (SurveyToGo), enumerator recruitment and training, nationwide field deployment, daily supervision, back-checks, data upload and server management
PSRC: Field supervisors
Regional team management, daily monitoring, spot-check re-interviews, quality assurance at the point of collection
PSRC: Enumerators
Face-to-face household interviews via CAPI tablets, informed consent, GPS capture, real-time data validation
About PSRC

The Philippine Survey and Research Center, Inc. (PSRC) was founded in 1974 and is the largest independent research agency in the Philippines. With over 50 years of experience and a tagline of "Insight to Incite," PSRC is a member of the Worldwide Independent Network (WIN) and engages with over 200,000 respondents annually. Their nationwide field infrastructure supported a survey of this scale and geographic coverage.

· · ·
Data quality

Multi-layer quality assurance: from field checks to automated pipelines

Data quality was monitored through a multi-layer system spanning the entire data lifecycle, from real-time field validation to post-collection automated checks and three-layer cross-verification.

Layer 1: Field
Real-time CAPI validation
PSRC's SurveyToGo (STG) platform enforces skip patterns, range checks, and consistency rules during the interview. GPS coordinates are captured automatically. PSRC supervisors conduct daily reviews and flag anomalies for re-interview.
Layer 2: Post-collection
Automated DQ checks
Module-specific Stata do-files (M00–M14) run automated quality checks on every variable: missing values, logical inconsistencies, outliers, duplicate IDs and cross-module conflicts. Results are exported to Excel dashboards for review.
Layer 3: Verification
Three-layer cross-check
All published statistics are verified through a three-way comparison: Stata replication code regenerates every number from cleaned microdata, DOCX reports are produced by Stata's putdocx, and the HTML storyline is cross-checked against both. All 96 statistics are required to match.

"Every number in this report traces back to the cleaned microdata through a fully automated pipeline: DQ checks produce cleaned .dta files, Stata chapter do-files generate the DOCX report, and the HTML storyline is verified against both. No manual transcription steps."

Data processing pipeline
From raw data to published statistics
Raw data
PSRC / STG export
DQ checks
M00–M14 do-files
Cleaned .dta
Analysis-ready
Stata chapters
putdocx → DOCX
Cross-check
Stata ↔ DOCX ↔ HTML
HTML story
This report
Source: L2Phl Baseline Household Survey, Sep–Oct 2025 · World Bank Poverty and Equity Global Practice · Sampling frame: 2020 Philippine Census of Population and Housing

"The infrastructure is there. The protection isn't."

Electricity reaches 96% of homes. Schools are near-full. The road to the wet market takes 17 minutes. But when sickness strikes, most families pay alone. When work disappears, there is no cushion. When the typhoon comes, half hear no warning. The story of the Philippines in 2025 is not a story of absence but a story of exposure without insurance.

108.7M
People represented
2,470
Households
14
Modules
96%
Electricity
54%
No PhilHealth
72%
No work contract

L2Phl · Listening to the Philippines Baseline Household Survey · Sep–Oct 2025