| IKFA {rioja} | R Documentation |
Imbrie & Kipp Factor Analysis
Description
Functions for reconstructing (predicting) environmental values from biological assemblages using Imbrie & Kipp Factor Analysis (IKFA), as used in palaeoceanography.
Usage
IKFA(y, x, nFact = 5, IsPoly = FALSE, IsRot = TRUE,
ccoef = 1:nFact, check.data=TRUE, lean=FALSE, ...)
IKFA.fit(y, x, nFact = 5, IsPoly = FALSE, IsRot = TRUE,
ccoef = 1:nFact, lean=FALSE)
## S3 method for class 'IKFA'
predict(object, newdata=NULL, sse=FALSE, nboot=100,
match.data=TRUE, verbose=TRUE, ...)
communality(object, y)
## S3 method for class 'IKFA'
crossval(object, cv.method="loo", verbose=TRUE, ngroups=10,
nboot=100, h.cutoff=0, h.dist=NULL, ...)
## S3 method for class 'IKFA'
performance(object, ...)
## S3 method for class 'IKFA'
rand.t.test(object, n.perm=999, ...)
## S3 method for class 'IKFA'
screeplot(x, rand.test=TRUE, ...)
## S3 method for class 'IKFA'
print(x, ...)
## S3 method for class 'IKFA'
summary(object, full=FALSE, ...)
## S3 method for class 'IKFA'
plot(x, resid=FALSE, xval=FALSE, nFact=max(x$ccoef),
xlab="", ylab="", ylim=NULL, xlim=NULL, add.ref=TRUE,
add.smooth=FALSE, ...)
## S3 method for class 'IKFA'
residuals(object, cv=FALSE, ...)
## S3 method for class 'IKFA'
coef(object, ...)
## S3 method for class 'IKFA'
fitted(object, ...)
Arguments
y |
a data frame or matrix of biological abundance data. |
x, object |
a vector of environmental values to be modelled or an object of class |
newdata |
new biological data to be predicted. |
nFact |
number of factor to extract. |
IsRot |
logical to rotate factors. |
ccoef |
vector of factor numbers to include in the predictions. |
IsPoly |
logical to include quadratic of the factors as predictors in the regression. |
check.data |
logical to perform simple checks on the input data. |
match.data |
logical indicate the function will match two species datasets by their column names. You should only set this to |
lean |
logical to exclude some output from the resulting models (used when cross-validating to speed calculations). |
full |
logical to show head and tail of output in summaries. |
resid |
logical to plot residuals instead of fitted values. |
xval |
logical to plot cross-validation estimates. |
xlab, ylab, xlim, ylim |
additional graphical arguments to |
add.ref |
add 1:1 line on plot. |
add.smooth |
add loess smooth to plot. |
cv.method |
cross-validation method, either "loo", "lgo", "bootstrap" or "h-block". |
verbose |
logical to show feedback during cross-validation. |
nboot |
number of bootstrap samples. |
ngroups |
number of groups in leave-group-out cross-validation, or a vector contain leave-out group menbership. |
h.cutoff |
cutoff for h-block cross-validation. Only training samples greater than |
h.dist |
distance matrix for use in h-block cross-validation. Usually a matrix of geographical distances between samples. |
sse |
logical indicating that sample specific errors should be calculated. |
rand.test |
logical to perform a randomisation t-test to test significance of cross validated factors. |
n.perm |
number of permutations for randomisation t-test. |
cv |
logical to indicate model or cross-validation residuals. |
... |
additional arguments. |
Details
Function IKFA performs Imbrie and Kipp Factor Analysis, a form of Principal Components Regrssion (Imbrie & Kipp 1971).
Function predict predicts values of the environemntal variable for newdata or returns the fitted (predicted) values from the original modern dataset if newdata is NULL. Variables are matched between training and newdata by column name (if match.data is TRUE). Use compare.datasets to assess conformity of two species datasets and identify possible no-analogue samples.
IKFA has methods fitted and rediduals that return the fitted values (estimates) and residuals for the training set, performance, which returns summary performance statistics (see below), coef which returns the species coefficients, and print and summary to summarise the output. IKFA also has a plot method that produces scatter plots of predicted vs observed measurements for the training set.
Function rand.t.test performs a randomisation t-test to test the significance of the cross-validated components after van der Voet (1994).
Function screeplot displays the RMSE of prediction for the training set as a function of the number of factors and is useful for estimating the optimal number for use in prediction. By default screeplot will also carry out a randomisation t-test and add a line to scree plot indicating percentage change in RMSE with each component annotate with the p-value from the randomisation test.
Value
Function IKFA returns an object of class IKFA with the following named elements:
coefficients |
species coefficients (the updated "optima"). |
fitted.values |
fitted values for the training set. |
call |
original function call. |
x |
environmental variable used in the model. |
standx, meanT sdx |
additional information returned for a PLSif model. |
Function crossval also returns an object of class IKFA and adds the following named elements:
predicted |
predicted values of each training set sample under cross-validation. |
residuals.cv |
prediction residuals. |
If function predict is called with newdata=NULL it returns the fitted values of the original model, otherwise it returns a list with the following named elements:
fit |
predicted values for |
If sample specific errors were requested the list will also include:
fit.boot |
mean of the bootstrap estimates of newdata. |
v1 |
standard error of the bootstrap estimates for each new sample. |
v2 |
root mean squared error for the training set samples, across all bootstram samples. |
SEP |
standard error of prediction, calculated as the square root of v1^2 + v2^2. |
Function performance returns a matrix of performance statistics for the IKFA model. See performance, for a description of the summary.
Function rand.t.test returns a matrix of performance statistics together with columns indicating the p-value and percentage change in RMSE with each higher component (see van der Veot (1994) for details).
Author(s)
Steve Juggins
References
Imbrie, J. & Kipp, N.G. (1971). A new micropaleontological method for quantitative paleoclimatology: application to a Late Pleistocene Caribbean core. In The Late Cenozoic Glacial Ages (ed K.K. Turekian), pp. 77-181. Yale University Press, New Haven.
van der Voet, H. (1994) Comparing the predictive accuracy of models uing a simple randomization test. Chemometrics and Intelligent Laboratory Systems, 25, 313-323.
See Also
WA, MAT, performance, and compare.datasets for diagnostics.
Examples
data(IK)
spec <- IK$spec
SumSST <- IK$env$SumSST
core <- IK$core
fit <- IKFA(spec, SumSST)
fit
# cross-validate model
fit.cv <- crossval(fit, cv.method="lgo")
# How many components to use?
screeplot(fit.cv)
#predict the core
pred <- predict(fit, core, npls=2)
#plot predictions - depths are in rownames
depth <- as.numeric(rownames(core))
plot(depth, pred$fit[, 2], type="b")
# fit using only factors 1, 2, 4, & 5
# and using polynomial terms
# as Imbrie & Kipp (1971)
fit2 <- IKFA(spec, SumSST, ccoef=c(1, 2, 4, 5), IsPoly=TRUE)
fit2.cv <- crossval(fit2, cv.method="lgo")
screeplot(fit2.cv)
## Not run:
# predictions with sample specific errors
# takes approximately 1 minute to run
pred <- predict(fit, core, sse=TRUE, nboot=1000)
pred
## End(Not run)