多变量数据时,变量之间老是互相有点牵扯?Correlation_elimination的相关性消除方法挺适合拿来试试。思路不复杂,就是把原始的相关变量转换成一组互不相关的新变量,结构还挺清爽的,用Matlab实现也方便。

多变量观测值输入进去,输出的是Y(不相关的新数据)和CovY(协方差矩阵),用起来就一个函数调用:

[Y, CovY] = Correlation_elimination(X)

像你在搞PoissonWeibull分布的数据模拟,就合适。比如用NORTA生成相关性数据后,可以直接转换:

corrZ = [1 0.5; 0.5 1];
Z = mvnrnd([0 0], corrZ, 1000);
X(:,1) = poissinv(normcdf(Z(:,1)), 3);
X(:,2) = wblinv(normcdf(Z(:,1)), 3, 2);
X = X';
[Y, CovY] = Correlation_elimination(X);

输出结果中的CovY基本就是对角矩阵了,你数据之间没啥“勾兑”了,后续建模干净不少。

想更深入搞懂相关性,也可以顺带看看这些资料:相关性与相关系数CCA 多变量 这两篇都挺实用。

如果你常金融数据、计量经济学问题,或者要可视化相关矩阵,这个方法也能派上用场。不光代码简单,响应也快,适合搞数据预的你。