2017-03-09 2 views
2

tous.Problèmes avec la fonction predict() (probablement facile à résoudre)

C'est la première question que je pose dans ce forum. Je suis un débutant, comme vous le direz immédiatement.

Je fais une petite tâche dans laquelle je dois comparer un modèle de formation avec un modèle de test. Le fait est que le modèle de formation a beaucoup plus de lignes que le test.

Grâce à un modèle de régression linéaire, je souhaite comparer les deux modèles, mais quand j'utilise le prédire la fonction() J'obtiens l'erreur suivante:

« newdata » a 3456 lignes, mais les variables trouvées 7689 fave lignes.

C'est ce que je l'ai fait:

regression = lm(train$students~train$subjects, train) 

(train est la base de données trigone)

prediction = predict(regression, test) 

(test est la base de données de test)

Je ne sais pas se I' m en utilisant la fonction predict() correctement. Quelqu'un pourrait-il me dire ce que j'ai mal fait?

Merci beaucoup d'avance votre aide et votre gentillesse!

+0

Essayez d'ajouter 'type = 'response'' en tant qu'argument à la fonction predict. Je ne peux pas aider beaucoup plus sans un exemple reproductible. –

+2

Essayez plutôt 'regression = lm (étudiants ~ sujets, train) prédiction = prédire (régression, test)' – G5W

+0

Merci beaucoup, G5W !! – albert

Répondre

2

Ne pas se référer aux variables comme data$var dans une formule. Jamais. Déjà.

Ce qui se passe est que vous avez équipé un modèle avec des variables nommées train$students et train$subjects. Pour prédire à partir du modèle R recherchera une variable nommée train$subjects dans l'ensemble de test, test. Il est clair qu'aucune telle variable n'existe dans tests; qui créerait des variables avec de tels noms idiots? Il n'est pas nécessaire d'utiliser le format data$var dans une formule, car le point entier de l'argument data est d'indiquer où R doit rechercher les noms des variables mentionnées dans la formule.

Pour commencer à réparer emmanchez votre modèle comme:

regression <- lm(students ~ subjects, data = train) 

prédire puis en utilisant

predict(regression, test) 

test aura besoin d'avoir une colonne contenant subjects.

Le message d'erreur est parce que newdata a 3456 mais quand il recherche la variable train$subjects il trouvé 7689 lignes, sans doute qui est le nombre d'observations complètes dans train ...?

+0

Cela fonctionne. Merci beaucoup, Gavin! – albert