ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

典型相关分析(CCA)在数学建模中的核心应用与Python实现

典型相关分析(CCA)在数学建模中的核心应用与Python实现 1. 项目概述典型相关分析在数学建模中的核心价值典型相关分析英文叫Canonical Correlation Analysis我们建模圈子里习惯简称CCA。这玩意儿在数学建模比赛里尤其是在处理那种“两组变量之间关系”的问题时出场率相当高但很多新手拿到题目一看就懵不知道从哪下手。简单来说它要解决的核心问题是你有两组变量比如一组是学生的“学习行为”每天学习时长、刷题数量、课堂互动次数另一组是“学业表现”期末成绩、项目得分、综合评级。你肯定想知道这两组变量之间到底是怎么互相影响的是不是某种特定的学习行为组合最能预测某一种学业表现组合典型相关分析干的就是这个——它不是看单个变量和单个变量之间的相关那是普通相关分析而是找出两组变量各自的线性组合让这两个组合之间的相关性达到最大。我第一次在国赛里用上CCA是处理一个经济预测题一组是宏观经济指标另一组是金融市场波动指标题目要求分析宏观政策对市场的传导机制。那时候就发现这方法思路清晰结果解释性强论文里放上几张典型载荷图评委一看就明白你的分析逻辑。对于参加建模比赛的同学无论是美赛、国赛还是亚太杯掌握CCA意味着你手里多了一把处理复杂变量关系问题的“手术刀”特别适合社会科学、经济管理、生物医学、环境科学这些领域里需要探究两个变量集之间深层关联的题目。它帮你从一堆杂乱的数据中提炼出最核心的关联模式把论文的分析深度立刻提升一个档次。2. 典型相关分析的核心思想与数学模型拆解2.1 从线性回归到典型相关思想的跃迁要理解CCA最好从大家更熟悉的线性回归说起。线性回归是找一个因变量Y和一组自变量X之间的线性关系。但CCA面对的是两个“阵营”的变量X组和Y组它不满足于找出X预测Y的关系而是探寻X和Y之间“手拉手、共进退”的那种协同变化模式。它的目标很优雅分别为X组和Y组构造一个综合指标即典型变量让这两个综合指标之间的相关系数即典型相关系数尽可能大。举个例子在“城市发展与生态环境”的题目中X组可能是经济发展变量GDP、固定资产投资、第三产业占比Y组是环境指标PM2.5年均浓度、污水处理率、绿地覆盖率。普通相关分析只能看GDP和PM2.5是否相关很片面。CCA则可以发现也许“高投资驱动的粗放型增长模式”这个X组的综合指标与“大气污染加剧且绿地建设滞后”这个Y组的综合指标之间存在最强的共变关系。这个发现比单纯的相关性要有力得多。数学上假设第一组变量有p个记为X (X1, X2, ..., Xp)‘第二组变量有q个记为Y (Y1, Y2, ..., Yq)’。我们要找的是两组线性组合 U a1X1 a2X2 ... apXp a‘XV b1Y1 b2Y2 ... bqYq b‘Y其中a和b是待求的权重系数向量。CCA的目标就是找到a和b使得U和V的相关系数ρ corr(U, V)达到最大。这个最大的ρ就是第一对典型变量之间的第一典型相关系数。注意这里的数据通常需要标准化处理均值为0标准差为1以消除量纲影响让系数更具可比性。这是实操中必不可少的第一步但很多初学者会忘记导致结果难以解释。2.2 模型求解与典型变量的提取找到了第一对典型变量(U1, V1)和最大相关系数ρ1之后事情还没完。就像主成分分析可以提取多个主成分一样CCA也可以提取多对典型变量。第二对典型变量(U2, V2)需要满足它们与第一对典型变量不相关即cov(U1, U2)0, cov(V1, V2)0并且在满足此约束下使U2和V2的相关系数ρ2达到最大。以此类推最多可以提取min(p, q)对典型变量。求解这些权重向量a和b在数学上转化为一个特征值问题。具体来说需要计算两组变量内部及之间的协方差矩阵。设ΣXX为X组的协方差矩阵ΣYY为Y组的协方差矩阵ΣXY为X与Y之间的互协方差矩阵。那么典型相关系数的平方ρ²就是矩阵M ΣXX^(-1/2) ΣXY ΣYY^(-1) ΣYX ΣXX^(-1/2) 的特征值而对应的特征向量经过变换就能得到权重系数a。类似地从另一个矩阵也能得到b。在实际编程中比如用MATLAB或Python我们不需要手动推导这些矩阵运算直接调用成熟的算法包即可。但理解这个数学本质非常重要它能帮助你在结果出现异常时知道问题可能出在协方差矩阵计算如变量存在完全共线性还是特征值求解上。2.3 结果解读典型载荷、交叉载荷与冗余分析算出结果不是终点读懂结果才是关键。CCA的输出主要看三样东西典型相关系数就是ρ1, ρ2, ...。它衡量了每对典型变量之间关联的强度。通常只有前几对是显著的需要做统计检验如Bartlett的卡方近似检验。典型权重即系数向量a和b。它表示原始变量在构成其所在组的典型变量时的相对贡献。但要注意当原始变量之间存在较强相关性时典型权重可能不稳定解释时要谨慎。典型载荷这是更常用、更稳定的解释依据。它是原始变量与本组典型变量之间的相关系数。比如X1与U1的相关系数很高说明X1在U1所代表的综合模式中扮演重要角色。交叉载荷原始变量与另一组典型变量之间的相关系数。比如X1与V1的相关系数这能直接显示X组的变量对Y组典型模式的直接影响解释起来非常直观。冗余分析这是一个极其重要的指标却常被忽略。它回答一个问题一组变量的典型变量能解释另一组变量总变异的比例是多少例如X组的典型变量U1能解释Y组总方差的百分比。有时候典型相关系数很高但冗余度很低说明虽然找到的关联模式很强但其代表性或预测能力有限。在论文中你应该用表格清晰列出前几对显著典型变量的典型相关系数、p值并用文字结合典型载荷/交叉载荷表阐述每一对典型变量所代表的实际意义。例如“第一对典型变量显示以‘工业能耗’和‘汽车保有量’为主导的经济发展模式U1与以‘PM2.5浓度’和‘臭氧超标天数’为特征的复合大气污染状况V1具有显著强相关ρ10.87, p0.01”。3. 典型相关分析的完整实现流程与代码详解3.1 环境准备与数据预处理工欲善其事必先利其器。实现CCAMATLAB和Python是两大主流工具各有优劣。MATLAB的canoncorr函数非常成熟稳定文档齐全Python则在scikit-learn和statsmodels等库中提供了支持更利于集成到复杂的数据分析管道中。这里我以Python为例因为其开源和生态丰富的特点在越来越多的比赛中被接受。首先确保你的环境安装了必要的库pip install numpy pandas scikit-learn statsmodels matplotlib seaborn数据预处理是建模成功的一半对于CCA尤其如此缺失值处理CCA无法处理缺失值。必须检查并处理。对于连续变量常用均值或中位数填充对于分类变量可用众数或单独作为一个类别。如果缺失太多考虑删除该变量或样本。标准化强烈建议对连续变量进行标准化减去均值除以标准差使其均值为0方差为1。这能消除量纲影响让求得的系数具有可比性。对于分类变量需要先进行哑变量编码。正态性检验与变换虽然CCA对正态性的要求没有某些参数检验那么严格但严重的偏态或异常值会影响协方差矩阵的估计进而影响结果。可以绘制直方图、Q-Q图查看或进行Shapiro-Wilk检验。对于严重偏态的数据可尝试对数变换、平方根变换等。异常值检测使用箱线图或Z-score方法|Z| 3检测异常值。异常值会扭曲变量间的关系需要根据实际情况决定是修正、删除还是保留。变量分组根据你的研究问题清晰地将变量划分为X组和Y组。这个划分需要基于理论或研究假设不能随意。import numpy as np import pandas as pd from sklearn.preprocessing import StandardScaler import statsmodels.api as sm # 假设df是你的DataFrame包含所有变量 # 1. 划分X和Y X_vars [GDP, Investment, Service_Industry_Ratio] Y_vars [PM25, Wastewater_Treatment_Rate, Green_Coverage_Rate] X df[X_vars].copy() Y df[Y_vars].copy() # 2. 处理缺失值示例用均值填充 X X.fillna(X.mean()) Y Y.fillna(Y.mean()) # 3. 标准化 scaler StandardScaler() X_scaled scaler.fit_transform(X) Y_scaled scaler.fit_transform(Y) # 将标准化后的数据转为DataFrame方便后续查看 X_scaled pd.DataFrame(X_scaled, columnsX.columns) Y_scaled pd.DataFrame(Y_scaled, columnsY.columns)3.2 基于Python的CCA核心计算步骤我们可以使用statsmodels库中的CanonicalCorrelation类来实现。这个类提供了完整的CCA计算和检验功能。from statsmodels.multivariate.cancorr import CanonicalCorrelation # 将数据转换为数组 X_array X_scaled.values Y_array Y_scaled.values # 创建CCA对象并拟合 cca CanonicalCorrelation(X_array, Y_array) cca.fit() # 获取典型相关系数 print(典型相关系数, cca.cancorr) # 这是一个数组包含所有min(p,q)个典型相关系数 # 获取典型权重系数 # cca.x_weights 对应X组的权重系数a # cca.y_weights 对应Y组的权重系数b print(X组典型权重第一对\n, cca.x_weights[:, 0]) print(Y组典型权重第一对\n, cca.y_weights[:, 0]) # 计算典型变量得分即U和V的值 U cca.x_scores # U X * a V cca.y_scores # V Y * b # 例如第一对典型变量得分 U1 U[:, 0] V1 V[:, 0]3.3 统计显著性检验与结果可视化算出系数后不能直接就用。我们需要判断提取的典型相关系数是否在统计上显著即是否真的存在关联而非随机噪声。statsmodels提供了方便的检验方法。# 进行显著性检验Wilks Lambda, Pillais Trace 等 test_results cca.test_can_corr() print(test_results.summary()) # 通常我们最关心的是顺序检验Sequential Test # 它依次检验第k对及之后所有典型相关系数为零的原假设。 # 查看summary中的‘Wilks’ lambda’检验结果关注p值。 # 如果第一行的p值显著如0.05则说明至少第一对典型相关是显著的。 # 接着看第二行如果也显著说明第二对也显著以此类推。可视化能让你的论文和报告增色不少典型相关系数碎石图类似于主成分分析的碎石图绘制每对典型变量的相关系数帮助决定保留几对。典型载荷图在二维平面上以第一对典型变量为坐标轴将每个原始变量作为一个点其坐标就是该变量与两个典型变量的载荷相关系数。可以分别绘制X组和Y组的载荷图或者将两组变量画在同一张图上用不同颜色或形状观察变量聚集模式。典型变量得分散点图绘制第一对典型变量(U1, V1)的得分散点图可以直观看到样本在这对关联模式上的分布并检查是否有异常点。import matplotlib.pyplot as plt import seaborn as sns # 1. 碎石图 plt.figure(figsize(8,5)) plt.plot(range(1, len(cca.cancorr)1), cca.cancorr, bo-, linewidth2, markersize8) plt.xlabel(典型变量对序号) plt.ylabel(典型相关系数) plt.title(典型相关系数碎石图) plt.grid(True, linestyle--, alpha0.7) plt.show() # 2. 计算典型载荷原始变量与典型变量的相关系数 # 对于X组变量与X组典型变量U的载荷 x_loadings np.corrcoef(X_array.T, U.T)[:len(X_vars), len(X_vars):] # 对于Y组变量与Y组典型变量V的载荷 y_loadings np.corrcoef(Y_array.T, V.T)[:len(Y_vars), len(Y_vars):] # 绘制第一对典型变量的载荷图以X组为例 plt.figure(figsize(10,6)) for i, var in enumerate(X_vars): plt.arrow(0, 0, x_loadings[i, 0], x_loadings[i, 1], head_width0.03, head_length0.03, fcblue, ecblue, alpha0.6) plt.text(x_loadings[i, 0]*1.1, x_loadings[i, 1]*1.1, var, colorblue, fontsize12) # 添加参考圆 circle plt.Circle((0,0), 1, colorgray, fillFalse, linestyle--) plt.gca().add_artist(circle) plt.axhline(y0, colork, linestyle-, alpha0.2) plt.axvline(x0, colork, linestyle-, alpha0.2) plt.xlabel(与第一典型变量U1的相关系数) plt.ylabel(与第二典型变量U2的相关系数) plt.title(X组变量典型载荷图前两对) plt.axis(equal) plt.grid(True, linestyle--, alpha0.5) plt.xlim(-1.2, 1.2) plt.ylim(-1.2, 1.2) plt.show() # 3. 典型变量得分散点图 plt.figure(figsize(8,6)) plt.scatter(U[:, 0], V[:, 0], alpha0.7, edgecolorsk) plt.xlabel(第一典型变量 U1 (X组综合指标)) plt.ylabel(第一典型变量 V1 (Y组综合指标)) plt.title(第一对典型变量得分散点图) plt.grid(True, linestyle--, alpha0.5) # 可以添加样本标签如果样本数不多 # for i, txt in enumerate(df.index): # plt.annotate(txt, (U[i,0], V[i,0]), fontsize9) plt.show()3.4 冗余度计算与结果报告整合最后我们需要计算冗余度指标并将所有关键结果整理成论文所需的表格。# 计算冗余度 # 首先计算各原始变量的总方差标准化后每个变量的方差为1 # 因此X组的总方差 p (变量个数) Y组的总方差 q # X组的典型变量U解释X组自身方差的百分比这个通常不是重点 # 重点是X组的典型变量U解释Y组方差的比例以及Y组的典型变量V解释X组方差的比例。 # 我们可以通过典型载荷的平方和来近似计算或者使用更精确的公式。 # 这里介绍一种基于典型载荷平方和均值的方法一种常用近似 # 对于第k对典型变量 # X组变量被自身第k典型变量解释的方差比例 (X组变量与Uk的载荷平方和) / p # X组变量被对方第k典型变量Vk解释的方差比例 (X组变量与Vk的交叉载荷平方和) / p # 同理计算Y组的。 # 计算交叉载荷 (X变量与V典型变量的相关系数) x_cross_loadings np.corrcoef(X_array.T, V.T)[:len(X_vars), len(X_vars):] y_cross_loadings np.corrcoef(Y_array.T, U.T)[:len(Y_vars), len(Y_vars):] # 计算冗余度指标以第一对为例 k 0 # 第一对索引 # X组变量被V1解释的平均方差比例 redundancy_X_given_V1 np.mean(x_cross_loadings[:, k]**2) # Y组变量被U1解释的平均方差比例 redundancy_Y_given_U1 np.mean(y_cross_loadings[:, k]**2) print(f第一典型变量V1解释X组变量的平均方差比例: {redundancy_X_given_V1:.4f}) print(f第一典型变量U1解释Y组变量的平均方差比例: {redundancy_Y_given_U1:.4f}) # 整理结果到DataFrame便于输出到论文 results_df pd.DataFrame({ 典型变量对: [f第{i1}对 for i in range(len(cca.cancorr))], 典型相关系数: cca.cancorr, Wilks‘ Lambda检验p值: test_results.pvalues, # 从test_results中提取可能需要根据实际输出调整 X组被解释方差(冗余度): [np.mean(x_cross_loadings[:, i]**2) for i in range(len(cca.cancorr))], Y组被解释方差(冗余度): [np.mean(y_cross_loadings[:, i]**2) for i in range(len(cca.cancorr))] }) print(\n典型相关分析结果汇总表) print(results_df.to_string(indexFalse))4. 数学建模实战应用从选题到论文写作的全流程4.1 赛题适配性判断与变量设计不是所有题目都适合用CCA。在拿到赛题后快速判断是否适用CCA可以看以下几点问题本质题目是否明确要求探究两组变量集之间的关系、影响或耦合机制关键词如“关联分析”、“相互作用”、“影响路径”、“耦合协调度”等。数据特征你是否拥有两组可以明确划分的变量每组变量内部有一定相关性但研究焦点是组间关系。往届案例历年优秀论文中处理类似问题用了什么方法如果看到CCA或类似的多变量分析方法可以大胆借鉴。一旦确定使用CCA变量设计就是重中之重。切忌把一堆变量不加区分地扔进去。X组和Y组的划分必须有理论或常识支撑。例如在“电商用户行为与购买力”研究中X组可以是“浏览行为”页面停留时间、点击品类数、搜索次数Y组是“购买表现”客单价、复购率、折扣敏感度。变量数量不宜过多每组3-8个为宜太多会导致结果不稳定、解释困难。优先选择代表性强的核心指标。4.2 建模过程中的关键技巧与陷阱规避在实际建模跑代码的过程中有几个坑我几乎每次带学生都会遇到陷阱一样本量不足。CCA要求足够的样本量。一个经验法则是样本数至少是变量总数的10倍最好达到20倍。如果样本少变量多结果极不可靠。解决方法要么收集更多数据要么先用主成分分析对每组变量进行降维提取少数主成分作为新的变量集再进行CCA。陷阱二多重共线性。如果一组变量内部高度相关例如GDP和财政收入会导致协方差矩阵接近奇异计算不稳定权重系数可能失真。解决方法先检查变量间的相关系数矩阵剔除相关性过高如|r|0.9的变量之一或者使用岭回归版的CCARidge CCA来增加数值稳定性。陷阱三过度解释。典型相关系数可能统计显著但实际很小比如0.3此时虽然关联存在但强度很弱实际意义不大。一定要结合冗余度来看。如果冗余度很低如10%说明找到的典型变量对解释对方变量总变异的贡献很小这个结果的价值就需要打折扣。技巧标准化与中心化。再次强调务必标准化。对于包含分类变量的情况需要先进行哑变量编码但要注意哑变量会导致变量集膨胀可能加剧共线性和样本量不足的问题需谨慎处理。技巧结果稳定性验证。可以通过自助法Bootstrap来验证典型权重和载荷的稳定性。随机重抽样多次运行CCA观察系数分布。如果系数波动很大说明结果不稳定解释时要非常小心。# 自助法Bootstrap验证示例简略框架 n_bootstraps 1000 bootstrap_weights_x [] bootstrap_cancorr [] for i in range(n_bootstraps): # 有放回地重抽样索引 indices np.random.choice(len(X_array), sizelen(X_array), replaceTrue) X_boot X_array[indices, :] Y_boot Y_array[indices, :] # 对重抽样数据运行CCA cca_boot CanonicalCorrelation(X_boot, Y_boot) cca_boot.fit() # 存储第一对典型权重和相关系数 bootstrap_weights_x.append(cca_boot.x_weights[:, 0]) bootstrap_cancorr.append(cca_boot.cancorr[0]) # 计算权重系数的置信区间 bootstrap_weights_x np.array(bootstrap_weights_x) ci_lower np.percentile(bootstrap_weights_x, 2.5, axis0) ci_upper np.percentile(bootstrap_weights_x, 97.5, axis0) print(X组第一典型权重系数的95%自助置信区间) for var, lower, upper in zip(X_vars, ci_lower, ci_upper): print(f{var}: [{lower:.3f}, {upper:.3f}])4.3 论文写作要点与图表呈现在数学建模论文中如何清晰有力地呈现CCA结果方法描述部分不要只写“我们使用了典型相关分析”。要简要说明其原理、目标探究X组与Y组变量间的整体关联并列出你划分的X组和Y组具体包含哪些变量并说明数据经过了标准化等预处理。结果分析部分表格先行制作一个清晰的表格展示前几对通常2-3对显著典型变量的典型相关系数、显著性p值、累积方差解释率或冗余度。这是核心结果。图文并茂务必放入典型载荷图。在图中用箭头或点表示变量解释哪些变量对当前典型变量贡献大靠近坐标轴端点并据此为每一对典型变量命名如“粗放型发展-污染模式”让分析立刻生动起来。文字解读结合载荷图和交叉载荷详细阐述每一对显著典型变量的实际含义。例如“在第一对典型变量中U1主要由‘工业能耗’和‘固定资产投资’正向驱动而V1则与‘PM2.5’高度正相关、与‘绿地覆盖率’高度负相关。这表明以高能耗投资为动力的发展模式与大气污染加剧和生态空间挤占密切相关。”讨论冗余度指出典型变量对对方变量集的解释能力冗余度客观评价模型的有效性。模型检验部分汇报显著性检验结果如Wilks‘ Lambda检验说明保留了几对显著的典型变量。如果做了自助法验证可以简要说明结果稳定性。避免的误区不要只报告权重系数而忽略更稳定的载荷系数。不要对不显著的典型变量对进行过度解读。不要将典型相关关系直接等同于因果关系。CCA揭示的是关联因果推断需要更严谨的设计。5. 典型相关分析的常见问题与扩展思考5.1 实操中高频问题排查指南在实现CCA时你可能会遇到各种报错或不合理的结果下面是一些常见问题的排查思路问题现象可能原因解决方案程序报错协方差矩阵奇异或非正定1. 变量存在完全共线性如一个变量是另一个的线性组合。2. 样本量少于变量数。3. 数据中存在常数列方差为0。1. 检查并删除共线性极高的变量。2. 增加样本量或使用PCA先降维。3. 删除方差为0的常数变量。典型相关系数非常接近1如0.991. 两组变量中可能存在近乎相同的变量。2. 过拟合尤其样本量小时。1. 仔细检查变量定义确保X组和Y组没有重复或本质相同的指标。2. 用新样本或交叉验证验证稳定性。典型权重系数符号与预期相反1. 变量方向性定义问题如“污染治理投入”是正向指标但数值越大可能对应污染越严重。2. 共线性导致系数估计不稳定。1. 统一变量方向确保数值增大代表“好”或“多”。对于逆指标可考虑取倒数或反向编码。2. 优先依据典型载荷进行解释载荷更稳定。权重的符号在共线性下可能不可靠。只有第一对典型相关显著且冗余度很低1. 两组变量之间整体关联性确实较弱。2. 变量选择不当未能抓住核心关联维度。1. 承认结果在论文中客观讨论可能两组变量相对独立。2. 重新审视理论框架调整变量选择或尝试其他分析方法如偏最小二乘回归PLS。载荷图中所有变量都挤在原点附近1. 典型变量对原始变量的代表性很差。2. 可能计算有误或使用了未标准化的数据。1. 检查典型相关系数是否本身就很低。2. 确认数据已标准化并重新计算载荷相关系数。5.2 超越基础CCA扩展方法与模型选择基础的CCA是线性模型现实问题可能更复杂。当基础CCA效果不佳或问题有特殊要求时可以考虑其扩展形式稀疏典型相关分析当变量非常多如基因组学、文本数据时结果难以解释。稀疏CCA在目标函数中加入L1正则化惩罚使得权重系数向量变得稀疏很多系数为0从而自动进行变量选择只保留对关联贡献最大的变量结果更简洁易懂。核典型相关分析用于处理非线性关系。通过核函数将原始变量映射到高维特征空间再在高维空间进行线性CCA从而能够捕捉原始空间中复杂的非线性关联。深度典型相关分析利用深度神经网络来学习两组数据之间的非线性映射和关联是更强大的非线性扩展适用于图像、语音等复杂数据。偏典型相关分析当存在需要控制的协变量时使用。例如研究教育投入X与学生成绩Y的关系需要控制学生家庭背景Z的影响。偏CCA就是在剔除Z的影响后再分析X和Y的典型相关。在数学建模中如果基础CCA结果不理想在论文中简要讨论这些高级方法作为“模型优化方向”或“未来工作”能体现你的知识广度和对问题复杂性的认识。5.3 与其它多变量分析方法的比较与选择CCA不是唯一分析多变量关系的方法明确其定位有助于正确选用与多元回归的区别多元回归有明确的因变量和自变量用于预测。CCA没有明确的因变量重在揭示两组变量的对称性关联结构。与主成分分析的区别PCA是针对一组变量降维找内部结构。CCA是针对两组变量找组间关联。可以理解为“关联导向的降维”。与结构方程模型的区别SEM可以处理更复杂的潜变量路径关系包含测量模型和结构模型能进行假设检验。CCA可以看作是SEM的一个特例或初步探索工具更简单直观。与偏最小二乘回归的区别PLS回归也是处理两组变量但它是不对称的目的是用X预测Y且侧重于最大化预测能力。CCA则是对称的侧重于最大化相关性。如果研究目标明确是预测PLS可能更合适如果目标是理解两组变量的共享维度CCA更合适。选择的关键在于你的研究问题。如果问题是“哪些城市发展模式与哪些环境问题模式关联最强”用CCA。如果问题是“根据城市发展指标预测其环境综合得分”用PLS或多元回归。我个人在多次建模中体会是CCA是一个强大的“探索性”和“描述性”工具。它帮你从数据中挖掘出故事主线为后续更复杂的建模或决策提供清晰的洞察。不要把CCA的结果当作终点而应视为深入分析的起点。例如通过CCA找到了关键的影响模式后你可以进一步用这些典型变量得分作为新的特征去做聚类分析看哪些城市属于同一发展-环境类型或者做回归分析探究典型变量与其他外部因素的关系。把这个流程走通你的论文在方法和深度上就能脱颖而出。
返回列表