| corspec {seewave} | R Documentation |
This function tests the similarity between two frequency spectra by returning their maximal correlation and the frequency shift related to it.
corspec(x, y, range, plot = TRUE, plotval = TRUE, method = "spearman", col = "black", colval = "red", cexval = 1, fontval = 1, xlab = "Frequency (kHz)", ylab = "Coefficient of correlation (r)", ...)
x |
a first data set resulting of a spectral analysis obtained
with spec or meanspec (not in dB). |
y |
a second data set resulting of a spectral analysis obtained
with spec or meanspec (not in dB). |
range |
range of x and y (in kHz). |
plot |
logical, if TRUE plots r values against frequency shift (by default TRUE). |
plotval |
logical, if TRUE adds to the plot maximum r value
and frequency offset (by default TRUE). |
method |
a character string indicating which correlation coefficient is
to be computed ("pearson", "spearman", or "kendall")
(see cor). |
col |
colour of r values. |
colval |
colour of r max and frequency offset values. |
cexval |
character size of r max and frequency offset values. |
fontval |
font of r max and frequency offset values. |
xlab |
title of the frequency axis. |
ylab |
title of the r axis. |
... |
other plot graphical parameters. |
It is important not to have data in dB.
Successive correlations between x and y are computed when regularly
shifting y towards lower or higher frequencies.
The maximal correlation is obtained at a particular shift (frequency offset).
This shift may be positive or negative.
The corresponding p value, obtained with cor.test, is plotted.
Inverting x and y may give slight different results, see examples.
If plot is FALSE, corspec returns a list containing four
components:
r |
the successive correlation values between x and y. |
rmax |
the maximum correlation value between x and y. |
p |
the p value corresponding to rmax. |
f |
the frequency offset corresponding to rmax. |
Jérôme Sueur jerome.sueur@ibaic.u-psud.fr
Hopp, S. L., Owren, M. J. and Evans, C. S. (Eds) 1998. Animal acoustic communication. Springer, Berlin, Heidelberg.
spec, meanspec, corspec,
covspectro, cor, cor.test.
data(tico)
# compare the two first notes spectra
a<-spec(tico,f=22050,wl=512,at=0.2,plot=FALSE)
c<-spec(tico,f=22050,wl=512,at=1.1,plot=FALSE)
op<-par(mfrow=c(2,1), mar=c(4.5,4,3,1))
spec(tico,f=22050,wl=512,at=0.2,col="blue",type="l")
par(new=TRUE)
spec(tico,f=22050,wl=512,at=1.1,col="green",type="l")
legend(x=8,y=0.5,c("Note A", "Note C"),lty=1,col=c("blue","green"),bty="o")
par(mar=c(5,4,2,1))
corspec(a,c,range=c(0,11.025),type="l",ylim=c(-0.25,0.8),xaxs="i",yaxs="i",las=1)
par(op)
# different correlation methods give different results...
op<-par(mfrow=c(3,1))
corspec(a,c,range=c(0,11.025),type="l",xaxs="i",las=1, ylim=c(-0.25,0.8))
title("spearmann correlation (by default)")
corspec(a,c,range=c(0,11.025),type="l",xaxs="i",las=1,ylim=c(0,1),method="pearson")
title("pearson correlation")
corspec(a,c,range=c(0,11.025),type="l",xaxs="i",las=1,ylim=c(-0.23,0.5),method="kendall")
title("kendall correlation")
par(op)
# inverting x and y does not give exactly similar results
op<-par(mfrow=c(2,1),mar=c(2,4,3,1))
corspec(a,c,range=c(0,11.025),type="l")
corspec(c,a,range=c(0,11.025),type="l")
par(op)