1 分析の枠組み

本節では、マッチングアルゴリズムによって特定された送迎トリップのドライバーとパッセンジャーのデータを用いて、(1)どのような属性を持つドライバーが家族への送迎を担うのか(Analysis A)、(2)送迎を担うことがドライバー自身の1日の移動行動にいかなる影響を与えるか(Analysis B)、の2点を分析する。

1.1 サンプル定義

高齢者への家族送迎は、提供者と被提供者の関係によって大きく2つに区別される。一つは成人の子世代(または孫世代)が、同居する75歳以上の親世代高齢者を送迎するケース(以下、子による送迎)であり、もう一つは75歳以上の高齢ドライバー自身が配偶者を送迎するケース(以下、配偶者による送迎)である。これらは、対象とするサンプルも説明変数の構造も異なるため、分離して分析を行う。

1.2 モデル設定

1.2.1 Analysis A

Analysis A では、送迎提供の有無を目的変数とするロジスティック回帰を推定し、送迎提供の規定要因を探る。目的変数は調査日に少なくとも1件の送迎を行ったかどうかを示す二値変数(ride provider)とし、説明変数は年齢・性別・就業状態といった個人属性、世帯構成・自動車保有台数といった世帯属性、および居住ゾーンの人口密度・施設密度・公共交通アクセスといった空間的属性が、送迎提供の確率とどのように関連するかを明らかにすることを目的とする。

1.2.2 Analysis B

Analysis B では、Analysis Aで使用した変数によってコントロールした上で、送迎提供の有無を主要な説明変数として、提供者自身の移動行動の3つの側面を目的変数とした回帰モデルを推定する。具体的には、1日のトリップ数(外出機会の多寡)、1日の総移動時間(移動に費やした時間)、および余暇滞在時間(趣味・外食・社交・レクリエーションの目的で費やした時間)である。送迎という役割が、提供者の外出機会や余暇時間にいかなる制約をもたらすかを定量的に示すことが目的である。これはケアに関する時間貧困の文脈とも関連する。

この分析では、2段階のハードルモデルを用いる。これは次の理由によるものである。まず、本研究で用いる3つのアウトカム変数は、カウントデータ(1日トリップ数)と連続データ(1日移動時間、余暇滞在時間)に大別されるが、そのいずれもゼロが一定数含まれる非負の値であり、通常のOLSを適用することができない。

非負のカウントデータについてはポアソン回帰が標準的に用いられるが、分散=平均という等分散仮定を満たす必要がある。本分析で用いるサンプルはいずれも分散が平均より大きい過分散であり、この仮定を満たさない。この問題を解決するために負の二項分布(NB)モデルが用いられるが、本分析のアウトカムにはゼロが多く含まれるゼロ過剰(zero inflation)という別の問題があるため、NBモデルでは当てはまりが悪化する。こうした場合にはゼロ過剰負の二項(ZINB)モデルが使用されうるが、これはゼロの観測値に対して「構造的ゼロ(どのような状況でも移動しない個人)」と「偶発的ゼロ(この調査日たまたま移動しなかった個人)」の両方が混在すると仮定する。しかし、ドライバーの交通行動を分析する本研究において、構造的ゼロは想定しづらく、すべてのゼロは「移動しない選択」から生じていると考えるほうが自然である。

この点において、ハードル負の二項(HNB)モデルは、移動意思決定を二段階に分離する点で有利である。第1段階では移動の有無という二値選択をロジスティック回帰で推定し、実際にゼロより大きい観測値を持つサンプルを対象に、第2段階では過分散を許容する負の二項モデルによってカウントの多寡を推定する。HNBモデルの構造は式(1)のとおりである。

\[f_{HNB}(Y_i = y_i) = \begin{cases} 1 - \pi_i & y_i = 0 \\[4pt] \pi_i \cdot \dfrac{f_{\mathrm{NB}}(y_i;\, \mu_i,\, \theta)}{1 - f_{\mathrm{NB}}(0;\, \mu_i,\, \theta)} & y_i = 1, 2, \ldots \end{cases} \tag{1}\]

ここで、\(Y_i\) は個人 \(i\) の1日トリップ数、\(\pi_i = \Lambda(\mathbf{x}_i^\top \boldsymbol{\beta})\) は正値確率(\(\Lambda(\cdot)\) はロジスティックCDF)、\(f_{\mathrm{NB}}(y_i;\, \mu_i,\, \theta)\) は平均 \(\mu_i = \exp(\mathbf{x}_i^\top \boldsymbol{\gamma})\)・過分散パラメータ \(\theta > 0\) をもつ負の二項分布の確率質量関数である。\(\boldsymbol{\beta}\) および \(\boldsymbol{\gamma}\) はそれぞれ第1段階・第2段階の回帰係数ベクトルであり、独立したパラメータとして分離最尤推定できる。

他方、非負の連続データについては、ゼロを正規分布する潜在変数の打ち切りと見做すトービットモデルを使用することもできるが、前述のとおり、移動の意思決定との整合の観点で2段階のハードルモデルが有利である。この場合、第2段階では右裾が重い正値連続データに適した対数リンクGamma GLMで推定する。ハードルガンマモデルの構造は式(2)のとおりである。

\[f_{HG}(Y_i = y_i) = \begin{cases} 1 - \pi_i & y_i = 0 \\[4pt] \pi_i \cdot f_{\mathrm{Gamma}}(y_i;\, \mu_i,\, \phi) & y_i > 0 \end{cases} \tag{2}\]

ここで、\(Y_i\) は個人 \(i\) の1日移動時間または余暇滞在時間(分)、\(\pi_i\) は式(1)と同一の正値確率(\(\pi_i = \Lambda(\mathbf{x}_i^\top \boldsymbol{\beta})\))、\(f_{\mathrm{Gamma}}\) は平均 \(\mu_i\)\(\log(\mu_i) = \mathbf{x}_i^\top \boldsymbol{\gamma}\))・形状パラメータ \(\phi > 0\) をもつGamma密度関数である。

1.3 分析の構成

以上を踏まえ、本節の構成は以下のとおりである。

  • Part 1:子による送迎(子世代ドライバーを対象)
    • Analysis A:送迎提供の規定要因
    • Analysis B:送迎提供者の移動負担
      • B-1:1日トリップ数
      • B-2:1日総移動時間
      • B-3:余暇滞在時間
  • Part 2:配偶者による送迎(高齢ドライバーを対象)
    • Analysis A:送迎提供の規定要因
    • Analysis B:送迎提供者の移動負担
      • B-1:1日トリップ数
      • B-2:1日総移動時間
      • B-3:余暇滞在時間

1.4 変数定義

1.1に分析で使用するすべての変数の定義を示す。

Table 1.1: Variable Definitions
Variable Type Sample Description
Outcome
Ride provider Binary Both 1 if the respondent provided at least one family ride on the survey day, 0 otherwise
Trip count Count Both Total number of trips made on the survey day
Travel time (min) Continuous Both Total travel time (minutes) across all trips on the survey day
Leisure dwell time (min) Continuous Both Total time spent at leisure destinations (dining out, socializing, hobby, and recreation) on the survey day; 0 for individuals with no leisure trips
Individual characteristics
Age Continuous Both Age in years at the time of the survey
Age² Continuous Both Square of age; included to capture non-linear age effects
Female Binary Both 1 if female, 0 if male
Weekday Binary Both 1 if the survey day is a weekday, 0 if a holiday
Occupation (base: non-employed)
Employed (full-time) Binary 1 1 if regular full-time employee; base category: non-employed
Employed (part-time) Binary 1 1 if part-time or temporary employee
Employed (other) Binary 1 1 if self-employed, company executive, or employment status unspecified
Employed Binary 2 1 if employed in any capacity; base category: non-employed
Household composition (Part 1)
Parent: single, non-driving Binary 1 1 if the co-residing parent-generation elderly member lives alone and does not hold a driver’s license; base category: single parent who holds a driver’s license
Parent: couple, some driving Binary 1 1 if the parent generation consists of a couple with at least one member who holds a driver’s license
Parent: couple, all non-driving Binary 1 1 if the parent generation consists of a couple neither of whom holds a driver’s license
Other lic. adults in hh Continuous 1 Number of other licensed adults (aged 20–74) in the household, excluding the respondent
Child under 18 in hh Binary 1 1 if the household includes at least one child under age 18
Female × Child < 18 Binary 1 Interaction between Female and Child under 18 in hh
Household composition (Part 2)
Spouse: driving Binary 2 1 if the respondent has a spouse who holds a driver’s license; base category: no spouse
Spouse: non-driving Binary 2 1 if the respondent has a spouse who does not hold a driver’s license
Child generation in hh Binary 2 1 if the household includes at least one member of the child generation (respondent’s child or child-in-law)
Mobility
Cars per household member Continuous Both Number of household-owned vehicles divided by household size
Zone characteristics
log(Pop. density) Continuous Both Natural log of population density (persons/km²) within a 1-km buffer around the zone population centroid; sourced from the 2015 Population Census
log1p(Daily facilities) Continuous Both Natural log of (1 + count of daily-use establishments) within a 1-km buffer around the zone population centroid; covers wholesale/retail, accommodation/food service, life-related services, education, and medical/welfare industries; sourced from the 2016 Economic Census
log(Dist. to nearest station) Continuous Both Natural log of straight-line distance (m) from the zone population centroid to the nearest railway station
log(Dist. to nearest bus stop) Continuous Both Natural log of straight-line distance (m) from the zone population centroid to the nearest bus stop
Note: Sample column indicates the analysis to which the variable applies: 1 = Part 1 (licensed drivers aged 20+ living with parent-generation elderly 75+); 2 = Part 2 (licensed drivers aged 75+); Both = both analyses.

ゾーンレベルの変数は、パーソントリップ調査の居住ゾーンを空間単位として以下の手順で作成した。

Pop. density: 2015年国勢調査の250mメッシュ人口データを用いて集計された、各ゾーンの代表点から1km圏内の人口密度を使用した。まず、各ゾーン内に含まれる250mメッシュを特定し、ゾーン境界をまたぐメッシュについては重複面積の比率で人口を按分した。次に、各メッシュの重心座標を按分後の人口で加重平均することにより、ゾーンごとの人口重心を算出した。この人口重心を中心とする半径1kmのバッファを設定し、バッファ内に含まれる250mメッシュの人口を同様に面積按分で集計した。さらに、バッファ内の推計人口をバッファ面積で除して人口密度を算出した(単位:人/km²)。

Daily facilities: 居住地区における目的地の充実度を示す変数として、各ゾーンの代表点から1km圏内の小売・卸売、宿泊・飲食、生活関連サービス、教育、医療・福祉の事業所数の密度を使用した。データは2016年経済センサスに基づく500mメッシュを用いて、人口密度と同じ手法により算出した。

Dist. to nearest station: 鉄道駅データとして、西澤明氏(東京大学空間情報科学研究センター客員研究員)の作成した「全国鉄道運行本数データ公開ページ」(gtfs-gis.jp)の2023年版の「路線別・駅別発着本数データ」を使用した。各ゾーンの人口重心から最寄り鉄道駅までの直線距離(メートル)を投影座標系上で算出した。

Dist. to nearest bus stop: バス停データとして、一般社団法人社会基盤情報流通推進協議会事務局(AIGID、Association for Promotion of Infrastructure Geospatial Information Distribution)が管理するGTFSデータリポジトリ(gtfs-data.jp)上のGTFS形式の路線バスデータを使用した。山形都市圏パーソントリップ調査対象自治体で運行している6つの路線バス事業者がこのリポジトリに掲載したGTFSデータを用いて、各ゾーンの人口重心から最寄りバス停までの直線距離(メートル)を同様に投影座標系上で算出した。

データの時点について: 本分析で使用したデータの調査時点は複数にわたる。国勢調査及び経済センサスは、パーソントリップ調査が行われた2017年以前の直近で調査されたデータを使用した。鉄道駅データとバス停データについては、いずれもパーソントリップ調査の実施後に作成されたものであり、上記データソースで利用可能な最も古いものを用いた。


2 Part 1:子による送迎(子世代ドライバーを対象)

ここでは子ども世代による送迎を分析対象とする。分析サンプルは、75歳以上の高齢世代と同居する、20歳以上の有免許の成人の子どもで構成される。サンプルの記述統計は表 2.1のとおりである。

2.1 サンプルの概要

# Helper functions
msd <- function(x) sprintf("%.2f (%.2f)", mean(x, na.rm = TRUE), sd(x, na.rm = TRUE))
pct <- function(x) sprintf("%.1f%%", mean(as.integer(x), na.rm = TRUE) * 100)

# Split by RP status; pre-compute non-employed flag
grp_t <- d_burden_p |> dplyr::mutate(occ_nonempl = as.integer(occ_fulltime == 0 & occ_parttime == 0 & occ_other_employed == 0))
grp_n <- d_burden_p |> dplyr::filter(is_rp_provider == 0) |> dplyr::mutate(occ_nonempl = as.integer(occ_fulltime == 0 & occ_parttime == 0 & occ_other_employed == 0))
grp_r <- d_burden_p |> dplyr::filter(is_rp_provider == 1) |> dplyr::mutate(occ_nonempl = as.integer(occ_fulltime == 0 & occ_parttime == 0 & occ_other_employed == 0))

n_t <- formatC(nrow(grp_t), format = "d", big.mark = ",")
n_n <- formatC(nrow(grp_n), format = "d", big.mark = ",")
n_r <- formatC(nrow(grp_r), format = "d", big.mark = ",")

tbl_desc_p <- tibble::tribble(
  ~Variable,                             ~Total,                               ~`Non-ride-provider`,                  ~`Ride provider`,
  # ---- Continuous variables ----
  "Age (years)",                         msd(grp_t$age),                       msd(grp_n$age),                        msd(grp_r$age),
  "Cars per household member",                 msd(grp_t$cars_per_hh_member),       msd(grp_n$cars_per_hh_member),        msd(grp_r$cars_per_hh_member),
  "Other lic. adults in hh",            msd(grp_t$n_other_lic_adult),         msd(grp_n$n_other_lic_adult),          msd(grp_r$n_other_lic_adult),
  "log(Pop. density)",                   msd(grp_t$log_pop_density),           msd(grp_n$log_pop_density),            msd(grp_r$log_pop_density),
  "log1p(Daily facilities)",             msd(grp_t$log1p_fac_daily),           msd(grp_n$log1p_fac_daily),            msd(grp_r$log1p_fac_daily),
  "log(Dist. to nearest station)",       msd(grp_t$log_dist_nearest_st),       msd(grp_n$log_dist_nearest_st),        msd(grp_r$log_dist_nearest_st),
  "log(Dist. to nearest bus stop)",      msd(grp_t$log_dist_nearest_stop),     msd(grp_n$log_dist_nearest_stop),      msd(grp_r$log_dist_nearest_stop),
  # ---- Individual characteristics ----
  "Female",                              pct(grp_t$female),                    pct(grp_n$female),                     pct(grp_r$female),
  "Weekday",                             pct(grp_t$is_weekday),                pct(grp_n$is_weekday),                 pct(grp_r$is_weekday),
  # ---- Occupation ----
  "Full-time employed",                  pct(grp_t$occ_fulltime),              pct(grp_n$occ_fulltime),               pct(grp_r$occ_fulltime),
  "Part-time employed",                  pct(grp_t$occ_parttime),              pct(grp_n$occ_parttime),               pct(grp_r$occ_parttime),
  "Other employed",                      pct(grp_t$occ_other_employed),        pct(grp_n$occ_other_employed),         pct(grp_r$occ_other_employed),
  "Non-employed",                        pct(grp_t$occ_nonempl),               pct(grp_n$occ_nonempl),                pct(grp_r$occ_nonempl),
  # ---- Household composition ----
  "Parent: single, driving",             pct(grp_t$parent_pattern == "A_single_drv"),        pct(grp_n$parent_pattern == "A_single_drv"),        pct(grp_r$parent_pattern == "A_single_drv"),
  "Parent: single, non-driving",         pct(grp_t$parent_pattern == "B_single_nodrv"),      pct(grp_n$parent_pattern == "B_single_nodrv"),      pct(grp_r$parent_pattern == "B_single_nodrv"),
  "Parent: couple, some driving",        pct(grp_t$parent_pattern == "C_couple_some_drv"),   pct(grp_n$parent_pattern == "C_couple_some_drv"),   pct(grp_r$parent_pattern == "C_couple_some_drv"),
  "Parent: couple, all non-driving",     pct(grp_t$parent_pattern == "D_couple_all_nodrv"),  pct(grp_n$parent_pattern == "D_couple_all_nodrv"),  pct(grp_r$parent_pattern == "D_couple_all_nodrv"),
  "Child under 18 in hh",               pct(grp_t$has_own_child),             pct(grp_n$has_own_child),              pct(grp_r$has_own_child)
)

tbl_desc_p |>
  kbl(
    caption   = "Descriptive Statistics: Part 1 Sample (licensed drivers aged 20+ living with parent-generation elderly 75+)",
    col.names = c("Variable",
                  sprintf("Total (N\u00a0=\u00a0%s)", n_t),
                  sprintf("Non-ride-provider (N\u00a0=\u00a0%s)", n_n),
                  sprintf("Ride provider (N\u00a0=\u00a0%s)", n_r)),
    align     = c("l", "r", "r", "r")
  ) |>
  kable_styling(bootstrap_options = c("striped", "condensed"), font_size = 10, full_width = FALSE) |>
  pack_rows("Continuous variables [Mean (SD)]",          1,  7) |>
  pack_rows("Individual characteristics (%)",            8,  9) |>
  pack_rows("Occupation (%; base: non-employed)",       10, 13) |>
  pack_rows("Household composition (%)",                14, 18)
Table 2.1: Descriptive Statistics: Part 1 Sample (licensed drivers aged 20+ living with parent-generation elderly 75+)
Variable Total (N = 6,040) Non-ride-provider (N = 5,943) Ride provider (N = 97)
Continuous variables [Mean (SD)]
Age (years) 50.57 (13.11) 50.50 (13.15) 55.40 (9.10)
Cars per household member 0.68 (0.24) 0.68 (0.24) 0.60 (0.24)
Other lic. adults in hh 1.49 (1.02) 1.50 (1.02) 0.95 (0.88)
log(Pop. density) 7.39 (1.12) 7.38 (1.12) 7.55 (1.01)
log1p(Daily facilities) 4.83 (1.48) 4.83 (1.48) 4.96 (1.33)
log(Dist. to nearest station) 7.23 (0.77) 7.23 (0.77) 7.16 (0.76)
log(Dist. to nearest bus stop) 5.33 (0.91) 5.33 (0.91) 5.29 (0.85)
Individual characteristics (%)
Female 48.7% 48.7% 53.6%
Weekday 50.0% 49.7% 69.1%
Occupation (%; base: non-employed)
Full-time employed 43.1% 43.4% 26.8%
Part-time employed 19.9% 20.0% 14.4%
Other employed 13.7% 13.7% 15.5%
Non-employed 23.2% 22.9% 43.3%
Household composition (%)
Parent: single, driving 18.7% 19.0% 4.1%
Parent: single, non-driving 56.0% 55.9% 61.9%
Parent: couple, some driving 17.8% 17.9% 13.4%
Parent: couple, all non-driving 7.5% 7.3% 20.6%
Child under 18 in hh 17.2% 17.3% 12.4%

記述統計は、いくつかの点で送迎提供者の特徴を浮き彫りにしている。送迎提供者のうち非就業者は43.3%と、非提供者(22.9%)の約2倍にのぼる一方、フルタイム就業者の割合は26.8%と非提供者(43.4%)を大きく下回る。世帯構成については、「親カップル・全員非運転」、すなわち両親と同居し、そのどちらも免許を持っていない割合が送迎提供者で20.6%と非提供者(7.2%)の約3倍に達する一方、親が自ら運転できる「単身・運転可」の場合は送迎提供者でわずか4.1%(非提供者18.8%)にとどまり、親の運転能力が子による送迎提供と明確に対応している。同居する他の有免許成人の数も送迎提供者(平均0.95人)で非提供者(1.50人)より少なく、他に担い手がいないほど特定の個人に送迎負担が集中する構図が見て取れる。

他方、性別については、送迎提供者に女性がやや多い(53.6%対48.7%)ものの、差は5ポイント程度にとどまり、送迎が女性に偏って担われているという像を強く支持する水準ではないようである。居住ゾーンの空間変数(人口密度・施設密度・駅距離等)についても両群の差は僅少であり、送迎提供の有無と都市農村差の関係は記述統計レベルでは明確でない。

2.2 Analysis A:送迎提供の規定要因

目的変数は調査日における送迎提供の有無(二値変数)であり、ロジスティック回帰によって推定する。説明変数は、個人属性(年齢・年齢二乗・性別・調査曜日)、就業状態(フルタイム・パートタイム・その他就業;基準カテゴリ:非就業)、世帯構成(親世代の免許保有パターン、同居有免許成人数、18歳未満の子の有無、女性と子の有無の交互作用項)、世帯一人当たり自動車保有台数、および居住ゾーンの空間属性(人口密度・日常施設密度・最寄り鉄道駅距離・最寄りバス停距離)である。推定結果は表 2.2のとおりである。

dplyr::bind_rows(
  .glm_tidy(m3_p, vcov_m3_p) |> .fmt_or_rows(coef_map_p[-1]),
  dplyr::tibble(` ` = "N",   `Coef.` = format(nobs(m3_p), big.mark = ","), OR = ""),
  dplyr::tibble(` ` = "AIC", `Coef.` = formatC(AIC(m3_p), digits = 1, format = "f"), OR = "")
) |>
  kbl(col.names = c("", "Coef.", "OR"), escape = FALSE,
      caption = "Analysis A — Logistic regression: Determinants of ride provision (Part 1)") |>
  kable_styling(bootstrap_options = c("striped", "condensed"), font_size = 10) |>
  add_header_above(c(" " = 1, "Outcome: Ride provider (logit)" = 2)) |>
  footnote(
    general           = "Note: Logistic regression. Sample: licensed drivers living with parent-generation elderly (75+). Baseline category for parent-household pattern: single driving parent. OR = odds ratio (exponentiated coefficient). Clustered SEs (by household) in parentheses. <sup>*</sup>p < 0.05; <sup>**</sup>p < 0.01; <sup>***</sup>p < 0.001.",
    general_title     = "",
    footnote_as_chunk = TRUE,
    escape            = FALSE
  )
Table 2.2: Analysis A — Logistic regression: Determinants of ride provision (Part 1)
Outcome: Ride provider (logit)
Coef. OR
Age 0.265**
(0.088)
1.30
Age\(^2\) -0.003**
(0.001)
1.00
Female 0.054
(0.230)
1.06
Weekday 0.834***
(0.241)
2.30
Employed (full-time) -1.093***
(0.302)
0.34
Employed (part-time) -1.118***
(0.328)
0.33
Employed (other) -0.472
(0.310)
0.62
Parent: single, non-driving 1.736**
(0.639)
5.68
Parent: couple, some driving 1.166
(0.677)
3.21
Parent: couple, all non-driving 2.643***
(0.679)
14.06
Other lic. adults in hh -0.511**
(0.161)
0.60
Child under 18 in hh -0.095
(0.496)
0.91
Female × Child < 18 0.002
(0.592)
1.00
Cars per household member -0.074
(0.510)
0.93
log(Pop. density) 0.687*
(0.330)
1.99
log1p(Daily facilities) -0.464
(0.248)
0.63
log(Dist. to nearest station) -0.138
(0.158)
0.87
log(Dist. to nearest bus stop) 0.062
(0.124)
1.06
N 5,996
AIC 916.7
Note: Logistic regression. Sample: licensed drivers living with parent-generation elderly (75+). Baseline category for parent-household pattern: single driving parent. OR = odds ratio (exponentiated coefficient). Clustered SEs (by household) in parentheses. p < 0.05; p < 0.01; p < 0.001.

2.2の推定結果は、高齢の親の移動制約が成人の子の送迎行動と関連していることを示唆する。基準カテゴリ(同居する親が単身で免許を保有)と比較した場合、親が単身かつ非免許保有の場合のオッズ比は5.7(p<0.01)、両親とも免許を保有していない場合は14.1(p<0.001)に達する。また、世帯内に他の有免許成人が1名増えると送迎オッズは約40%低下し(p<0.01)、担い手の分散が特定個人への負担集中を緩和することが示唆される。就業状態についても明確な抑制効果が見られる。フルタイムおよびパートタイム就業者のオッズ比はそれぞれ0.34、0.33(ともにp<0.001)であり、就労による時間制約が送迎提供を有意に妨げている。

他方、性別は有意でなく、記述統計で観察された女性のわずかな優位は他の属性を統制すると消失する。空間変数のうち人口密度のみ正の有意な効果が見られたが、他の空間変数はいずれも有意でなく、送迎提供と都市部居住との関係は一貫した形では確認されなかった。

2.3 Analysis B:送迎提供者の移動負担

目的変数は、対象となる個人レベルの1日トリップ数(B-1)・1日総移動時間(B-2)・余暇滞在時間(B-3)の3つである。Analysis A で用いた説明変数でコントロールした上で、主要説明変数たる送迎提供の有無(ride provider)の目的変数との関連性を推定する。

2.3.1 Analysis B-1:1日トリップ数

目的変数は1日のトリップ数である。第1パートをロジスティック回帰、第2パートを負の二項分布とする、ハードル負の二項モデルを用いて推計する。推定結果は表 2.3のとおりである。

tbl5_z <- .hurdle_tidy(h_z1_p, "zero",  vcov_hnb_zero_p)  |> .fmt_or_rows(coef_map_p)
tbl5_c <- .hurdle_tidy(h_z1_p, "count", vcov_hnb_count_p) |> .fmt_or_rows(coef_map_p)

dplyr::full_join(
  dplyr::rename(tbl5_z, `Coef.z` = `Coef.`, ORz  = OR),
  dplyr::rename(tbl5_c, `Coef.c` = `Coef.`, IRR  = OR),
  by = " "
) |>
  tidyr::replace_na(list(`Coef.z` = "", ORz = "", `Coef.c` = "", IRR = "")) |>
  dplyr::arrange(match(` `, unname(coef_map_p))) |>
  dplyr::bind_rows(dplyr::tibble(
    ` ` = "N",
    `Coef.z` = format(length(h_z1_p$y),    big.mark = ","),
    ORz = "",
    `Coef.c` = format(sum(h_z1_p$y > 0),   big.mark = ","),
    IRR = ""
  )) |>
  kbl(col.names = c("", "Coef.", "OR", "Coef.", "IRR"), escape = FALSE,
      caption = "Analysis B-1 — Trip count: Hurdle negative binomial model (Part 1)") |>
  kable_styling(bootstrap_options = c("striped", "condensed"), font_size = 10) |>
  add_header_above(c(" " = 1, "Zero part: Pr(trips > 0)" = 2,
                     "Count part: E(trips | trips > 0)" = 2)) |>
  footnote(
    general           = "Note: Hurdle negative binomial model. Zero part: logistic regression for Pr(trips > 0); ride provider excluded from zero part because ride provision mechanically implies trips > 0. Count part: zero-truncated negative binomial for E(trips | trips > 0); IRR = incidence rate ratio (exponentiated coefficient). OR = odds ratio. Clustered SEs (by household) in parentheses. <sup>*</sup>p < 0.05; <sup>**</sup>p < 0.01; <sup>***</sup>p < 0.001.",
    general_title     = "",
    footnote_as_chunk = TRUE,
    escape            = FALSE
  )
Table 2.3: Analysis B-1 — Trip count: Hurdle negative binomial model (Part 1)
Zero part: Pr(trips > 0)
Count part: E(trips | trips > 0)
Coef. OR Coef. IRR
Ride provider 0.552***
(0.051)
1.74
Age -0.007
(0.008)
0.99 0.010***
(0.001)
1.01
Age\(^2\) 0.000***
(0.000)
1.00 -0.000***
(0.000)
1.00
Female 0.183*
(0.072)
1.20 0.002
(0.018)
1.00
Weekday 1.114***
(0.076)
3.05 -0.091***
(0.021)
0.91
Employed (full-time) 1.496***
(0.082)
4.46 -0.076**
(0.025)
0.93
Employed (part-time) 1.497***
(0.102)
4.47 -0.099***
(0.028)
0.91
Employed (other) 0.720***
(0.121)
2.05 0.076*
(0.032)
1.08
Parent: single, non-driving -0.112
(0.118)
0.89 0.028
(0.030)
1.03
Parent: couple, some driving -0.089
(0.137)
0.92 -0.059
(0.035)
0.94
Parent: couple, all non-driving 0.168
(0.192)
1.18 -0.007
(0.045)
0.99
Other lic. adults in hh -0.011
(0.045)
0.99 -0.019
(0.012)
0.98
Child under 18 in hh 0.581***
(0.163)
1.79 0.046
(0.037)
1.05
Female × Child < 18 0.081
(0.185)
1.08 0.077*
(0.039)
1.08
Cars per household member 0.165
(0.220)
1.18 0.038
(0.054)
1.04
log(Pop. density) 0.400***
(0.115)
1.49 0.027
(0.031)
1.03
log1p(Daily facilities) -0.238*
(0.093)
0.79 -0.011
(0.024)
0.99
log(Dist. to nearest station) -0.024
(0.064)
0.98 0.003
(0.016)
1.00
log(Dist. to nearest bus stop) 0.013
(0.050)
1.01 0.003
(0.012)
1.00
N 5,996 4,881
Note: Hurdle negative binomial model. Zero part: logistic regression for Pr(trips > 0); ride provider excluded from zero part because ride provision mechanically implies trips > 0. Count part: zero-truncated negative binomial for E(trips | trips > 0); IRR = incidence rate ratio (exponentiated coefficient). OR = odds ratio. Clustered SEs (by household) in parentheses. p < 0.05; p < 0.01; p < 0.001.

ゼロパートでは、送迎提供者であることは定義上除外しているため、外出有無の関連要因を確認する。平日は外出確率を大きく高め(OR=3.05、p<0.001)、就業状態も同方向の効果を持つ(フルタイムOR=4.46、パートタイムOR=4.47、p<0.001)。18歳以下の子どもとの同居(OR=1.79、p<0.001)、女性(OR=1.20、p<0.05)、人口密度(OR=1.49、p<0.001)も正の有意な効果を示した。施設数はやや負の関連を示し(OR=0.79、p<0.05)、親世代の人数・免許保有状況、世帯一人当たり自動車保有は非有意であった。

カウントパートでは、外出した日のトリップ数について、送迎提供者は非送迎者に比べ1.74倍多く(IRR=1.74、p<0.001)、送迎の発生が(他のトリップを圧縮するのではなく)1日のトリップの上乗せと関連していることが示唆される。平日はトリップ数を抑制し(IRR=0.91、p<0.001)、フルタイム・パートタイム就業も同様に抑制した(IRR=0.93・0.91)。ゼロパートとの比較で、平日は外出確率を高める一方で、一度でも外出した人のトリップ数を減少させるという符号の反転が観察され、これは、平日には外出はしても移動が集約化される傾向を示唆する。

2.3.2 Analysis B-2:1日総移動時間

目的変数は1日の総移動時間(分)である。第1パートをロジスティック回帰、第2パートをGamma GLM(対数リンク)とする、2パートモデルを用いて推計する。推定結果は表 2.4のとおりである。

tbl6_p1 <- .glm_tidy(tt_p1_z1, vcov_tt_p1_z1) |> .fmt_or_rows(coef_map_p)
tbl6_p2 <- .glm_tidy(tt_p2_z1, vcov_tt_p2_z1) |> .fmt_or_rows(coef_map_p)

dplyr::full_join(
  dplyr::rename(tbl6_p1, `Coef.1` = `Coef.`, OR1   = OR),
  dplyr::rename(tbl6_p2, `Coef.2` = `Coef.`, Ratio = OR),
  by = " "
) |>
  tidyr::replace_na(list(`Coef.1` = "", OR1 = "", `Coef.2` = "", Ratio = "")) |>
  dplyr::arrange(match(` `, unname(coef_map_p))) |>
  dplyr::bind_rows(
    dplyr::tibble(` ` = "N",
                  `Coef.1` = format(nobs(tt_p1_z1), big.mark = ","), OR1 = "",
                  `Coef.2` = format(nobs(tt_p2_z1), big.mark = ","), Ratio = ""),
    dplyr::tibble(` ` = "AIC",
                  `Coef.1` = formatC(AIC(tt_p1_z1), digits = 1, format = "f"), OR1 = "",
                  `Coef.2` = formatC(AIC(tt_p2_z1), digits = 1, format = "f"), Ratio = "")
  ) |>
  kbl(col.names = c("", "Coef.", "OR", "Coef.", "Ratio"), escape = FALSE,
      caption = "Analysis B-2 — Travel time: Two-part model (Part 1)") |>
  kable_styling(bootstrap_options = c("striped", "condensed"), font_size = 10) |>
  add_header_above(c(" " = 1, "Part 1: Pr(y > 0)" = 2, "Part 2: E(y | y > 0)" = 2)) |>
  footnote(
    general           = "Note: Two-part model. Part 1: logistic regression for Pr(travel time > 0); ride provider excluded from Part 1 because ride provision mechanically implies travel time > 0. OR = odds ratio. Part 2: GLM Gamma with log link estimated on positive subsample; Ratio = exp(coef), i.e., multiplicative effect on mean travel time. Clustered SEs (by household) in parentheses. <sup>*</sup>p < 0.05; <sup>**</sup>p < 0.01; <sup>***</sup>p < 0.001.",
    general_title     = "",
    footnote_as_chunk = TRUE,
    escape            = FALSE
  )
Table 2.4: Analysis B-2 — Travel time: Two-part model (Part 1)
Part 1: Pr(y > 0)
Part 2: E(y | y > 0)
Coef. OR Coef. Ratio
Ride provider 0.162*
(0.071)
1.18
Age -0.002
(0.019)
1.00 -0.007
(0.008)
0.99
Age\(^2\) 0.000
(0.000)
1.00 0.000
(0.000)
1.00
Female 0.162*
(0.069)
1.18 -0.158***
(0.031)
0.85
Weekday 0.883***
(0.079)
2.42 -0.150***
(0.034)
0.86
Employed (full-time) 1.322***
(0.094)
3.75 -0.035
(0.048)
0.97
Employed (part-time) 1.246***
(0.107)
3.48 -0.163**
(0.053)
0.85
Employed (other) 0.630***
(0.118)
1.88 -0.194***
(0.058)
0.82
Parent: single, non-driving -0.056
(0.116)
0.95 0.014
(0.044)
1.01
Parent: couple, some driving -0.206
(0.130)
0.81 0.020
(0.049)
1.02
Parent: couple, all non-driving 0.168
(0.181)
1.18 0.131
(0.078)
1.14
Other lic. adults in hh 0.034
(0.045)
1.03 -0.002
(0.020)
1.00
Child under 18 in hh 0.480**
(0.152)
1.62 0.083
(0.060)
1.09
Female × Child < 18 0.065
(0.167)
1.07 0.047
(0.056)
1.05
Cars per household member 0.259
(0.210)
1.30 0.141
(0.084)
1.15
log(Pop. density) 0.271*
(0.112)
1.31 0.043
(0.051)
1.04
log1p(Daily facilities) -0.146
(0.089)
0.86 -0.054
(0.038)
0.95
log(Dist. to nearest station) -0.018
(0.060)
0.98 0.065**
(0.022)
1.07
log(Dist. to nearest bus stop) -0.006
(0.047)
0.99 -0.050*
(0.021)
0.95
N 5,996 4,706
AIC 5772.9 48403.2
Note: Two-part model. Part 1: logistic regression for Pr(travel time > 0); ride provider excluded from Part 1 because ride provision mechanically implies travel time > 0. OR = odds ratio. Part 2: GLM Gamma with log link estimated on positive subsample; Ratio = exp(coef), i.e., multiplicative effect on mean travel time. Clustered SEs (by household) in parentheses. p < 0.05; p < 0.01; p < 0.001.

第1パートでは、送迎提供者であることはB-1と同じ理由でゼロパートから除外しているため、移動時間の発生との関連のみを確認する。平日(OR=2.42、p<0.001)、就業状態(フルタイムOR=3.75、パートタイムOR=3.48、p<0.001)、18歳以下の子どもとの同居(OR=1.62、p<0.01)、女性(OR=1.18、p<0.05)、人口密度(OR=1.31、p<0.05)が移動時間の発生と正の関連を持ち、親世代の人数・免許保有状況は非有意であった。

第2パートでは、移動時間がある個人に限定すると、送迎提供者の総移動時間は非送迎者より18%長い(Ratio=1.18、p<0.05)。女性(Ratio=0.85、p<0.001)、平日(Ratio=0.86、p<0.001)・パートタイム就業(Ratio=0.85、p<0.01)、その他就業(Ratio=0.82、p<0.001)は移動時間を短縮させた。空間変数については、最寄り駅からの距離が遠いほど移動時間が長く(Ratio=1.07、p<0.01)、最寄りバス停からの距離が遠いほど短いという対照的な空間効果が確認された(Ratio=0.95、p<0.05)。

2.3.3 Analysis B-3:余暇滞在時間

目的変数は総余暇滞在時間(分)である。これは、趣味・外食・社交・レクリエーションという裁量的目的でのトリップの到着地での滞在時間(当該トリップの到着時間と続くトリップの出発時間との差)を合計したもので、個人の外出先での余暇時間の長さである。第1パートをロジスティック回帰、第2パートをGamma GLM(対数リンク)とする、2パートモデルを用いて推計する。推定結果は表 2.5のとおりである。

tbl8_p1 <- .glm_tidy(lp1_z1, vcov_lp1_z1) |> .fmt_or_rows(coef_map_p)
tbl8_p2 <- .glm_tidy(lp2_z1, vcov_lp2_z1) |> .fmt_or_rows(coef_map_p)

dplyr::full_join(
  dplyr::rename(tbl8_p1, `Coef.1` = `Coef.`, OR1   = OR),
  dplyr::rename(tbl8_p2, `Coef.2` = `Coef.`, Ratio = OR),
  by = " "
) |>
  tidyr::replace_na(list(`Coef.1` = "", OR1 = "", `Coef.2` = "", Ratio = "")) |>
  dplyr::arrange(match(` `, unname(coef_map_p))) |>
  dplyr::bind_rows(
    dplyr::tibble(` ` = "N",
                  `Coef.1` = format(nobs(lp1_z1), big.mark = ","), OR1 = "",
                  `Coef.2` = format(nobs(lp2_z1), big.mark = ","), Ratio = ""),
    dplyr::tibble(` ` = "AIC",
                  `Coef.1` = formatC(AIC(lp1_z1), digits = 1, format = "f"), OR1 = "",
                  `Coef.2` = formatC(AIC(lp2_z1), digits = 1, format = "f"), Ratio = "")
  ) |>
  kbl(col.names = c("", "Coef.", "OR", "Coef.", "Ratio"), escape = FALSE,
      caption = "Analysis B-3 — Leisure dwell time: Two-part model (Part 1)") |>
  kable_styling(bootstrap_options = c("striped", "condensed"), font_size = 10) |>
  add_header_above(c(" " = 1, "Part 1: Pr(y > 0)" = 2, "Part 2: E(y | y > 0)" = 2)) |>
  footnote(
    general           = "Note: Two-part model. Part 1: logistic regression for Pr(leisure dwell > 0); OR = odds ratio. Part 2: GLM Gamma with log link estimated on positive subsample; Ratio = exp(coef), i.e., multiplicative effect on mean leisure dwell time. Clustered SEs (by household) in parentheses. <sup>*</sup>p < 0.05; <sup>**</sup>p < 0.01; <sup>***</sup>p < 0.001.",
    general_title     = "",
    footnote_as_chunk = TRUE,
    escape            = FALSE
  )
Table 2.5: Analysis B-3 — Leisure dwell time: Two-part model (Part 1)
Part 1: Pr(y > 0)
Part 2: E(y | y > 0)
Coef. OR Coef. Ratio
Ride provider 0.398
(0.284)
1.49 -0.472*
(0.198)
0.62
Age -0.014
(0.020)
0.99 -0.015
(0.016)
0.99
Age\(^2\) 0.000
(0.000)
1.00 0.000
(0.000)
1.00
Female -0.023
(0.074)
0.98 -0.111
(0.058)
0.89
Weekday -0.943***
(0.087)
0.39 -0.426***
(0.057)
0.65
Employed (full-time) -0.044
(0.102)
0.96 -0.019
(0.088)
0.98
Employed (part-time) -0.101
(0.117)
0.90 -0.074
(0.085)
0.93
Employed (other) -0.062
(0.131)
0.94 -0.058
(0.092)
0.94
Parent: single, non-driving 0.029
(0.120)
1.03 -0.047
(0.077)
0.95
Parent: couple, some driving -0.088
(0.141)
0.92 -0.078
(0.092)
0.93
Parent: couple, all non-driving 0.131
(0.205)
1.14 -0.014
(0.125)
0.99
Other lic. adults in hh 0.003
(0.045)
1.00 0.029
(0.032)
1.03
Child under 18 in hh 0.486***
(0.137)
1.63 0.066
(0.093)
1.07
Female × Child < 18 -0.145
(0.145)
0.86 -0.065
(0.123)
0.94
Cars per household member 0.654**
(0.208)
1.92 -0.201
(0.125)
0.82
log(Pop. density) 0.122
(0.125)
1.13 -0.016
(0.086)
0.98
log1p(Daily facilities) -0.038
(0.097)
0.96 0.010
(0.063)
1.01
log(Dist. to nearest station) -0.041
(0.062)
0.96 0.045
(0.041)
1.05
log(Dist. to nearest bus stop) -0.042
(0.052)
0.96 -0.005
(0.031)
1.00
N 5,996 984
AIC 5168.3 11808.4
Note: Two-part model. Part 1: logistic regression for Pr(leisure dwell > 0); OR = odds ratio. Part 2: GLM Gamma with log link estimated on positive subsample; Ratio = exp(coef), i.e., multiplicative effect on mean leisure dwell time. Clustered SEs (by household) in parentheses. p < 0.05; p < 0.01; p < 0.001.

第1パートでは、余暇外出の有無について、送迎提供者であることは有意な関連を示さなかった。平日は余暇外出の確率を大きく低下させ(OR=0.39、p<0.001)、18歳以下の子どもとの同居(OR=1.63、p<0.001)および世帯員1人あたり自動車台数(OR=1.92、p<0.01)は正の関連を持った。就業状態・親世帯の移動パターン・空間変数はいずれも非有意であった。

第2パートでは、余暇外出がある個人に対象を限定すると、送迎提供者の余暇滞在時間は非送迎者より約38%短かった(Ratio=0.62、p<0.05)。平日も余暇時間を短縮させた(Ratio=0.65、p<0.001)。これは、高齢者の送迎というケア的活動が、その送迎提供者の余暇的活動の圧縮に関連づけられていることを示唆する。また、余暇外出の有無そのものには送迎の有意な関連が見られない一方で、余暇外出をした際の滞在時間は短縮されているという結果は、送迎によって余暇活動が消失するのではなく圧縮される可能性を提示する。


3 Part 2:配偶者による送迎(高齢ドライバーを対象)

本パートでは、高齢ドライバーによる送迎を分析対象とする。分析サンプルは、75歳以上の運転免許を有する高齢者で構成される。配偶者のいない高齢者は、データセットの設計上、送迎がなされ得ないため、サンプルから除外された。サンプルの記述統計は表 3.1のとおりである。

3.1 サンプルの概要

# msd() and pct() are defined in the parent-desc-stats chunk above
# d_burden_s is already restricted to spouse-present (has_spouse == 1)
d_burden_s_sp <- d_burden_s
grp_t_s <- d_burden_s_sp |> dplyr::mutate(occ_nonempl = as.integer(occ_employed == 0))
grp_n_s <- d_burden_s_sp |> dplyr::filter(is_rp_provider == 0) |> dplyr::mutate(occ_nonempl = as.integer(occ_employed == 0))
grp_r_s <- d_burden_s_sp |> dplyr::filter(is_rp_provider == 1) |> dplyr::mutate(occ_nonempl = as.integer(occ_employed == 0))

n_t_s <- formatC(nrow(grp_t_s), format = "d", big.mark = ",")
n_n_s <- formatC(nrow(grp_n_s), format = "d", big.mark = ",")
n_r_s <- formatC(nrow(grp_r_s), format = "d", big.mark = ",")

tbl_desc_s <- tibble::tribble(
  ~Variable,                             ~Total,                               ~`Non-ride-provider`,                  ~`Ride provider`,
  # ---- Continuous variables ----
  "Age (years)",                         msd(grp_t_s$age),                     msd(grp_n_s$age),                      msd(grp_r_s$age),
  "Cars per household member",                 msd(grp_t_s$cars_per_hh_member),     msd(grp_n_s$cars_per_hh_member),      msd(grp_r_s$cars_per_hh_member),
  "log(Pop. density)",                   msd(grp_t_s$log_pop_density),         msd(grp_n_s$log_pop_density),          msd(grp_r_s$log_pop_density),
  "log1p(Daily facilities)",             msd(grp_t_s$log1p_fac_daily),         msd(grp_n_s$log1p_fac_daily),          msd(grp_r_s$log1p_fac_daily),
  "log(Dist. to nearest station)",       msd(grp_t_s$log_dist_nearest_st),     msd(grp_n_s$log_dist_nearest_st),      msd(grp_r_s$log_dist_nearest_st),
  "log(Dist. to nearest bus stop)",      msd(grp_t_s$log_dist_nearest_stop),   msd(grp_n_s$log_dist_nearest_stop),    msd(grp_r_s$log_dist_nearest_stop),
  # ---- Individual characteristics ----
  "Female",                              pct(grp_t_s$female),                  pct(grp_n_s$female),                   pct(grp_r_s$female),
  "Weekday",                             pct(grp_t_s$is_weekday),              pct(grp_n_s$is_weekday),               pct(grp_r_s$is_weekday),
  # ---- Occupation ----
  "Employed",                            pct(grp_t_s$occ_employed),            pct(grp_n_s$occ_employed),             pct(grp_r_s$occ_employed),
  "Non-employed",                        pct(grp_t_s$occ_nonempl),             pct(grp_n_s$occ_nonempl),              pct(grp_r_s$occ_nonempl),
  # ---- Household composition ----
  "Driving spouse",                      pct(grp_t_s$spouse_status == "B_driving_spouse"),    pct(grp_n_s$spouse_status == "B_driving_spouse"),    pct(grp_r_s$spouse_status == "B_driving_spouse"),
  "Non-driving spouse",                  pct(grp_t_s$spouse_status == "C_nondriving_spouse"), pct(grp_n_s$spouse_status == "C_nondriving_spouse"), pct(grp_r_s$spouse_status == "C_nondriving_spouse"),
  "Child generation in hh",             pct(grp_t_s$has_child),               pct(grp_n_s$has_child),                pct(grp_r_s$has_child)
)

tbl_desc_s |>
  kbl(
    caption   = "Descriptive Statistics: Part 2 Sample (licensed drivers aged 75+ with a spouse)",
    col.names = c("Variable",
                  sprintf("Total (N\u00a0=\u00a0%s)", n_t_s),
                  sprintf("Non-ride-provider (N\u00a0=\u00a0%s)", n_n_s),
                  sprintf("Ride provider (N\u00a0=\u00a0%s)", n_r_s)),
    align     = c("l", "r", "r", "r")
  ) |>
  kable_styling(bootstrap_options = c("striped", "condensed"), font_size = 10, full_width = FALSE) |>
  pack_rows("Continuous variables [Mean (SD)]",          1,  6) |>
  pack_rows("Individual characteristics (%)",            7,  8) |>
  pack_rows("Occupation (%; base: non-employed)",        9, 10) |>
  pack_rows("Household composition (%)",                11, 13)
Table 3.1: Descriptive Statistics: Part 2 Sample (licensed drivers aged 75+ with a spouse)
Variable Total (N = 2,430) Non-ride-provider (N = 2,363) Ride provider (N = 67)
Continuous variables [Mean (SD)]
Age (years) 79.22 (3.54) 79.19 (3.54) 80.27 (3.35)
Cars per household member 0.69 (0.27) 0.70 (0.27) 0.63 (0.30)
log(Pop. density) 7.59 (1.04) 7.58 (1.04) 7.81 (0.79)
log1p(Daily facilities) 5.06 (1.38) 5.05 (1.38) 5.33 (1.07)
log(Dist. to nearest station) 7.18 (0.78) 7.18 (0.78) 7.08 (0.65)
log(Dist. to nearest bus stop) 5.23 (0.78) 5.24 (0.78) 5.21 (0.67)
Individual characteristics (%)
Female 21.7% 22.0% 10.4%
Weekday 50.0% 49.3% 74.6%
Occupation (%; base: non-employed)
Employed 15.5% 15.6% 10.4%
Non-employed 84.5% 84.4% 89.6%
Household composition (%)
Driving spouse 52.1% 52.7% 29.9%
Non-driving spouse 47.9% 47.3% 70.1%
Child generation in hh 44.0% 44.2% 35.8%

Part 1の子世代ドライバーのサンプルと異なり、記述統計は、送迎を提供する性別間の差異が大きいことを示している。RP提供者に占める女性の割合は10.4%と、非提供者(22.0%)を大きく下回り、この年齢層における送迎は男性に著しく偏っている。これは、夫婦間においては主に男性が運転を担うことと関連しているかもしれない。

世帯構成について、送迎提供者と非提供者の間に顕著な差がある。送迎を提供しない人の47.3%が運転免許を持たない配偶者と同居している一方、提供している人のその割合は70.1%と約1.5倍である。この構図は、配偶者の運転能力の制約が送迎提供と関連していることを示唆する。居住ゾーンの空間変数(人口密度・施設密度・駅距離等)については両群の差は僅少であり、送迎提供の有無と都市農村差の関係は記述統計レベルでは明確でない。

3.2 Analysis A:送迎提供の規定要因

目的変数は調査日における送迎提供の有無(二値変数)であり、ロジスティック回帰によって推定する。分析サンプルは配偶者と同居する75歳以上の有免許者に限定する。説明変数は、個人属性(年齢・年齢二乗・性別・調査曜日)、就業ダミー(基準カテゴリ:非就業)、配偶者の免許保有状況(基準カテゴリ:有免許配偶者)、子世代の同居有無、世帯一人当たり自動車保有台数、および居住ゾーンの空間属性(人口密度・日常施設密度・最寄り鉄道駅距離・最寄りバス停距離)である。推定結果は表 3.2のとおりである。

dplyr::bind_rows(
  .glm_tidy(m3_s, vcov_m3_s) |> .fmt_or_rows(coef_map_s[-1]),
  dplyr::tibble(` ` = "N",   `Coef.` = format(nobs(m3_s), big.mark = ","), OR = ""),
  dplyr::tibble(` ` = "AIC", `Coef.` = formatC(AIC(m3_s), digits = 1, format = "f"), OR = "")
) |>
  kbl(col.names = c("", "Coef.", "OR"), escape = FALSE,
      caption = "Analysis A — Logistic regression: Determinants of ride provision (Part 2)") |>
  kable_styling(bootstrap_options = c("striped", "condensed"), font_size = 10) |>
  add_header_above(c(" " = 1, "Outcome: Ride provider (logit)" = 2)) |>
  footnote(
    general           = "Note: Logistic regression. Sample restricted to licensed drivers aged 75+ living with a spouse. Spouse: non-driving = spouse does not hold a driver's license; baseline = spouse holds a driver's license. OR = odds ratio (exponentiated coefficient). Clustered SEs (by household) in parentheses. <sup>*</sup>p < 0.05; <sup>**</sup>p < 0.01; <sup>***</sup>p < 0.001.",
    general_title     = "",
    footnote_as_chunk = TRUE,
    escape            = FALSE
  )
Table 3.2: Analysis A — Logistic regression: Determinants of ride provision (Part 2)
Outcome: Ride provider (logit)
Coef. OR
Age 2.973
(1.519)
19.56
Age\(^2\) -0.018
(0.009)
0.98
Female -0.505
(0.413)
0.60
Weekday 1.119***
(0.285)
3.06
Employed -0.183
(0.386)
0.83
Spouse: non-driving 0.668*
(0.331)
1.95
Child generation in hh -0.318
(0.266)
0.73
Cars per household member -0.230
(0.790)
0.79
log(Pop. density) 0.261
(0.362)
1.30
log1p(Daily facilities) -0.090
(0.275)
0.91
log(Dist. to nearest station) -0.160
(0.148)
0.85
log(Dist. to nearest bus stop) 0.068
(0.163)
1.07
N 2,430
AIC 594.3
Note: Logistic regression. Sample restricted to licensed drivers aged 75+ living with a spouse. Spouse: non-driving = spouse does not hold a driver’s license; baseline = spouse holds a driver’s license. OR = odds ratio (exponentiated coefficient). Clustered SEs (by household) in parentheses. p < 0.05; p < 0.01; p < 0.001.

3.2の推定結果では、配偶者の運転能力と曜日効果に有意な関連が確認された。配偶者が免許非保有であることの送迎提供のオッズ比は1.95(p<0.05)であり、家族の移動制約が世帯内の送迎行動と関連しているという関係はPart 1と整合する。平日は休日に比べ送迎のオッズが3.06倍高く(p<0.001)、この点もPart 1と同方向の結果である。

Part 1と同様に、記述統計で見られた送迎を担う性別の偏りは、他の属性をコントロールすると消失する。また、就業状態、子世代との同居、世帯一人当たり自動車保有台数、空間変数はいずれも有意でなかった。

3.3 Analysis B:送迎提供者の移動負担

目的変数は、対象となる個人レベルの1日トリップ数(B-1)・1日総移動時間(B-2)・余暇滞在時間(B-3)の3つである。Analysis A で用いた説明変数でコントロールした上で、主要説明変数たる送迎提供の有無(ride provider)の目的変数との関連性を推定する。

3.3.1 Analysis B-1:1日トリップ数

目的変数は1日のトリップ数である。第1パートをロジスティック回帰、第2パートを負の二項分布とする、ハードル負の二項モデルを用いて推計する。推定結果は表 3.3のとおりである。

tbl12_z <- .hurdle_tidy(h_z1_s, "zero",  vcov_hnb_zero_s)  |> .fmt_or_rows(coef_map_s)
tbl12_c <- .hurdle_tidy(h_z1_s, "count", vcov_hnb_count_s) |> .fmt_or_rows(coef_map_s)

dplyr::full_join(
  dplyr::rename(tbl12_z, `Coef.z` = `Coef.`, ORz = OR),
  dplyr::rename(tbl12_c, `Coef.c` = `Coef.`, IRR = OR),
  by = " "
) |>
  tidyr::replace_na(list(`Coef.z` = "", ORz = "", `Coef.c` = "", IRR = "")) |>
  dplyr::arrange(match(` `, unname(coef_map_s))) |>
  dplyr::bind_rows(dplyr::tibble(
    ` ` = "N",
    `Coef.z` = format(length(h_z1_s$y),  big.mark = ","),
    ORz = "",
    `Coef.c` = format(sum(h_z1_s$y > 0), big.mark = ","),
    IRR = ""
  )) |>
  kbl(col.names = c("", "Coef.", "OR", "Coef.", "IRR"), escape = FALSE,
      caption = "Analysis B-1 — Trip count: Hurdle negative binomial model (Part 2)") |>
  kable_styling(bootstrap_options = c("striped", "condensed"), font_size = 10) |>
  add_header_above(c(" " = 1, "Zero part: Pr(trips > 0)" = 2,
                     "Count part: E(trips | trips > 0)" = 2)) |>
  footnote(
    general           = "Note: Hurdle negative binomial model. Zero part: logistic regression for Pr(trips > 0); ride provider excluded from zero part because ride provision mechanically implies trips > 0. Count part: zero-truncated negative binomial for E(trips | trips > 0); IRR = incidence rate ratio (exponentiated coefficient). OR = odds ratio. Clustered SEs (by household) in parentheses. <sup>*</sup>p < 0.05; <sup>**</sup>p < 0.01; <sup>***</sup>p < 0.001.",
    general_title     = "",
    footnote_as_chunk = TRUE,
    escape            = FALSE
  )
Table 3.3: Analysis B-1 — Trip count: Hurdle negative binomial model (Part 2)
Zero part: Pr(trips > 0)
Count part: E(trips | trips > 0)
Coef. OR Coef. IRR
Ride provider 0.357***
(0.060)
1.43
Age 0.534***
(0.015)
1.71 0.096***
(0.004)
1.10
Age\(^2\) -0.004***
(0.000)
1.00 -0.001***
(0.000)
1.00
Female -0.184
(0.107)
0.83 -0.106***
(0.031)
0.90
Weekday 0.487***
(0.100)
1.63 0.135***
(0.027)
1.14
Employed 0.416**
(0.154)
1.52 0.067
(0.036)
1.07
Spouse: non-driving 0.082
(0.115)
1.08 -0.008
(0.031)
0.99
Child generation in hh -0.371***
(0.100)
0.69 -0.057*
(0.028)
0.94
Cars per household member 0.262
(0.208)
1.30 0.061
(0.048)
1.06
log(Pop. density) 0.237
(0.149)
1.27 0.078
(0.042)
1.08
log1p(Daily facilities) -0.013
(0.117)
0.99 -0.040
(0.031)
0.96
log(Dist. to nearest station) -0.071
(0.068)
0.93 -0.010
(0.018)
0.99
log(Dist. to nearest bus stop) 0.036
(0.067)
1.04 0.008
(0.019)
1.01
N 2,430 1,763
Note: Hurdle negative binomial model. Zero part: logistic regression for Pr(trips > 0); ride provider excluded from zero part because ride provision mechanically implies trips > 0. Count part: zero-truncated negative binomial for E(trips | trips > 0); IRR = incidence rate ratio (exponentiated coefficient). OR = odds ratio. Clustered SEs (by household) in parentheses. p < 0.05; p < 0.01; p < 0.001.

ゼロパートでは、平日(OR=1.63、p<0.001)、就業(OR=1.52、p<0.01)が外出確率を高めた一方、子世代との同居(OR=0.69、p<0.001)は外出確率を有意に抑制した。子世代が同居する場合、成人した子どもが移動を担うことで高齢ドライバー自身の外出必要性が低下する可能性が考えられる。配偶者の免許保有状況および世帯員1人あたり自動車台数はゼロパートでは有意でなかった。

カウントパートでは、送迎提供者のトリップ数は送迎を行わないドライバーの約1.4倍であった(IRR=1.43、p<0.001)。一度でも外出した人に限定すると、女性はトリップ数が比較的少なく(IRR=0.90、p<0.001)、平日は多い傾向を示した(IRR=1.14、p<0.001)。配偶者の免許保有状況はカウントパートでも非有意であった。

3.3.2 Analysis B-2:1日総移動時間

目的変数は1日の総移動時間(分)である。第1パートをロジスティック回帰、第2パートをGamma GLM(対数リンク)とする、2パートモデルを用いて推計する。推定結果は表 3.4のとおりである。

tbl13_p1 <- .glm_tidy(tt_p1_z1_s, vcov_tt_p1_z1_s) |> .fmt_or_rows(coef_map_s)
tbl13_p2 <- .glm_tidy(tt_p2_z1_s, vcov_tt_p2_z1_s) |> .fmt_or_rows(coef_map_s)

dplyr::full_join(
  dplyr::rename(tbl13_p1, `Coef.1` = `Coef.`, OR1   = OR),
  dplyr::rename(tbl13_p2, `Coef.2` = `Coef.`, Ratio = OR),
  by = " "
) |>
  tidyr::replace_na(list(`Coef.1` = "", OR1 = "", `Coef.2` = "", Ratio = "")) |>
  dplyr::arrange(match(` `, unname(coef_map_s))) |>
  dplyr::bind_rows(
    dplyr::tibble(` ` = "N",
                  `Coef.1` = format(nobs(tt_p1_z1_s), big.mark = ","), OR1 = "",
                  `Coef.2` = format(nobs(tt_p2_z1_s), big.mark = ","), Ratio = ""),
    dplyr::tibble(` ` = "AIC",
                  `Coef.1` = formatC(AIC(tt_p1_z1_s), digits = 1, format = "f"), OR1 = "",
                  `Coef.2` = formatC(AIC(tt_p2_z1_s), digits = 1, format = "f"), Ratio = "")
  ) |>
  kbl(col.names = c("", "Coef.", "OR", "Coef.", "Ratio"), escape = FALSE,
      caption = "Analysis B-2 — Travel time: Two-part model (Part 2)") |>
  kable_styling(bootstrap_options = c("striped", "condensed"), font_size = 10) |>
  add_header_above(c(" " = 1, "Part 1: Pr(y > 0)" = 2, "Part 2: E(y | y > 0)" = 2)) |>
  footnote(
    general           = "Note: Two-part model. Part 1: logistic regression for Pr(travel time > 0); ride provider excluded from Part 1 because ride provision mechanically implies travel time > 0. OR = odds ratio. Part 2: GLM Gamma with log link estimated on positive subsample; Ratio = exp(coef), i.e., multiplicative effect on mean travel time. Clustered SEs (by household) in parentheses. <sup>*</sup>p < 0.05; <sup>**</sup>p < 0.01; <sup>***</sup>p < 0.001.",
    general_title     = "",
    footnote_as_chunk = TRUE,
    escape            = FALSE
  )
Table 3.4: Analysis B-2 — Travel time: Two-part model (Part 2)
Part 1: Pr(y > 0)
Part 2: E(y | y > 0)
Coef. OR Coef. Ratio
Ride provider 0.134
(0.093)
1.14
Age 0.508
(0.476)
1.66 0.346
(0.267)
1.41
Age\(^2\) -0.003
(0.003)
1.00 -0.002
(0.002)
1.00
Female -0.215*
(0.102)
0.81 -0.132*
(0.063)
0.88
Weekday 0.465***
(0.097)
1.59 0.060
(0.058)
1.06
Employed 0.416**
(0.146)
1.52 -0.005
(0.077)
1.00
Spouse: non-driving 0.059
(0.110)
1.06 0.030
(0.066)
1.03
Child generation in hh -0.266**
(0.098)
0.77 -0.050
(0.060)
0.95
Cars per household member 0.135
(0.202)
1.14 0.102
(0.139)
1.11
log(Pop. density) 0.134
(0.145)
1.14 0.094
(0.082)
1.10
log1p(Daily facilities) 0.057
(0.114)
1.06 -0.045
(0.062)
0.96
log(Dist. to nearest station) -0.071
(0.068)
0.93 -0.006
(0.034)
0.99
log(Dist. to nearest bus stop) 0.069
(0.064)
1.07 0.009
(0.037)
1.01
N 2,430 1,669
AIC 2944.8 16987.5
Note: Two-part model. Part 1: logistic regression for Pr(travel time > 0); ride provider excluded from Part 1 because ride provision mechanically implies travel time > 0. OR = odds ratio. Part 2: GLM Gamma with log link estimated on positive subsample; Ratio = exp(coef), i.e., multiplicative effect on mean travel time. Clustered SEs (by household) in parentheses. p < 0.05; p < 0.01; p < 0.001.

第1パートでは、平日(OR=1.59、p<0.001)、就業(OR=1.52、p<0.01)が移動時間の発生と正の関連を示し、子世代との同居(OR=0.77、p<0.01)および女性(OR=0.81、p<0.05)は抑制効果を持った。配偶者の免許保有状況は第1パートでは有意でなかった。B-1のゼロパートと概ね整合する結果であり、外出の有無と移動時間の発生を規定する要因は共通している可能性がある。

第2パートでは、女性の移動時間が男性に比べ約12%短いこと以外(Ratio=0.88、p<0.05)、有意な変数は確認されなかった。送迎提供のRatioは1.14であるが統計的には有意でなく、Part 1における有意な効果と対照的である。これは、送迎によってトリップ数は増える一方で、より近場の目的地に行くなどして総移動時間を抑えているという行動パターンが存在している可能性を示唆する。

3.3.3 Analysis B-3:余暇滞在時間

目的変数は総余暇滞在時間(分)である。第1パートをロジスティック回帰、第2パートをGamma GLM(対数リンク)とする、2パートモデルを用いて推計する。推定結果は表 3.5のとおりである。

tbl15_p1 <- .glm_tidy(lp1_z1_s, vcov_lp1_z1_s) |> .fmt_or_rows(coef_map_s)
tbl15_p2 <- .glm_tidy(lp2_z1_s, vcov_lp2_z1_s) |> .fmt_or_rows(coef_map_s)

dplyr::full_join(
  dplyr::rename(tbl15_p1, `Coef.1` = `Coef.`, OR1   = OR),
  dplyr::rename(tbl15_p2, `Coef.2` = `Coef.`, Ratio = OR),
  by = " "
) |>
  tidyr::replace_na(list(`Coef.1` = "", OR1 = "", `Coef.2` = "", Ratio = "")) |>
  dplyr::arrange(match(` `, unname(coef_map_s))) |>
  dplyr::bind_rows(
    dplyr::tibble(` ` = "N",
                  `Coef.1` = format(nobs(lp1_z1_s), big.mark = ","), OR1 = "",
                  `Coef.2` = format(nobs(lp2_z1_s), big.mark = ","), Ratio = ""),
    dplyr::tibble(` ` = "AIC",
                  `Coef.1` = formatC(AIC(lp1_z1_s), digits = 1, format = "f"), OR1 = "",
                  `Coef.2` = formatC(AIC(lp2_z1_s), digits = 1, format = "f"), Ratio = "")
  ) |>
  kbl(col.names = c("", "Coef.", "OR", "Coef.", "Ratio"), escape = FALSE,
      caption = "Analysis B-3 — Leisure dwell time: Two-part model (Part 2)") |>
  kable_styling(bootstrap_options = c("striped", "condensed"), font_size = 10) |>
  add_header_above(c(" " = 1, "Part 1: Pr(y > 0)" = 2, "Part 2: E(y | y > 0)" = 2)) |>
  footnote(
    general           = "Note: Two-part model. Part 1: logistic regression for Pr(leisure dwell > 0); OR = odds ratio. Part 2: GLM Gamma with log link estimated on positive subsample; Ratio = exp(coef), i.e., multiplicative effect on mean leisure dwell time. Clustered SEs (by household) in parentheses. <sup>*</sup>p < 0.05; <sup>**</sup>p < 0.01; <sup>***</sup>p < 0.001.",
    general_title     = "",
    footnote_as_chunk = TRUE,
    escape            = FALSE
  )
Table 3.5: Analysis B-3 — Leisure dwell time: Two-part model (Part 2)
Part 1: Pr(y > 0)
Part 2: E(y | y > 0)
Coef. OR Coef. Ratio
Ride provider 0.508
(0.271)
1.66 -0.545**
(0.206)
0.58
Age -0.245
(0.596)
0.78 0.594
(0.360)
1.81
Age\(^2\) 0.001
(0.004)
1.00 -0.004
(0.002)
1.00
Female -0.080
(0.109)
0.92 -0.142
(0.073)
0.87
Weekday 0.136
(0.110)
1.15 -0.080
(0.068)
0.92
Employed -0.040
(0.155)
0.96 -0.165
(0.097)
0.85
Spouse: non-driving -0.288*
(0.121)
0.75 0.014
(0.080)
1.01
Child generation in hh -0.201
(0.113)
0.82 -0.167*
(0.070)
0.85
Cars per household member -0.124
(0.241)
0.88 -0.066
(0.149)
0.94
log(Pop. density) 0.465*
(0.192)
1.59 0.030
(0.114)
1.03
log1p(Daily facilities) -0.222
(0.133)
0.80 0.016
(0.089)
1.02
log(Dist. to nearest station) -0.036
(0.076)
0.96 -0.025
(0.044)
0.97
log(Dist. to nearest bus stop) -0.054
(0.072)
0.95 0.010
(0.054)
1.01
N 2,430 516
AIC 2486.2 6232.7
Note: Two-part model. Part 1: logistic regression for Pr(leisure dwell > 0); OR = odds ratio. Part 2: GLM Gamma with log link estimated on positive subsample; Ratio = exp(coef), i.e., multiplicative effect on mean leisure dwell time. Clustered SEs (by household) in parentheses. p < 0.05; p < 0.01; p < 0.001.

第1パートでは、有意な変数は確認されなかった。送迎提供者のオッズ比は1.66と正方向であるが統計的に有意でなく、Part 1で顕著だった平日効果もPart 2では観察されなかった。就業者が少なく日常スケジュールの制約が小さい高齢者サンプルでは、余暇外出の有無が曜日や送迎提供によって左右されにくいと考えられる。

第2パートでは、送迎提供者の余暇滞在時間は送迎を提供しないドライバーより約42%短かった(Ratio=0.58、p<0.01)。この結果はPart 1のB-3と方向・規模ともに一致しており、両サンプルにわたって送迎提供が余暇時間の圧縮と関連していることが示唆される。ただし、余暇外出をした送迎提供者は極めて少なく(n = 20)、推定値の解釈には注意が必要である。


4 Conclusion

本分析は、山形都市圏パーソントリップ調査を用いて、家族内送迎の担い手属性と移動負担を定量的に示した。本分析によって得られた主な知見は次のとおりである。

まず、送迎提供の担い手属性に関して、性別効果は全体として限定的であった。他の属性を統制すると、送迎負担が女性に偏るという通念は必ずしも支持されず、担い手になる確率自体は性別によらないことが示唆される。また、被送迎者の移動制約(非免許保有の親・配偶者との同居)が担い手確率と強く関連しており、送迎行動が家族の移動制約によって構造的に規定されている可能性がある。

また、移動負担の分析において、最も一貫性が高かった知見は、送迎を担うドライバーの余暇滞在時間の縮減である。子世代・高齢者の双方において、送迎提供者の余暇滞在時間は有意に短く、この結果は親の送迎、配偶者の送迎の両サンプルにわたって再現された。送迎の役割を担うドライバーが余暇活動を圧縮するという行動パターンは、ケアに伴う時間貧困が顕在化する一形態として解釈できる。

ただし、本分析はあくまで回帰的な手法によるものであり、因果関係を直接に示すものではないことに留意されたい。なお、本分析ではあくまで送迎のための移動に焦点を当てるものであり、送り迎えのための待機時間や付き添い先での滞在時間はスコープ外である。したがって、送迎に関するケアの負担という意味では過小評価の可能性があることにも留意されたい。