fda {mda} | R Documentation |
fda(formula, data, weights, theta, dimension, eps, method, ...)
formula |
of the form y~x it describes the response and
the predictors. The formula can be more complicated, such as
y~log(x)+z etc (type ?formula for more
details). The response should be a factor or category
representing the response variable, or any vector that can be
coerced to such (such as a logical variable). |
data |
data frame containing the variables in the formula (optional). |
weights |
an optional vector of observation weights. |
theta |
an optional matrix of class scores, typically with less
than J-1 columns. |
dimension |
The dimension of the solution, no greater than
J-1 , where J is the number classes. Default is
J-1 . |
eps |
a threshold for small singular values for excluding
discriminant variables; default is .Machine$double.eps . |
method |
regression method used in optimal scaling. Default is
linear regression via the function polyreg , resulting in
linear discriminant analysis. Other possibilities are
mars and bruto . For Penalized Discriminant
analysis gen.ridge is appropriate. |
keep.fitted |
a logical variable, which determines whether the
(sometimes large) component "fitted.values" of the
"fit" component of the returned fda object should
be kept. The default is TRUE if n * dimension <
1000 |
... |
additional arguments to method() . |
"fda"
. Use predict
to extract
discriminant variables, posterior probabilities or predicted class
memberships. Other extractor functions are coef
,
confusion
and plot
.
The object has the following components:
percent.explained |
the percent between-group variance explained by each dimension (relative to the total explained.) |
values |
optimal scaling regresssion sum-of-squares for each
dimension (see reference). The usual discriminant analysis
eigenvalues are given by values/(1-values) , which are
used to define percent.explained |
means |
class means in the discriminant space. These are also
scaled versions of the final theta's or class scores, and can be
used in a subsequent call to fda() (this only makes sense
if some columns of theta are omittedsee the references) |
theta.mod |
(internal) a class scoring matrix which allows predict to work properly. |
dimension |
dimension of discriminant space |
prior |
class proprotions for the training data |
fit |
fit object returned by "method" |
call |
the call that created this object (allowing it to be
update() -able) |
confusion |
confusion matrix when classifying the training data |
The method
functions are required to take arguments x
and y
where both can be matrices, and should produce a matrix
of fitted.values
the same size as y
. They can take
additional arguments weights
and should all have a
...{}
for safety sake. Any arguments to method() can be
passed on via the ...{}
argument of fda()
. The
default method polyreg()
has a degree
argument which
allows polynomial regression of the required total degree. See the
documentation for predict.fda()
for further requirements of
method
.
This software it is not well-tested, we would like to hear of any bugs.
Trevor Hastie and Robert Tibshirani
``Flexible Disriminant Analysis by Optimal Scoring'' by Hastie, Tibshirani and Buja, 1994, JASA, 1255-1270.
``Penalized Discriminant Analysis'' by Hastie, Buja and Tibshirani, Annals of Statistics, 1995 (in press).
predict.fda
,
mars
,
bruto
,
polyreg
,
softmax
,
confusion
,
data(iris) irisfit <- fda(Species ~ ., data = iris) irisfit ## fda(formula = Species ~ ., data = iris) ## ## Dimension: 2 ## ## Percent Between-Group Variance Explained: ## v1 v2 ## 99.12 100.00 ## ## Degrees of Freedom (per dimension): 5 ## ## Training Misclassification Error: 0.02 ( N = 150 ) confusion(irisfit, iris) ## Setosa Versicolor Virginica ## Setosa 50 0 0 ## Versicolor 0 48 1 ## Virginica 0 2 49 ## attr(, "error"): ## [1] 0.02 plot(irisfit) coef(irisfit) ## [,1] [,2] ## [1,] -2.126479 -6.72910343 ## [2,] -0.837798 0.02434685 ## [3,] -1.550052 2.18649663 ## [4,] 2.223560 -0.94138258 ## [5,] 2.838994 2.86801283 marsfit <- fda(Species ~ ., data = iris, method = mars) marsfit2 <- update(marsfit, degree = 2) marsfit3 <- update(marsfit, theta = marsfit$means[, 1:2]) ## this refits the model, using the fitted means (scaled theta's) ## from marsfit to start the iterations