r语言实现互相关分析和典型相关分析

互相关分析

互相关与自相关不同,互相关是指两个时间序列任意两个不同时刻的相关程度。
假设有时间序列 xt 和 yt ,则 xt 在时刻 t 和 yt 在时刻 t+n 的相关即为n阶互相关。

公式:
r语言实现互相关分析和典型相关分析_第1张图片

重温一下自相关系数的公式:
在这里插入图片描述

(可以看出与自相关的公式差不多,其实互相关分析就是两个时间序列在不同时刻暴力套上自相关系数的公式…大概可以这么理解)

在r中用ccf函数可以计算

这里以r中自带的airmiles数据集和LakeHuron(1937-1960年)进行演示。

ccf(airmiles,ts(LakeHuron,start = 1937,end = 1960))

(ts函数可以选择数据集中的一部分)
r语言实现互相关分析和典型相关分析_第2张图片
可以看出在没有延迟(lag=0)的时候,互相关系数为-0.8达到了最小,此时呈负相关。当延迟为10时,呈若正相关,因此可以通过互相关性的分析。

典型相关分析

典型相关分析是指两组变量间的相关关系(这里的相关不像之前的几种相关,变量两两组合求相关系数),而是反应两个整体(两组变量)之间的相关性。其难点是如何构建综合指标使两组数据的相关性最大

这里跳过理论,r语言中stats包中的cancor函数可直接计算典型相关系数。

现使用iris数据集,分别将第一、二列,第三、四列转化为数值矩阵

x<-as.matrix(iris[,1:2])
y<-as.matrix(iris[,3:4])

再使用cancor函数求解 x 与 y 的典型相关系数

> cancor(x,y)
$cor
[1] 0.9409690 0.1239369

$xcoef
                    [,1]       [,2]
Sepal.Length -0.08757435 0.04749411
Sepal.Width   0.07004363 0.17582970

$ycoef
                    [,1]       [,2]
Petal.Length -0.06956302 -0.1571867
Petal.Width   0.05683849  0.3940121

$xcenter
Sepal.Length  Sepal.Width 
    5.843333     3.057333 

$ycenter
Petal.Length  Petal.Width 
    3.758000     1.199333 

代码运行结果可看出,典型相关系数有两个, 0.9409690 和 0.1239369。
第一组变量的典型相关系数较强,第二组较弱,说明第一组适合做分析。

小结

互相关分析与典型相关分析都是分析两个不同的数据集之间的相关性。互相关分析的对象为时间序列中两个不同时刻的相关程度,典型相关分析的对象为两个数据集之间的相关性

你可能感兴趣的:(数据分析,r语言)