# Python 示例:使用statsmodels计算VIF
import pandas as pd
from statsmodels.stats.outliers_influence import variance_inflation_factor
def calculate_vif(df):
vif_data = pd.DataFrame()
vif_data["Variable"] = df.columns
vif_data["VIF"] = [variance_inflation_factor(df.values, i) for i in range(df.shape[1])]
return vif_data
# 假设 mediators 是包含中介变量的数据框
vif_results = calculate_vif(mediators)
print(vif_results)
4. 不同方法对中介效应推断的影响
graph TD
A[原始中介变量] --> B{是否存在高度共线性?}
B -- 是 --> C[应用PCA/PLS降维]
B -- 否 --> D[直接拟合SEM或回归模型]
C --> E[提取主成分作为新中介]
E --> F[估计标准化间接效应]
F --> G[反向解释原始变量贡献]
D --> H[报告直接与间接效应]
H --> I[Bootstrap检验显著性]