2011-08-18 1 views
1

J'ai appris à obtenir un ajustement linéaire avec certains points en utilisant lm dans mon script R. Donc, je l'ai fait (qui a travaillé bien), et imprimé l'ajustement:Détermination de la qualité d'un ajustement R à l'aide de lm()

lm(formula = y2 ~ x2) 

Residuals: 
     1   2   3   4 
5.000e+00 -1.000e+01 5.000e+00 7.327e-15 

Coefficients: 
      Estimate Std. Error t value Pr(>|t|) 
(Intercept) 70.000  17.958 3.898 0.05996 . 
x2   85.000  3.873 21.947 0.00207 ** 
--- 
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Residual standard error: 8.66 on 2 degrees of freedom 
Multiple R-squared: 0.9959, Adjusted R-squared: 0.9938 
F-statistic: 481.7 on 1 and 2 DF, p-value: 0.00207 

Je suis en train de déterminer la meilleure façon de juger à quel point cet ajustement est. J'ai besoin de comparer cet ajustement avec quelques autres (qui sont également linéaires en utilisant la fonction lm()). Quelle valeur de ce résumé serait le meilleur moyen de juger de la qualité de cet ajustement? Je pensais utiliser l'erreur-type résiduelle. Aucune suggestion. Aussi, comment puis-je extraire cette valeur de la variable d'ajustement?

+0

[This] (http://stats.stackexchange.com/questions/4510/how-to-compute-goodness-of-fit-for-a-linear-model-in-r) question sur les statistiques.SE est essentiellement un dup exactement, bien que la réponse acceptée dit essentiellement d'aller lire un livre de statistiques. – joran

+0

mais comment puis-je obtenir les valeurs de la variable d'ajustement? – CodeGuy

+0

Gee, je me demande s'il y a un problème de corrélation ici ... –

Répondre

2

Si vous voulez accéder aux pièces produites par summary directement, vous pouvez simplement appeler summary et stocker le résultat dans une variable, puis inspecter l'objet résultant:

rs <- summary(lm1) 
names(rs) 

Peut-être que rs$sigma est ce que vous cherchez?

EDIT

Avant que quelqu'un me gronde, je tiens à souligner que, pour certaines de ces informations, ce n'est pas la méthode recommandée pour y accéder. Au contraire, vous devez utiliser les extracteurs désignés comme residuals() ou coef.

+0

mais pour sigma, est-ce correct? – CodeGuy

+0

@ reising1 - Je le crois, oui. Les principaux extracteurs recommandés sont «coef», «équipés» et «résiduels», je crois. Ne me citez pas sur cette liste complète, cependant. – joran

+0

merci beaucoup pour votre aide – CodeGuy

1

Il y a quelques parcelles de diagnostic de régression agréables que vous pouvez regarder avec

plot(YourRegression, which=1:6) 

où qui = 1: 6 vous donner tous les six parcelles. Le test RESET et bptest testeront pour et hétéroscédasticité erreurs de spécification:

resettest(...) 
bptest(...) 

Il y a beaucoup de ressources là-bas pour penser à ce genre de chose. Fitting Distributions in R est l'un d'entre eux, et "Practical Regression and Anova" de Faraway est un classique de R. J'ai fondamentalement appris l'économétrie dans R à partir du livre/livre de Farnsworth, bien que je ne me rappelle pas s'il a quelque chose à propos de la qualité de l'ajustement.

Si vous allez faire beaucoup d'économétrie dans R, Applied Econometrics in R est un excellent livre payant. Et j'ai beaucoup utilisé la page Web R for Economists.

Ce sont les premiers qui me viennent à l'esprit. Je vais réfléchir un peu plus.

+0

mais comment puis-je obtenir les valeurs hors de la variable d'ajustement? Je veux obtenir l'erreur standard résiduelle – CodeGuy

2

Ce code ferait quelque chose de similaire:

y2 <- seq(1, 11, by=2)+rnorm(6) # six data points to your four points 
x2=1:6 
lm(y2 ~ x2) 
summary(lm(y2 ~ x2)) 

L'ajustement R^2 est la mesure "qualité de l'ajustement". Il est dit que 99% de la variance de y2 peut être «expliquée» par un ajustement en ligne droite de y2 à x2. Si vous voulez interpréter votre modèle avec seulement 4 points de données sur la base de ce résultat, c'est une question de jugement. Cela me semblerait quelque peu dangereux.

Pour extraire la somme résiduelle des carrés que vous utilisez:

summary(lm(y2~x2))$sigma 

Voir ce pour plus de détails:

?summary.lm 
+0

Je vois comment imprimer résumé, mais comment puis-je obtenir des valeurs sur le résumé? Je veux obtenir l'erreur-type résiduelle. – CodeGuy

Questions connexes