2017-01-30 1 views
1

Le package végétalien comprend la fonction ordiR2step() pour la construction de modèles, qui peut être utilisée pour identifier les variables les plus importantes en utilisant le R2 et la valeur p comme la qualité de l'ajustement les mesures. Cependant, pour l'ensemble de données que je travaillais récemment avec la fonction ne fournit pas le modèle le mieux adapté.vegan :: ordiR2step() ne trouve pas le modèle best-fit

# data 
RIKZ <- read.table("http://www.uni-koblenz-landau.de/en/campus-landau/faculty7/environmental-sciences/landscape-ecology/Teaching/RIKZ_data/at_download/file", header = TRUE) 

# data preparation 
Species <- RIKZ[ ,2:5] 
ExplVar <- RIKZ[ , 9:15] 
Species_fin <- Species[ rowSums(Species) > 0, ] 
ExplVar_fin <- ExplVar[ rowSums(Species) > 0, ] 

# rda 
RIKZ_rda <- rda(Species_fin ~ . , data = ExplVar_fin, scale = TRUE) 

# stepwise model building: ordiR2step() 
require(vegan) 
step_both_R2 <- ordiR2step(rda(Species_fin ~ salinity, data = ExplVar_fin, scale = TRUE), 
         scope = formula(RIKZ_rda), 
         direction = "both", R2scope = TRUE, Pin = 0.05, 
         steps = 1000) 

Pourquoi ne pas ajouter ordiR2step() la variable exposition au modèle, bien qu'il augmenterait la variance expliquée?

Si R2scope est défini FAUX et le critère p-valeur est augmentée (Pin = 0.15), il ajoute la variable exposition corretly mais jette l'erreur suivante:

Error in terms.formula(tmp, simplify = TRUE) : 
    invalid model formula in ExtractVars 

Si R2scope est défini TRUE (Pi = 0.15) l'exposition n'est pas ajoutée.

Remarque: Cela peut sembler plus comme une question statistique et donc plus approprié pour CV. Cependant, je pense que le problème est plutôt technique et mieux ici sur SO.

Répondre

1

Veuillez lire la documentation ordiR2step: elle vous dira pourquoi exposure n'est pas ajouté au modèle. La page d'aide indique que ordiR2step a trois critères d'arrêt. Le deuxième critère est que "le R2 ajusté du 'scope' est dépassé". Cela arrive avec exposure et par conséquent il n'a pas été ajouté. Ce deuxième critère sera ignoré si vous définissez R2scope = FALSE (également documenté). Donc, la fonction fonctionne comme documentée.

+0

Merci pour votre réponse! J'aurais dû vérifier les ** Détails ** de la documentation plus tôt. Cependant, la documentation indique que vous devriez utiliser 'R2step = FALSE' et non' R2scope = FALSE' pour ignorer le 2ème critère. Après la documentation 'R2scope = FALSE' ne permet que le calcul de l'adj. R2 si le nombre de prédicteurs est supérieur au nombre d'observations. Les paramètres ont-ils changé avec le temps? – andrasz

+1

'R2step' était une erreur dans la documentation, et maintenant corrigé dans github (avec le' Error in terms.formula() 'signalé dans le message). –