1、相关函数是描述信号X(s),Y(t)(这两个信号可以是随机的,也可以是确定的)在任意两个不同时刻s、t的取值之间的相关程度。
创新互联公司主营连城网站建设的网络公司,主营网站建设方案,成都App定制开发,连城h5微信小程序开发搭建,连城网站营销推广欢迎连城等地区企业咨询
2、自相关函数在不同的领域,定义不完全等效。在某些领域,自相关函数等同于自协方差(autocovariance)。自相关也叫序列相关,是一个信号于其自身在不同时间点的互相关。非正式地来说,它就是两次观察之间的相似度对它们之间的时间差的函数。
扩展资料
1、在信号处理中,相关函数的应用很广,主要有信号中隐含周期性的检测,确定未知参数的线性系统的频域响应,噪声中信号中的检测,噪声中信号的提取等
2、信号处理中,自相关可以提供关于重复事件的信息,例如音乐节拍(例如,确定节奏)或脉冲星的频率(虽然它不能告诉我们节拍的位置)。另外,它也可以用来估计乐音的音高。
参考资料来源:百度百科——相关函数
参考资料来源:百度百科——自相关函数
main()中r[m] = Autocorrelation(data[25],N);改
r[m] = Autocorrelation(data,N); 可解决语法错误
printf("%d\n",r[m]);应改为
printf("%f\n",r[m]);
因为float r[15];
#includestdio.h
float data[25]={1,2,3,4,5,6,7,8,9,10,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8};
float r[15];
int N=10;
int i,m;
float Autocorrelation(float data[], int N)
{for (m=0;m5;m++){r[m]=0;}
for( m=0;mN;m++)for( i=1; i=N; i++)r[m]+= data[i] * data[i+m];
return r[N-1];}
void main()
{for(m=0;m5;m++)
{r[m] = Autocorrelation(data,N);
printf("%f\n",r[m]);}
getch();
}
在datacamp网站上学习“ Time Series with R ”track
“Introduction to Time Series Analysis”课程 做的对应笔记。
学识有限,错误难免,还请不吝赐教。
如无特殊说明,笔记中所使用数据均来自datacamp课程
自相关(autocorrelation or lagged correlation)用于评估时间序列数据是否依赖于其过去的数据。
假设时间序列是弱平稳的: 之间的相关系数记为 ,函数ρ称为自相关函数(autocorrelation function, ACF)
与之类似,自协方差函数用 表示
设 满足弱平稳过程。
设有例数为n的时间序列数据x,按照自相关函数的定义,以计算 为例,我们可以手动构造计算自相关系数的成对数据,x_t0 x_t1对应x[t],x[t-1],然后用cor()函数计算 ,本例中n=150:
cor(x_t0, x_t1)输出为:0.7630314
acf(..., lag.max =1, plot = FALSE)函数可以用来计算lag为1的自相关系数:
acf()函数输出中lag为1的自相关系数为0.758
可以看出我们手动计算的结果和acf()函数计算的结果略有不同。这是因为acf()使用的是用n作为分母的计算版本而手动计算利用cov()函数使用的是用n-h(这里h=1)作为分母的计算版本。
acf()函数以n作为分母的计算方法算出的自相关系数是有偏的,但是在时间序列分析中更常用(preferred)。
验证两种计算方法相差一个因子:(n-h)/n
cor(x_t1, x_t0) * (n-1)/n输出结果为0.7579445.
acf(x, lag.max = 1, plot = F)[1][[1]]输出结果为0.7579761
看来除了课程中提到的计算版本分母不同以外这两种计算方法还有其他的差异导致计算结果在考虑到分母问题以后仍然有一点点微小的不同。
acf(..., lag.max = ..., plot = FALSE)函数会计算h=0,1,2...直到lag.max参数指定值对应的自相关系数。
此外,acf()函数的plot选项默认为TRUE,可以生成自相关图,自相关图会显示各lag值对应的自相关系数,并用蓝色水平虚线表示自相关系数为0的95%置信区间边界线,如果自相关系数在两条虚线以内则表明自相关系数没有统计学意义。
例子数据:x显示出强持续性(persistence),即时间序列的值与前一测量值呈现出强相关性;y具有周期性,周期大约为4;z则没有明确的模式。
对上面三个时间序列使用acf()函数: