2017-09-04 5 views
0

je l'ensemble de données suivantes: https://www.dropbox.com/s/kdbfp8dx2fstz6w/ames_train.Rdata?dl=0R - erreur de régression due à des variables apparemment 1 factoriels

Dans un projet que je suis censé trouver le meilleur modèle linéaire. Pour économiser, je voulais vous assurer que je ne quitte pas quoi que ce soit important, donc j'inclus toutes les variables et je voulais en arrière les éliminer basées sur les valeurs p etc.

Cependant, quand je par exemple courir:

firstreg = lm(price ~ ., data = (ames_train)) 

ou

bestmod=bas.lm(price ~ ., data=ames_train, prior="BIC", modelprior = uniform()) 

Je reçois

Error in `contrasts<-`(`*tmp*`, value = contr.funs[1 + isOF[nn]]) : 
    i contrasti si possono applicare solo a variabili factor con 2 o più livelli 

Je ne comprends pas la question ici cependant, parce que je l'ai testé et aucune des variables semble avoir seulement 1 facteur:

l=sapply(ames_train, function(x) is.factor(x)) 
m <- ames_test[, l] 
ifelse(n <- sapply(m, function(x) length(levels(x))) == 1, "DROP", "NODROP") 

probablement quelque chose que je donnent trivial mais je suis un peu coincé. Toute aide est appréciée.

grâce

+0

'Utilities' n'a qu'un seul niveau présent dans les données, et il n'y a pas une seule ligne sans données manquantes. Vous pouvez répliquer l'erreur que vous obtenez comme suit: 'lm (prix ~., Données = data.frame (prix = 1: 10, x = rep (c (" A ", NA), 20), y = rep (c (NA, "B", NA, "C"), 10))). La trame de données a des données manquantes dans chaque ligne et l'une des colonnes de prédicteur n'a qu'un seul niveau présent. – eipi10

Répondre

1

lm va supprimer les lignes où une colonne dans le modèle est NA. Si vous incluez toutes les colonnes possibles (ce qui est statistiquement une stratégie terrible de toute façon, et doublement avec la grande quantité de prédicteurs et de niveaux de facteur), il supprimera toutes les lignes où au moins une observation est manquante, c'est-à-dire le résultat na.omit(ames_test). Comme vous pouvez le voir, cela ne vous laisse pas une seule observation dans l'ensemble de données. Dans un premier temps, supprimez les colonnes du modèle qui contiennent beaucoup de NA.

+0

Évidemment, merci !! –