J'essaie d'adapter un modèle linéaire sur certaines données avec un seul prédicteur (disons (x, y)). Les données sont telles que pour les petites valeurs de x, les valeurs y donnent un ajustement serré à une ligne droite, mais à mesure que les valeurs x augmentent, les valeurs y deviennent plus volatiles. Voici un exemple de telles données (code R)
y = c(3.2,3.4,3.5,3.8,4.2,5.5,4.5,6.8,7.4,5.9)
x = seq(1,10,1)
Je suis curieux de savoir s'il existe une transformation de puissance (Box cox peut-être?) Qui me permet d'obtenir un meilleur ajustement pour les données que de simplement effectuer un ajustement linéaire comme indiqué ci-dessous.
fit = lm(y ~ x)
r
regression
variance
data-transformation
brocoli
la source
la source
Réponses:
Le package MASS fourni avec votre R déjà installé a la
boxcox()
fonction que vous pouvez utiliser: Après avoir lu les données, faites:Regardez ensuite le graphique que cela produit, qui montre graphiquement un intervalle de confiance à 95% pour le paramètre de transformation boxcox. Mais vous n'avez pas vraiment assez de données (n = 10) pour cela, l'intervalle de confiance qui en résulte passe presque de -2 à 2 !, avec une estimation de vraisemblance maximale d'environ 0 (une transformation logarithmique, comme dit précédemment). Si vos données réelles contiennent plus d'observations, vous devriez essayer ceci.
Comme d'autres l'ont dit, cette transformation tente vraiment de stabiliser les variances. Ce n'est pas vraiment évident d'après la théorie, ce qu'elle fait, c'est d'essayer de maximiser une fonction de vraisemblance basée sur une distribution normale, qui suppose une variance constante. On pourrait penser que maximiser une vraisemblance basée sur la normale essayerait de normaliser la distribution des résidus, mais dans la pratique, la principale contribution à la maximisation de la vraisemblance vient de la stabilisation des variances. Ce n'est peut-être pas si surprenant, étant donné que la probabilité que nous maximisons est basée sur une famille de distribution normale à variance constante!
J'ai écrit une fois une démonstration basée sur un curseur dans XLispStat, qui l'a clairement démontré!
la source
Lorsque vous avez une relation linéaire, mais des variances inégales, vous devez généralement transformer à la fois x et y pour obtenir une relation linéaire avec des variances égales (ou simplement utiliser une régression des moindres carrés pondérés sur les variables non transformées).
La procédure AVAS peut être utilisée pour suggérer des transformations possibles.
la source
glm
cadre avec une fonction de lien de Poisson la couperait-il?Eh bien, dans R, vous pouvez essayer ceci:
Mais cela dépend vraiment de ce que vous entendez par «meilleur ajustement aux données»
la source
eh bien si toutes vos données pour x ne sont pas négatives alors vous pouvez utiliser la transformation cox box ... pour estimer la valeur idéale du paramètre lambda de la transformation vous pouvez utiliser matlab ... http://www.mathworks.in/ aide / finance / boxcox.html
la source