tidem {oce} | R Documentation |
The fit is done in terms of sine and cosine components at the indicated tidal frequencies, with the amplitude and phase being calculated from the resultant coefficients on the sine and cosine terms.
tidem(t, x, constituents, latitude = NULL, rc = 1, regress = lm, debug = getOption("oceDebug"))
t |
Either a |
x |
an optional numerical vector holding something that varies with
time. This is ignored if |
constituents |
an optional list of tidal constituents to which the fit is done (see “Details”.) |
latitude |
if provided, the latitude of the observations. If not
provided, |
rc |
the value of the coefficient in the Rayleigh criterion. |
regress |
function to be used for regression, by default
|
debug |
an integer specifying whether debugging information is
to be printed during the processing. This is a general parameter that
is used by many |
The tidal constituents to be used in the analysis are specified as follows.
Case 1. If constituents
is not provided, then the constituent
list will be made up of the 69 constituents regarded by Foreman as standard.
These include astronomical frequencies and some shallow-water frequencies,
and are as follows: c("Z0", "SA", "SSA", "MSM", "MM", "MSF", "MF",
"ALP1", "2Q1", "SIG1", "Q1", "RHO1", "O1", "TAU1", "BET1", "NO1", "CHI1",
"PI1", "P1", "S1", "K1", "PSI1", "PHI1", "THE1", "J1", "SO1", "OO1", "UPS1",
"OQ2", "EPS2", "2N2", "MU2", "N2", "NU2", "GAM2", "H1", "M2", "H2", "MKS2",
"LDA2", "L2", "T2", "S2", "R2", "K2", "MSN2", "ETA2", "MO3", "M3", "SO3",
"MK3", "SK3", "MN4", "M4", "SN4", "MS4", "MK4", "S4", "SK4", "2MK5", "2SK5",
"2MN6", "M6", "2MS6", "2MK6", "2SM6", "MSK6", "3MK7", "M8")
.
Case 2. If the first item in constituents
is the string
"standard"
, then a provisional list is set up as in Case 1, and then
the (optional) rest of the elements of constituents
are examined, in
order. Each of these constituents is based on the name of a tidal
constituent in the Foreman (1977) notation. (To get the list, execute
data(tidedata)
and then execute cat(tideData$name)
.) Each
named constituent is added to the existing list, if it is not already there.
But, if the constituent is preceeded by a minus sign, then it is removed
from the list (if it is already there). Thus, for example,
constituents=c("standard", "-M2", "ST32")
would remove the M2
constituent and add the ST32 constituent.
Case 3. If the first item is not "standard"
, then the list of
constituents is processed as in Case 2, but without starting with the
standard list. As an example, constituents=c("K1", "M2")
would fit
for just the K1 and M2 components. (It would be strange to use a minus sign
to remove items from the list, but the function allows that.)
In each of the above cases, the list is reordered in frequency prior to the
analysis, so that the results of summary,tidem-method
will be in a
familiar form.
Once the constituent list is determined, tidem
prunes the elements of
the list by using the Rayleigh criterion, according to which two
constituents of frequencies f1 and f2 cannot be
resolved unless the time series spans a time interval of at least
rc/(f1-f2). The value rc=1
yields nominal
resolution.
A specific example may be of help in understanding the removal of unresolvable
constitutents. For example, the data(sealevel)
dataset is of length
6718 hours, and this is too short to resolve the full list of constituents,
with the conventional (and, really, necessary) limit of rc=1
.
From Table 1 of [1], this timeseries is too short to resolve the
SA
constituent, so that SA
will not be in the resultant.
Similarly, Table 2 of [1] dictates the removal of
PI1
, S1
and PSI1
from the list. And, finally,
Table 3 of [1] dictates the removal of
H1
, H2
, T2
and R2
. Also, since Table 3
of [1] indiates that GAM2
gets subsumed into H1
,
and if H1
is already being deleted in this test case, then
GAM2
will also be deleted.
A list of constituent names is created by the following:
data(tidedata) print(tidedata$const$name)
The text should include discussion of the (not yet performed) nodal correction treatment.
An object of tidem-class
, consisting of
const |
constituent number, e.g. 1 for |
model |
the regression model |
name |
a vector of constituent
names, in non-subscript format, e.g. " |
frequency |
a vector of constituent frequencies, in inverse hours. |
amplitude |
a vector of fitted constituent amplitudes, in metres. |
phase |
a vector of fitted constituent phase. NOTE: The definition of phase is likely to change as this function evolves. For now, it is phase with respect to the first data sample. |
p |
a vector containing a sort of p value for each constituent. This is calculated as the average of the p values for the sine() and cosine() portions used in fitting; whether it makes any sense is an open question. |
1.This function is not fully developed yet, and both the form of the call and the results of the calculation may change.
2.Nodal correction is not done.
3.The reported p
value may make no sense at all, and it might be
removed in a future version of this function. Perhaps a significance level
should be presented, as in the software developed by both Foreman and
Pawlowicz.
Dan Kelley
1. Foreman, M. G. G., 1977. Manual for tidal heights analysis and prediction. Pacific Marine Science Report 77-10, Institute of Ocean Sciences, Patricia Bay, Sidney, BC, 58pp.
2. Foreman, M. G. G., Neufeld, E. T., 1991. Harmonic tidal analyses of long time series. International Hydrographic Review, 68 (1), 95-108.
3. Leffler, K. E. and D. A. Jay, 2009. Enhancing tidal harmonic analysis: Robust (hybrid) solutions. Continental Shelf Research, 29(1):78-88.
4. Pawlowicz, Rich, Bob Beardsley, and Steve Lentz, 2002. Classical tidal
harmonic analysis including error estimates in MATLAB using T_TIDE
.
Computers and Geosciences, 28, 929-937.
Other things related to tidem
data: [[,tidem-method
,
[[<-,tidem-method
,
plot,tidem-method
,
predict.tidem
,
summary,tidem-method
,
tidedata
, tidem-class
,
tidemAstron
, tidemVuf
library(oce) # The demonstration time series from Foreman (1977), # also used in T_TIDE (Pawlowicz, 2002). data(sealevelTuktoyaktuk) tide <- tidem(sealevelTuktoyaktuk) summary(tide) # AIC analysis extractAIC(tide[["model"]]) # Fake data at M2 t <- seq(0, 10*86400, 3600) eta <- sin(0.080511401 * t * 2 * pi / 3600) sl <- as.sealevel(eta) m <- tidem(sl) summary(m)