2017-08-04 4 views
0

Je veux utiliser boxTidwell dans le paquet r car pour améliorer les résultats de la régression linéaire. Cependant, ça ne marche toujours pas. Le code est le suivant:boxTidwell dans le package de voiture ne fonctionne pas

library(car) 
boxTidwell(mpg~cyl+disp+hp+drat+wt+qsec, data=mtcars) 

Le résultat montre que

« Erreur dans lm.fit (cbind (1, x1.p, x2), y, ...): NA/NaN/Inf dans 'x' "

Quelqu'un peut-il me dire la raison de l'erreur? Comment puis-je faire pour exécuter boxTidwell?

Répondre

0

Vous avez deux problèmes dans votre appel.

  1. Comme la documentation de boxTidwell() montre, vous devez fournir un deuxième argument

other.x formule à sens unique donnant les facteurs prédictifs qui ne sont pas candidats à la transformation, y compris (par exemple) facteurs.

Une autre answer mentionne que « l'option other.x indique les termes de la régression qui ne sont pas à transformer. Ce serait toutes vos variables. »

donc d'exécuter ce code (basé sur l'exemple boxTidwell()) fonctionnera:

boxTidwell(mpg ~ cyl + disp + hp, ~as.factor(am) + poly(gear, 2), 
      data = mtcars) 
  1. Prédicteurs

Pour une raison quelconque, en utilisant plus de 3 prédicteurs, comme dans votre exemple original, ne fonctionne pas:

boxTidwell(mpg ~ cyl + disp + hp + drat + wt + qsec, 
      ~as.factor(am) + poly(gear, 2), 
      data = mtcars) 

Erreur dans lm.fit (cbind (1, x1.p, x2), y, ...): NA/NaN/Inf en 'x'

Apparently, boxTidwell fonctionne avec un maximum de 6 prédicateurs, mais quand j'ai essayé d'exécuter votre code avec seulement 4 d'entre eux() alors il a retourné une erreur aussi.