corspec {seewave} | R Documentation |
Cross-correlation between two frequency spectra
Description
This function tests the similarity between two frequency spectra by returning their maximal correlation and the frequency shift related to it.
Usage
corspec(spec1, spec2, f = NULL, mel = FALSE, plot = TRUE, plotval = TRUE,
method = "spearman", col = "black", colval = "red",
cexval = 1, fontval = 1, xlab = NULL,
ylab = "Coefficient of correlation (r)", type="l",...)
Arguments
spec1 |
a first data set resulting of a spectral analysis obtained
with |
spec2 |
a first data set resulting of a spectral analysis obtained
with |
f |
sampling frequency of waves used to obtain |
mel |
a logical, if |
plot |
logical, if |
plotval |
logical, if |
method |
a character string indicating which correlation coefficient is
to be computed ("pearson", "spearman", or "kendall")
(see |
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. |
type |
if |
... |
other |
Details
It is important not to have data in dB.
Successive correlations between spec1
and spec2
are computed when regularly
shifting spec2
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 spec1
and spec2
may give slight different results, see examples.
Value
If plot
is FALSE
, corspec
returns a list containing four
components:
r |
a two-column matrix, the first colum corresponding to the frequency
shift (frequency x-axis) and the second column corresponding to the successive
r correlation values between |
rmax |
the maximum correlation value between |
p |
the p value corresponding to |
f |
the frequency offset corresponding to |
Author(s)
Jerome Sueur, improved by Laurent Lellouch
References
Hopp, S. L., Owren, M. J. and Evans, C. S. (Eds) 1998. Animal acoustic communication. Springer, Berlin, Heidelberg.
See Also
spec
, meanspec
, corspec
,
covspectro
, cor
, cor.test
.
Examples
## Not run: 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,at=0.2,col="blue")
par(new=TRUE)
spec(tico,f=22050,at=1.1,col="green")
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, 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,xaxs="i",las=1, ylim=c(-0.25,0.8))
title("spearmann correlation (by default)")
corspec(a,c,xaxs="i",las=1,ylim=c(0,1),method="pearson")
title("pearson correlation")
corspec(a,c,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)
corspec(c,a)
par(op)
## mel scale
require(tuneR)
data(orni)
orni.mel <- melfcc(orni, nbands = 256, dcttype = "t3", fbtype = "htkmel", spec_out=TRUE)
orni.mel.mean <- apply(orni.mel$aspectrum, MARGIN=2, FUN=mean)
tico.mel <- melfcc(tico, nbands = 256, dcttype = "t3", fbtype = "htkmel", spec_out=TRUE)
tico.mel.mean <- apply(tico.mel$aspectrum, MARGIN=2, FUN=mean)
corspec(orni.mel.mean, tico.mel.mean, f=22050, mel=TRUE, plot=TRUE)
## End(Not run)