Calculer la statistique R au carré dans R
- Formule pour la statistique R au carré
- Obtenir la statistique R au carré à partir du modèle de régression linéaire
- Calculer manuellement la statistique R-carré
- Créer une fonction personnalisée pour calculer R-Squared
- Conclusion
La statistique R au carré est le nombre utilisé pour évaluer dans quelle mesure un modèle de régression linéaire s’adapte aux données. Il donne la proportion de variance de la variable dépendante expliquée par les variables indépendantes du modèle.
La statistique R au carré concerne uniquement les modèles de régression linéaire. Dans un modèle de régression linéaire, la variable dépendante est quantitative.
Le modèle suppose que la variable dépendante dépend linéairement des variables indépendantes. Le R au carré est également pertinent pour les extensions simples du modèle linéaire, y compris les termes polynomiaux et d’interaction.
Les autres points à noter concernant la statistique R au carré sont :
- C’est une proportion, donc elle n’a pas d’unité.
- Puisqu’il s’agit d’une proportion, elle est toujours comprise entre 0 et 1.
- Une valeur de 0 signifie que le modèle n’explique aucune variance.
- Une valeur de 1 signifie que le modèle explique toute la variance.
- Habituellement, un modèle qui donne une valeur plus élevée de R au carré est considéré comme meilleur.
- Ajouter plus de variables indépendantes augmente toujours la valeur de R au carré. Cela peut surajuster le modèle aux données. Par conséquent, il peut parfois être utile de choisir un modèle qui donne un R-carré légèrement inférieur à un autre qui surajuste les données.
- Le modèle linéaire donnera une statistique R-carré valide uniquement pour les données utilisées pour créer le modèle. Le modèle peut prédire un vecteur de valeurs de variables dépendantes à l’aide d’un ensemble de données différent. Mais nous ne devrions pas calculer une statistique R au carré pour de telles valeurs prédites.
Formule pour la statistique R au carré
Supposons que nous essayons de prédire une variable Y
en utilisant des variables indépendantes. Nous construisons notre modèle de régression linéaire à partir d’observations complètes dans lesquelles les valeurs de toutes les variables, y compris la variable dépendante Y
, sont connues.
La moyenne arithmétique de Y
est la valeur estimée de Y
en l’absence d’un modèle de régression linéaire. Il est pris comme ligne de base.
Les différences entre les valeurs observées de Y
et la moyenne arithmétique de Y
sont les écarts totaux. La somme des carrés de ces différences est appelée somme totale des carrés, TSS.
Les différences entre les valeurs observées de Y
et Y
que prédit le modèle de régression linéaire sont les écarts résiduels. Ces écarts subsistent même après avoir tenté de prédire Y
à l’aide des variables indépendantes dans un modèle de régression linéaire.
La somme des carrés de ces différences est appelée somme résiduelle des carrés, RSS. La statistique R au carré est calculée comme (TSS - RSS)/TSS. Ainsi, le modèle a expliqué la proportion de la variance de Y
.
Un meilleur modèle aura généralement une statistique R au carré plus élevée car le RSS sera plus faible.
Obtenir la statistique R au carré à partir du modèle de régression linéaire
L’installation de base de R inclut la fonction de modélisation linéaire, lm()
, dans le cadre du package stats
, qui est chargé par défaut.
Cela nous aide à construire facilement des modèles de régression linéaire. Le premier argument de cette fonction est la spécification du modèle.
Nous préciserons que nous voulons voir comment Y
est dépendant de X
. Le deuxième argument est la source des données. On précise le data frame où R trouvera les variables X
et Y
.
La fonction summary()
rapporte la statistique R au carré du modèle. Dans l’exemple suivant, nous allons construire un modèle de régression linéaire simple et demander à R de rapporter la valeur de R au carré.
Exemple de code :
# Create sample data.
# Independent variable, X.
X = c(1, 2, 3, 4, 5)
# Dependent Variable, Y, of the form 2x+1, with added error.
Y = c(2, 6, 7, 10, 9)
# Make a data frame, df.
df = data.frame(X,Y)
# Build the linear regression model named lin.mod.
lin.mod = lm(formula = Y~X, data = df)
# Check R^2 in the model summary. It is labeled as Multiple R-squared.
summary(lin.mod)
Production :
Call:
lm(formula = Y ~ X, data = df)
Residuals:
1 2 3 4 5
-1.2 1.0 0.2 1.4 -1.4
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 1.4000 1.5319 0.914 0.428
X 1.8000 0.4619 3.897 0.030 *
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 1.461 on 3 degrees of freedom
Multiple R-squared: 0.8351, Adjusted R-squared: 0.7801
F-statistic: 15.19 on 1 and 3 DF, p-value: 0.02998
L’appel à la fonction summary()
a généré beaucoup de sortie. La valeur de Multiple R-carré est ce que nous cherchons à obtenir.
Calculer manuellement la statistique R-carré
La statistique R-carré peut être obtenue en utilisant la fonction pour le coefficient de corrélation, cor()
. Cependant, nous devons nous assurer que nous l’utilisons dans le bon contexte, uniquement lorsque cela est approprié.
- Dans le cas d’une régression linéaire simple, R-carré est égal au carré du coefficient de corrélation entre
Y
etX
, oùX
est la variable indépendante. - Dans le cas d’une régression linéaire multiple, R-carré est égal au carré du coefficient de corrélation entre
Y
et les valeurs deY
prédites par le modèle.
L’exemple suivant illustre ce calcul avec le modèle de régression linéaire simple que nous avons créé.
Exemple de code :
# The cor() function gives the correlation coefficient.
# Its square is equal to the R-squared statistic.
cor(X,Y)^2
Production :
> cor(X,Y)^2
[1] 0.8350515
Nous constatons que le carré du coefficient de corrélation est le même que la valeur R au carré rapportée par le résumé du modèle de régression linéaire.
Créer une fonction personnalisée pour calculer R-Squared
Si nous avons souvent besoin de calculer manuellement la statistique R au carré entre deux vecteurs numériques de longueur égale, nous pouvons écrire une fonction personnalisée pour simplifier notre tâche.
La fonction personnalisée sera de la forme function_name = function(argument list) {body of function}
. Elle sera appelée de la manière suivante : function_name(parameter list)
. Nous allons utiliser la fonction cor()
dans notre fonction personnalisée.
Exemple de code :
# Define the custom function.
VectorRSq = function(x, y) {cor(x, y)^2}
# Call the custom function.
VectorRSq(X, Y)
Production :
> VectorRSq(X, Y)
[1] 0.8350515
Obtenir de l’aide
Pour en savoir plus sur la statistique R au carré, lisez le chapitre sur la régression linéaire dans l’excellent manuel An Introduction to Statistical Learning, disponible en ligne gratuitement.
Pour en savoir plus sur la création de fonctions personnalisées dans R, lisez le chapitre sur les fonctions dans le livre en ligne de Hadley Wickham R for Data Science.
Pour obtenir de l’aide sur les fonctions lm()
, cor()
ou c()
, cliquez sur Help > Search R Help
dans le menu R Studio et entrez le nom de la fonction sans les parenthèses dans la zone de recherche.
Conclusion
La statistique R au carré est utilisée pour évaluer dans quelle mesure un modèle de régression linéaire s’adapte aux données. Il n’est valable que pour les données utilisées pour créer le modèle. Le résumé généré à partir de la fonction de modélisation linéaire, lm()
, nous donne la valeur de la statistique R-carré.
Si nécessaire, nous pouvons calculer la statistique R-carré entre deux vecteurs numériques de longueur égale en utilisant la fonction cor()
. Cela peut être fait directement ou via une fonction personnalisée.