web-dev-qa-db-fra.com

Que signifie la formule R y ~ 1?

Je lisais la documentation sur Formule R , et j'essayais de comprendre comment travailler avec depmix (du paquet depmixS4) .

Maintenant, dans la documentation de depmixS4, l'exemple de formule a tendance à être quelque chose comme y ~ 1. Pour un cas simple comme y ~ x, Il définit une relation entre l'entrée x et la sortie y, donc j'obtiens qu'il est similaire à y = a * x + b, Où a est la pente, et b est l'interception.

Si nous revenons à y ~ 1, La formule me déconcerte. Est-ce équivalent à y = 1 (Une ligne horizontale à y = 1)?

Pour ajouter un peu de contexte, si vous regardez la documentation depmixs4, il y a un exemple ci-dessous

depmix(list(rt~1,corr~1),data=speed,nstates=2,family=list(gaussian(),multinomial()))

Je pense qu'en général, la formule qui se termine par ~ 1 Me déroute. Quelqu'un peut-il expliquer ce que ~ 1 Ou y ~ 1 Signifie? Merci beaucoup!

38
Antony

De nombreux opérateurs utilisés dans les formules de modèle (astérisque, plus, caret) dans R, ont une signification spécifique au modèle et c'est l'un d'entre eux: le symbole "un" indique une interception.

En d'autres termes, c'est la valeur que la variable dépendante devrait avoir lorsque les variables indépendantes sont nulles ou n'ont aucune influence. (Pour utiliser la signification mathématique la plus courante des termes de modèle, vous les enveloppez dans I()). Les interceptions sont généralement supposées, il est donc plus courant de le voir dans le contexte de l'énoncé explicite d'un modèle sans interception.

Voici deux façons de spécifier le même modèle pour un modèle de régression linéaire de y sur x. Le premier a un terme d'interception implicite et le second un terme explicite:

y ~ x
y ~ 1 + x

Voici des façons de donner une régression linéaire de y sur x à travers l'origine (c'est-à-dire sans terme d'interception):

y ~ 0 + x
y ~ -1 + x
y ~ x - 1

Dans le cas spécifique que vous mentionnez (y ~ 1), y n'est prédit par aucune autre variable, donc la prédiction naturelle est la moyenne de y, comme Paul Hiemstra l'a déclaré:

> data(city)
> r <- lm(x~1, data=city)
> r

Call:
lm(formula = x ~ 1, data = city)

Coefficients:
(Intercept)  
       97.3  

> mean(city$x)
[1] 97.3

Et la suppression de l'interception avec un -1 Ne vous laisse rien:

> r <- lm(x ~ -1, data=city)
> r

Call:
lm(formula = x ~ -1, data = city)

No coefficients

formula() est une fonction pour extraire la formule des objets et son fichier d'aide n'est pas le meilleur endroit pour lire sur la spécification des formules de modèle dans R. Je vous suggère de regarder cette explication ou Chapitre 11 de ne introduction à R .

40
MattBagg

si votre modèle était de la forme y ~ x1 + x2 Cela représente (grosso modo):

 y = β0 + β1(x1) + β2(x2)

 Which is of course the same as 
 y = β0(1) + β1(x1) + β2(x2)

Il y a un +1 Implicite dans la formule ci-dessus. Donc, vraiment, la formule ci-dessus est y ~ 1 + x1 + x2

Nous pourrions avoir une formule très simple, selon laquelle y ne dépend d'aucune autre variable. Voici la formule à laquelle vous faites référence, y ~ 1 Qui équivaut à peu près à

 y = β0(1) = β0

Comme le souligne @Paul, lorsque vous résolvez le modèle simple, vous obtenez β0 = mean (y)




Voici un exemple

  # Let's make a small sample data frame
  dat <- data.frame(y= (-2):3, x=3:8)

  # Create the linear model as above
  simpleModel <- lm(y ~ 1, data=dat)

  ## COMPARE THE COEFFICIENTS OF THE MODEL TO THE MEAN(y)
  simpleModel$coef
    # (Intercept) 
    #         0.5 

  mean(dat$y)
    # [1] 0.5
17
Ricardo Saporta

En général, une telle formule décrit la relation entre les variables dépendantes et indépendantes sous la forme d'un modèle linéaire. Le côté gauche sont les variables dépendantes, le côté droit indépendant. Les variables indépendantes sont utilisées pour calculer la composante de tendance du modèle linéaire, les résidus sont alors supposés avoir une sorte de distribution. Lorsque les indépendants sont égaux à un ~ 1, la composante de tendance est une valeur unique, par exemple la valeur moyenne des données, c'est-à-dire que le modèle linéaire n'a qu'une interception.

5
Paul Hiemstra