6
votes

Enregistrer les résidus avec `dplyr`

Je veux utiliser dplyr pour regrouper une donnée.frame, ajuster des régressions linéaires et enregistrer les résiduels sous forme de colonne dans les données originales et non groupées.frame.

Voici un exemple P>

    Sepal.Length Sepal.Width  resid
1   5.1         3.5  0.04428474
2   4.9         3.0  0.18952960
3   4.7         3.2 -0.14856834
4   4.6         3.1 -0.17951937
5   5.0         3.6 -0.12476423
6   5.4         3.9  0.06808885


0 commentaires

3 Réponses :


8
votes

J'ai adapté un exemple de http://jimhester.github.io/plyrtodplampyr/ .

Source: local data frame [150 x 10]
Groups: Species

   Species Sepal.Length Sepal.Width  .fitted    .se.fit      .resid       .hat
1   setosa          5.1         3.5 5.055715 0.03435031  0.04428474 0.02073628
2   setosa          4.9         3.0 4.710470 0.05117134  0.18952960 0.04601750
3   setosa          4.7         3.2 4.848568 0.03947370 -0.14856834 0.02738325
4   setosa          4.6         3.1 4.779519 0.04480537 -0.17951937 0.03528008
5   setosa          5.0         3.6 5.124764 0.03710984 -0.12476423 0.02420180
...


1 commentaires

(Je comprends ce qui se passe mais je n'aurais jamais compris cela seul. Pourquoi, par exemple, ai-je besoin d'une fonction anonyme dans le second faire mais pas le premier?)



1
votes

Depuis que vous exécutez exactement la même régression pour chaque groupe, vous trouverez peut-être simplement de simplement définir votre modèle de régression sous forme de fonction code> à l'avance, puis l'exécute pour chaque groupe en utilisant Mutate Code>.

   Species Sepal.Length Sepal.Width       resid
    <fctr>        <dbl>       <dbl>       <dbl>
1   setosa          5.1         3.5  0.04428474
2   setosa          4.9         3.0  0.18952960
3   setosa          4.7         3.2 -0.14856834
4   setosa          4.6         3.1 -0.17951937
5   setosa          5.0         3.6 -0.12476423
6   setosa          5.4         3.9  0.06808885


0 commentaires

3
votes

Une solution qui semble être plus facile que celles proposées jusqu'à présent et plus proche du code de la question initiale est la suivante: xxx

résultat: xxx


0 commentaires