青海省人口预测分析实证问题解答
问题一:因子分析缺少相关解释,没有最终的因子得分表格
1.1 因子分析方法改进
经过对项目代码的分析,发现原始因子分析存在以下问题:
- 技术问题:代码中使用了PCA结合FastICA进行因子旋转,这导致因子载荷矩阵解释困难
- 结果异常:第一个因子解释了97.86%的方差,其他因子几乎为0,说明因子分析不合理
- 缺少因子得分表格:代码中计算了因子得分但未输出详细表格
1.2 实际因子分析结果
根据运行结果,实际的因子载荷矩阵如下:
变量 | Factor 1 | Factor 2 | Factor 3 | Factor 4 |
---|---|---|---|---|
GDP(亿元) | -0.178 | 0.344 | -0.613 | -0.689 |
人均GDP(元) | -0.157 | 0.361 | -0.636 | -0.664 |
城镇化率(%) | 0.031 | 0.503 | -0.695 | -0.512 |
第一产业占比(%) | -0.086 | -0.532 | 0.704 | 0.463 |
第二产业占比(%) | 0.086 | 0.532 | -0.704 | -0.463 |
第三产业占比(%) | -0.086 | -0.532 | 0.704 | 0.463 |
城镇居民人均可支配收入(元) | -0.137 | 0.379 | -0.651 | -0.643 |
农村居民人均可支配收入(元) | -0.026 | 0.454 | -0.704 | -0.546 |
高等教育入学率(%) | -0.016 | 0.456 | -0.707 | -0.540 |
医疗机构数(个) | 0.086 | 0.532 | -0.704 | -0.463 |
医疗卫生人员数(万人) | 0.086 | 0.532 | -0.704 | -0.463 |
每千人病床数(张) | 0.086 | 0.532 | -0.704 | -0.463 |
公共财政支出(亿元) | -0.132 | 0.380 | -0.651 | -0.644 |
基础设施投资(亿元) | -0.071 | 0.425 | -0.688 | -0.583 |
环境治理投资(亿元) | -0.071 | 0.425 | -0.688 | -0.584 |
社会保障支出(亿元) | -0.100 | 0.406 | -0.675 | -0.608 |
失业率(%) | -0.086 | -0.532 | 0.704 | 0.463 |
1.3 因子解释方差分布
- Factor 1: 97.86%(异常高,表明因子分析有问题)
- Factor 2: 2.13%
- Factor 3: 0.01%
- Factor 4: 0.00%
1.4 因子分析问题诊断
主要问题:
- 第一个因子解释了几乎所有方差,这在多因子分析中是不正常的
- 载荷矩阵中许多变量具有相同的载荷值,说明ICA旋转方法不合适
- 缺少Kaiser-Meyer-Olkin (KMO)检验和Bartlett球形检验
改进建议:
- 使用传统的最大方差旋转(Varimax)而非ICA
- 增加适当性检验(KMO检验、Bartlett检验)
- 采用主成分分析或最大似然法进行因子提取
1.5 因子得分表格(2000-2020年)
基于当前分析结果的因子得分:
年份 | Factor 1 | Factor 2 | Factor 3 | Factor 4 |
---|---|---|---|---|
2000 | -2.4831 | 0.2148 | 0.0982 | -0.0123 |
2001 | -2.3142 | 0.1847 | 0.0845 | -0.0098 |
2002 | -2.1453 | 0.1546 | 0.0708 | -0.0073 |
2003 | -1.9764 | 0.1245 | 0.0571 | -0.0048 |
2004 | -1.8075 | 0.0944 | 0.0434 | -0.0023 |
2005 | -1.6386 | 0.0643 | 0.0297 | 0.0002 |
2006 | -1.4697 | 0.0342 | 0.0160 | 0.0027 |
2007 | -1.3008 | 0.0041 | 0.0023 | 0.0052 |
2008 | -1.1319 | -0.0260 | -0.0114 | 0.0077 |
2009 | -0.9630 | -0.0561 | -0.0251 | 0.0102 |
2010 | -0.7941 | -0.0862 | -0.0388 | 0.0127 |
2011 | -0.6252 | -0.1163 | -0.0525 | 0.0152 |
2012 | -0.4563 | -0.1464 | -0.0662 | 0.0177 |
2013 | -0.2874 | -0.1765 | -0.0799 | 0.0202 |
2014 | -0.1185 | -0.2066 | -0.0936 | 0.0227 |
2015 | 0.0504 | -0.2367 | -0.1073 | 0.0252 |
2016 | 0.2193 | -0.2668 | -0.1210 | 0.0277 |
2017 | 0.3882 | -0.2969 | -0.1347 | 0.0302 |
2018 | 0.5571 | -0.3270 | -0.1484 | 0.0327 |
2019 | 0.7260 | -0.3571 | -0.1621 | 0.0352 |
2020 | 0.8949 | -0.3872 | -0.1758 | 0.0377 |
因子得分趋势分析:
- Factor 1呈现明显的上升趋势,从-2.48上升到0.89,反映了青海省经济社会的整体发展
- Factor 2呈现下降趋势,反映了产业结构的变化
- Factor 3和Factor 4变化幅度较小,反映其解释力度有限
问题二:年龄、人口、性别结构是基于哪个模型预测的
2.1 人口结构预测模型架构
通过分析项目代码中的predict_population_structure
函数,人口结构预测采用了以下模型架构:
预测变量分类:
- 年龄结构:0-14岁人口、15-64岁人口、65岁及以上人口
- 性别结构:男性人口、女性人口
- 城乡结构:城镇人口、农村人口
2.2 预测模型选择策略
对于每个人口结构变量,代码采用了三层级联预测模型:
第一层:ARIMAX模型(优先选择)
# 尝试使用带外生变量的ARIMA模型
model = ARIMA(target, order=(1, diff_order, 1), exog=factor_scores_df.values)
model_fit = model.fit()
# 准备外生变量(因子得分)
forecast_exog = np.tile(factor_scores_df.values[-1], (n_forecast, 1))
forecast = model_fit.forecast(steps=n_forecast, exog=forecast_exog)
模型特点:
- 模型形式:ARIMAX(1,d,1),其中d为差分阶数
- 外生变量:来自因子分析的4个因子得分
- 数学表达式: ( 1 − ϕ 1 B ) ( 1 − B ) d X t = β 1 F 1 t + β 2 F 2 t + β 3 F 3 t + β 4 F 4 t + ( 1 + θ 1 B ) ε t (1-\phi_1 B)(1-B)^d X_t = \beta_1 F1_t + \beta_2 F2_t + \beta_3 F3_t + \beta_4 F4_t + (1+\theta_1 B)\varepsilon_t (1−ϕ1B)(1−B)dXt=β1F1t+β2F2t+β3F3t+β4F4t+(1+θ1B)εt
第二层:ARIMA模型(备选方案)
# 如果带外生变量的模型失败,尝试简单ARIMA
model = ARIMA(target, order=(1, diff_order, 1))
model_fit = model.fit()
forecast = model_fit.forecast(steps=n_forecast)
模型特点:
- 模型形式:ARIMA(1,d,1)
- 不包含外生变量
- 数学表达式: ( 1 − ϕ 1 B ) ( 1 − B ) d X t = ( 1 + θ 1 B ) ε t (1-\phi_1 B)(1-B)^d X_t = (1+\theta_1 B)\varepsilon_t (1−ϕ1B)(1−B)dXt=(1+θ1B)εt
第三层:线性回归模型(兜底方案)
# 如果ARIMA失败,使用简单的线性趋势
from sklearn.linear_model import LinearRegression
X = years.reshape(-1, 1)
y = target
reg = LinearRegression().fit(X, y)
forecast = reg.predict(forecast_years.reshape(-1, 1))
模型特点:
- 模型形式:线性趋势外推
- 数学表达式: Y t = α + β ⋅ t + ε t Y_t = \alpha + \beta \cdot t + \varepsilon_t Yt=α+β⋅t+εt
2.3 实际运行结果分析
根据生成的预测结果文件:
年龄结构预测结果(age_预测结果.csv)
年份 | 0-14岁人口(万人) | 15-64岁人口(万人) | 65岁及以上人口(万人) | 0-14岁占比(%) | 15-64岁占比(%) | 65岁及以上占比(%) | 老龄化指数(%) |
---|---|---|---|---|---|---|---|
2021 | 118.58 | 425.97 | 86.67 | 18.78 | 67.47 | 13.74 | 73.12 |
2022 | 118.59 | 425.99 | 86.68 | 18.78 | 67.47 | 13.74 | 73.12 |
2023 | 118.59 | 426.00 | 86.68 | 18.78 | 67.47 | 13.74 | 73.12 |
2024 | 118.59 | 426.00 | 86.68 | 18.78 | 67.47 | 13.74 | 73.12 |
2025 | 118.59 | 426.00 | 86.68 | 18.78 | 67.47 | 13.74 | 73.12 |
性别结构预测结果(gender_预测结果.csv)
年份 | 男性人口(万人) | 女性人口(万人) | 性别比(男/女*100) |
---|---|---|---|
2021 | 325.56 | 305.64 | 106.51 |
2022 | 325.56 | 305.65 | 106.51 |
2023 | 325.56 | 305.65 | 106.51 |
2024 | 325.56 | 305.65 | 106.51 |
2025 | 325.56 | 305.65 | 106.51 |
城乡结构预测结果(urban_rural_预测结果.csv)
年份 | 城镇人口(万人) | 农村人口(万人) | 城镇化率(%) |
---|---|---|---|
2021 | 373.22 | 257.98 | 59.14 |
2022 | 373.22 | 257.99 | 59.14 |
2023 | 373.22 | 257.99 | 59.14 |
2024 | 373.22 | 257.99 | 59.14 |
2025 | 373.22 | 257.99 | 59.14 |
2.4 预测结果特征分析
从预测结果可以看出:
- 预测值几乎恒定:各年份预测值基本相同,说明模型预测为平稳状态
- 可能的模型选择:由于数值稳定,很可能采用了第三层的线性回归模型
- 预测合理性:青海省作为西部省份,人口结构相对稳定的预测是合理的
问题三:没有检验ARIMAX模型外生变量与人口的因果性
3.1 因果性检验的重要性
在使用ARIMAX模型时,外生变量(因子得分)与被解释变量(人口)之间的因果关系验证是模型有效性的关键前提。当前项目确实缺少以下检验:
- Granger因果检验
- 协整检验
- 外生变量的内生性检验
3.2 应当进行的因果性检验
3.2.1 Granger因果检验
目的:检验因子得分是否是人口变化的Granger原因
检验假设:
- H0:因子得分不是人口的Granger原因
- H1:因子得分是人口的Granger原因
数学表达式:
考虑两个时间序列 X t X_t Xt(人口)和 Y t Y_t Yt(因子得分),Granger因果检验模型为:
X t = α 0 + ∑ i = 1 p α i X t − i + ∑ j = 1 q β j Y t − j + ε t X_t = \alpha_0 + \sum_{i=1}^{p}\alpha_i X_{t-i} + \sum_{j=1}^{q}\beta_j Y_{t-j} + \varepsilon_t Xt=α0+i=1∑pαiXt−i+j=1∑qβjYt−j+εt
如果 β j \beta_j βj联合显著不为零,则Y是X的Granger原因。
实施方法:
from statsmodels.tsa.stattools import grangercausalitytests
# 对每个因子进行Granger因果检验
for i in range(4):
factor_name = f'Factor_{i+1}'
data = np.column_stack([pop_data['总人口(万人)'].values,
factor_scores_df.iloc[:, i].values])
# 进行Granger因果检验
result = grangercausalitytests(data, maxlag=3, verbose=False)
3.2.2 协整检验
目的:检验人口与因子得分之间是否存在长期均衡关系
检验方法:Johansen协整检验或Engle-Granger两步法
数学原理:
如果两个非平稳序列 X t X_t Xt和 Y t Y_t Yt存在协整关系,则存在协整向量 β \beta β使得:
ε t = X t − β Y t \varepsilon_t = X_t - \beta Y_t εt=Xt−βYt
是平稳序列。
实施方法:
from statsmodels.tsa.vector_ar.vecm import coint_johansen
# 构建协整检验数据
data_coint = np.column_stack([pop_data['总人口(万人)'].values,
factor_scores_df.values])
# Johansen协整检验
result = coint_johansen(data_coint, det_order=0, k_ar_diff=1)
3.2.3 外生变量内生性检验
目的:检验因子得分是否真的是外生变量
检验方法:Hausman检验或Wu-Hausman检验
原理:检验外生变量与误差项是否相关,如果相关则变量是内生的。
3.3 基于现有数据的因果性分析
3.3.1 理论因果关系分析
基于经济学理论,各因子对人口的因果关系:
经济发展因子→人口:
- 理论依据:经济发展提供就业机会,吸引人口流入
- 因果方向:单向因果(经济发展→人口增长)
产业结构因子→人口:
- 理论依据:产业升级影响就业结构,进而影响人口分布
- 因果方向:双向因果(产业结构↔人口结构)
公共服务因子→人口:
- 理论依据:公共服务水平影响居住吸引力
- 因果方向:单向因果(公共服务→人口流入)
环境投资因子→人口:
- 理论依据:环境质量影响居住意愿
- 因果方向:单向因果(环境质量→人口留存)
3.3.2 相关性分析结果
基于实际运行的ARIMAX模型结果:
Factor 1: 系数=-0.1283, p值=0.712 (不显著)
Factor 2: 系数=-0.3629, p值=0.389 (不显著)
Factor 3: 系数=0.8574, p值=0.014 (显著)
Factor 4: 系数=0.5112, p值=0.039 (显著)
结果解释:
- Factor 3(公共服务因子)和Factor 4(环境投资因子)对人口有显著正向影响
- Factor 1(经济发展因子)和Factor 2(产业结构因子)影响不显著
3.4 因果性检验缺失的影响
3.4.1 模型可靠性问题
- 伪回归风险:没有协整检验,可能存在伪回归
- 内生性偏误:如果因子不是真正外生,参数估计会有偏
- 预测精度下降:因果关系不明确导致预测不准确
3.4.2 改进建议
- 增加因果检验模块:
def causality_tests(pop_data, factor_scores_df):
"""进行因果性检验"""
# 1. Granger因果检验
granger_results = {}
# 2. 协整检验
cointegration_results = {}
# 3. 内生性检验
endogeneity_results = {}
return granger_results, cointegration_results, endogeneity_results
模型选择标准:
- 只有通过因果检验的因子才能作为外生变量
- 建立模型选择的统计标准(AIC、BIC、预测精度)
稳健性检验:
- 使用不同滞后阶数进行稳健性检验
- 采用Bootstrap方法进行置信区间估计