2009-11-26 12 views
4

Je me demande s'il existe un moyen pour inclure des termes d'erreur pour un modèle de régression linéaire commecomprennent des termes d'erreur au modèle de régression linéaire avec R

r = lm (y ~ x1 + x2)?

+5

Que voulez-vous dire par des termes d'erreur? Votre code s'adaptera au modèle linéaire suivant: y = a + b1 * x1 + b2 * x2 + e où e est l'erreur. –

+1

Donc le modèle inclut déjà les termes d'erreur? Mais j'ai vu cela aussi: y ~ A * B + Erreur (C) – phpdash

Répondre

4

Le code r = lm(y ~ x1+x2) signifie que nous modélisons y comme une fonction linéaire de x1 et x2. Puisque le modèle ne sera pas parfait, il y aura un terme résiduel (c.-à-d. Le reste que le modèle n'a pas réussi à ajuster).

En mathématiques, comme Rob Hyndman a noté dans les commentaires, y = a + b1*x1 + b2*x2 + e, où a, b1 et b2 sont constantes et e est votre résiduel (qui est supposé être normalement distribués).

Pour regarder un exemple concret, tenez compte des données de l'iris qui vient avec R.

model1 <- lm(Sepal.Length ~ Sepal.Width + Petal.Length + Petal.Width, data=iris) 

Maintenant, nous pouvons extraire les constantes du modèle (équivalent à a, b1, b2 et dans ce cas b3 trop).

> coefficients(model1) 
(Intercept) Sepal.Width Petal.Length Petal.Width 
1.8559975 0.6508372 0.7091320 -0.5564827 

Les résidus ont été calculés pour chaque ligne de données utilisée dans le modèle.

> residuals(model1) 
      1    2    3    4    5  
0.0845842387 0.2100028184 -0.0492514176 -0.2259940935 -0.0804994772 
# etc. There are 150 residuals and 150 rows in the iris dataset. 

(EDIT: Cut information sommaire ne pas Relevent.)


EDIT:

La valeur Error que vous mentionnez dans vos commentaires expliqué sur la page d'aide à AOV .

If the formula contains a single ‘Error’ term, this is used to 
specify error strata, and appropriate models are fitted within 
each error stratum. 

Comparez ce qui suit (Adaptée de la page ?aov.)

> utils::data(npk, package="MASS") 
> aov(yield ~ N*P*K, npk) 
Call: 
    aov(formula = yield ~ N * P * K, data = npk) 

Terms: 
         N  P  K  N:P  N:K  P:K N:P:K Residuals 
Sum of Squares 189.2817 8.4017 95.2017 21.2817 33.1350 0.4817 37.0017 491.5800 
Deg. of Freedom  1  1  1  1  1  1  1  16 

Residual standard error: 5.542901 
Estimated effects may be unbalanced 

> aov(yield ~ N*P*K + Error(block), npk) 
Call: 
aov(formula = yield ~ N * P * K + Error(block), data = npk) 

Grand Mean: 54.875 

Stratum 1: block 

Terms: 
        N:P:K Residuals 
Sum of Squares 37.00167 306.29333 
Deg. of Freedom   1   4 

Residual standard error: 8.750619 
Estimated effects are balanced 

Stratum 2: Within 

Terms: 
         N   P   K  N:P  N:K  P:K Residuals 
Sum of Squares 189.28167 8.40167 95.20167 21.28167 33.13500 0.48167 185.28667 
Deg. of Freedom   1   1   1   1   1   1  12 

Residual standard error: 3.929447 
1 out of 7 effects not estimable 
Estimated effects may be unbalanced 
+1

Hey Richie, cela semble intéressant. Donc je pensais que je peux essayer cela dans R: > v = aov (rendement ~ N * P * K, npk) > v2 = aov (rendement ~ N * P * K + erreur (bloc), npk) > coefficients (v) > coefficients (v2) De quel type de régression s'agit-il? Et quels sont les coefficients tels que N1: P1 et N1: P1: K1? – phpdash

+0

@phpdash: Ceci est parfois connu comme ANOVA split-plot. Il y a un exemple étape-par-étape dans l'informatique statistique par Michael Crawley. http://books.google.com/books?id=OlPUa6lVeb0C&pg=PA345# –