< Programmer en R
![](../../I/Regression_cercle_coope_gruntz_GNU_R.png.webp)
Régression circulaire par la méthode de Kåsa et Coope avec GNU R.
Nous allons effectuer une régression circulaire en utilisant la méthode directe de Kåsa et Coope, qui est une méthode de régression linéaire (voir sur Wikipédia Régression circulaire > Méthode de Kåsa et Coope). Pour le calcul, nous utilisons l'équation cartésienne du cercle de centre (xc, yc) et de rayon r :
- ;
soit en développant :
- .
Pour le tracé, nous utilisons l'équation paramétrique :
Nous utilisons les données proposées par D. Gruntz[1]
x | y |
---|---|
0.7 | 4.0 |
3.3 | 4.7 |
5.6 | 4.0 |
7.5 | 1.3 |
6.4 | -1.1 |
4.4 | -3.0 |
0.3 | -2.5 |
-1.1 | 1.3 |
data.entry('x', 'y') # copier les données ci-dessus
# cliquer sur l'en-tête des colonnes pour sélectionner "numeric"
# puis fermer la table
plot(x, y, col='blue')
Puis, nous effectuons la régression
donnees <- data.frame(x, y)
cercle <- lm(I(x^2 + y^2) ~ x + y, donnees)
print(cercle)
ce qui donne
Call:
lm(formula = I(x^2 + y^2) ~ x + y, data = donnees)
Coefficients:
(Intercept) x y
6.967 6.121 1.487
Le modèle obtenu par régression est donc :
- (x2 + y2) = 6,121·x + 1,487·x + 6,967.
Enfin, nous déterminons les caractéristiques du cercle
xc <- coef(cercle)[2]/2
yc <- coef(cercle)[3]/2
r <- sqrt(coef(cercle)[1] + xc^2 + yc^2)
print(xc) ; print(yc) ; print(r);
ce qui donne
x
3.060304
y
0.7436073
(Intercept)
4.109137
soit un cercle de centre (3,060,304 ; 0,743,607,3 ) et de rayon 4,109,137 . Puis nous traçons le modèle
theta <- seq(0, 2*pi, len = 40)
xmodcercle <- xc + r*cos(theta)
ymodcercle <- yc + r*sin(theta)
lines(xmodcercle, ymodcercle, col='red')
Notes et références
- ↑ anglais D. Gruntz, « Finding the Best Fit Circle », dans The MathWorks Newsletter, vol. 1, 1990, p. 5
Cet article est issu de Wikibooks. Le texte est sous licence Creative Commons - Attribution - Partage dans les Mêmes. Des conditions supplémentaires peuvent s'appliquer aux fichiers multimédias.