Re: pcaiv

From: Daniel Chessel (chessel@biomserv.univ-lyon1.fr)
Date: Wed Jan 25 2006 - 12:42:23 MET


3) la question d'E. Castella vient du même problème.
Comment reproduire dans ade4 ce qu'on faisait dans ADE-4 ?

pcaiv (dudi, df, scannf = TRUE, nf = 2)

Techniquement dans df on peut mettre un x$tab si x est un schéma de
dualité et ça marche.
Il suffit de savoir que les variables explicatives, celles de df, d'où
qu'elles viennent, seront centrées réduites avec la pondération des
lignes du dudi.
Mais on est dans R et non dans ADE-4. pcaiv utilise la fonction lm.
Dans le df on peut mettre des variables numériques et des facteurs.

Il suffit de lister la foncrion pour comprendre. On fait la formule et
on envoie tout à lm.
pcaiv
function (dudi, df, scannf = TRUE, nf = 2)
{
    lm.pcaiv <- function(x, df, weights, use) {
        if (!inherits(df, "data.frame"))
            stop("data.frame expected")
        reponse.generic <- x
 * begin <- "reponse.generic ~ "
        fmla <- as.formula(paste(begin, paste(names(df), collapse = "+")))
        df <- cbind.data.frame(reponse.generic, df)
        lm0 <- lm(fmla, data = df, weights = weights)
 * if (use == 0)
            return(predict(lm0))
        else if (use == 1)
            return(residuals(lm0))
        else if (use == -1)
            return(lm0)
        else stop("Non convenient use")
    }
etc ...

Les explications de fond entre lm et projection sont dans la doc
pédagogique :
http://pbil.univ-lyon1.fr/R/fichestd/tdr331.pdf
http://pbil.univ-lyon1.fr/R/fichestd/tdr334.pdf

On peut donc mettre dans pcaiv le tableau qui allait dans dudi.hillsmith.
On a voulu souligner le fait que dudi est un tableau à analyser et que
cette analyse doit se faire sous contrainte.
Tandis que que df contient des variables prédictives et qu'elles seront
les explicatives d'un modèle linéaire.
Le plus fort est qu'on pourrait interpréter la pcaiv avec des contrastes
choisis par l'utilisateur.

Remarque : dans ade4 nous avons délibéremment abandonné le créneau cca à
la librairie vegan qui reprend les standards de l'écologie.
La cca d'ade4 n'est rien qu'un cas particulier de la pcaiv avec une AFC.
deux lignes, le reste est de la peinture :

cca
function (sitspe, sitenv, scannf = TRUE, nf = 2)
{
    sitenv <- data.frame(sitenv)
    if (!inherits(sitspe, "data.frame"))
        stop("data.frame expected")
    if (!inherits(sitenv, "data.frame"))
        stop("data.frame expected")
* coa1 <- dudi.coa(sitspe, scannf = FALSE, nf = 8)
    x <- pcaiv(coa1, sitenv, scannf = scannf, nf = nf)
* class(x) <- c("cca", "pcaiv", "dudi")
    x$call <- match.call()
    return(x)
}

Ainsi l'environnement de R renouvelle fortement la manière de s'y
prendre. On a laissé quelques raffinements pour renforcer la cohérence
théorique.
Si ça peut servir ?
 

Emmanuel Castella a écrit :

> Bonjour
> J'ai un problème de compréhension des possibilités de la fonction
> pcaiv, en comparaison avec "l'ancien" module "projector".
> Dans "projector", les variables explicatives pouvaient être "vues" par
> tout type d'analyse préalable.
> Dans: pcaiv(dudi, df, scannf = TRUE, nf = 2)
> dudi a duality diagram, object of class dudi
> df a data frame with the same rows
> comment puis-je retrouver la possibilité d'utiliser des explicatives
> issues par exemple de dudi.hillsmith dans la mesure où df est un
> tableau "brut"?
> Merci d'avance pour votre aide
> E. Castella
>



This archive was generated by hypermail 2b30 : Tue Feb 14 2006 - 15:01:52 MET