Démo au tableau.
Supposons que nous sommes intéressés par le modèle suivant:
##
## Call:
## lm(formula = Temp ~ Wind + Solar.R + as.factor(Month), data = air)
##
## Residuals:
## Min 1Q Median 3Q Max
## -12.7987 -4.0036 -0.6883 4.0873 15.7654
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 70.123209 2.295297 30.551 < 2e-16 ***
## Wind -0.723387 0.144566 -5.004 1.67e-06 ***
## Solar.R 0.023372 0.005513 4.239 4.06e-05 ***
## as.factor(Month)6 11.958897 1.568042 7.627 3.44e-12 ***
## as.factor(Month)7 15.188732 1.602650 9.477 < 2e-16 ***
## as.factor(Month)8 16.164466 1.626746 9.937 < 2e-16 ***
## as.factor(Month)9 10.227537 1.571535 6.508 1.28e-09 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 5.856 on 139 degrees of freedom
## (7 observations deleted due to missingness)
## Multiple R-squared: 0.6136, Adjusted R-squared: 0.597
## F-statistic: 36.79 on 6 and 139 DF, p-value: < 2.2e-16
La fonction summary()
nous montre les résultats de régression sous forme de tableau, avec des colonnes pour les coefficients, les erreurs type, les valeurs t et les statistiques p.
modele
L’objet modele
n’est pas organisé sous forme de tableau.
tidy
tidy()
conf.int = TRUE
)## # A tibble: 7 × 7
## term estimate std.error statistic p.value conf.low conf.high
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 (Intercept) 70.1 2.30 30.6 1.55e-63 65.6 74.7
## 2 Wind -0.723 0.145 -5.00 1.67e- 6 -1.01 -0.438
## 3 Solar.R 0.0234 0.00551 4.24 4.06e- 5 0.0125 0.0343
## 4 as.factor(Month)6 12.0 1.57 7.63 3.44e-12 8.86 15.1
## 5 as.factor(Month)7 15.2 1.60 9.48 9.62e-17 12.0 18.4
## 6 as.factor(Month)8 16.2 1.63 9.94 6.56e-18 12.9 19.4
## 7 as.factor(Month)9 10.2 1.57 6.51 1.28e- 9 7.12 13.3
modele_tab2 <- modele_tab %>%
filter(!str_detect(term, "Intercept")) %>%
mutate(term = case_when(str_detect(term, "Solar")~"Solaire (rad.)",
str_detect(term, "Wind")~"Vent (vitesse)",
str_detect(term, "9")~"Sept.",
str_detect(term, "8")~"Août",
str_detect(term, "7")~"Juil.",
str_detect(term, "6")~"Juin",
TRUE~term))
air
).Wind
.Solar.R
(fixée à la moyenne).Wind
(1.7 à 20.7).air_pred <- expand.grid(Wind = (seq(from = min(air$Wind),
to = max(air$Wind),
length.out = 500)),
Solar.R = mean(air$Solar.R, na.rm = T),
Month = c(5:9))
head(air_pred)
## Wind Solar.R Month
## 1 1.700000 185.9315 5
## 2 1.738076 185.9315 5
## 3 1.776152 185.9315 5
## 4 1.814228 185.9315 5
## 5 1.852305 185.9315 5
## 6 1.890381 185.9315 5
predict()
pour trouver quelle valeur de Y (Temp
) est prédite (fit
) par notre modèle pour chaque valeur de la variabe X (Wind
).as.data.frame
.predict()
calcule aussi l’intervalle de confiance autour de chaque prédiction (lwr
et upr
)## Wind Solar.R Month fit lwr upr
## 1 1.700000 185.9315 5 73.23913 61.10554 85.37272
## 2 1.738076 185.9315 5 73.21158 61.08056 85.34261
## 3 1.776152 185.9315 5 73.18404 61.05556 85.31252
## 4 1.814228 185.9315 5 73.15650 61.03056 85.28243
## 5 1.852305 185.9315 5 73.12895 61.00555 85.25236
## 6 1.890381 185.9315 5 73.10141 60.98053 85.22229
graph_pred <- ggplot(aes(x = Wind, y = fit,
ymin = lwr, ymax = upr),
data = prediction_viz) +
# lignes de prédiction (5 couleurs)
geom_line(aes(color = as.factor(Month))) +
# geom_ribbon ajoute l'intervalle de confiance
# (une par mois, c'est pourquoi on précise "group")
geom_ribbon(aes(group = as.factor(Month)), alpha = .1) +
scale_color_discrete(name = "Mois",
labels = c("Mai", "Juin", "Juillet",
"Août", "Septembre")) +
labs(title = "Température prédite en fonction du vent",
y = "Température prédite\n(avec intervalle de 95%)",
x = "Vitesse du vent") +
theme_minimal()
geom_point
qui utilise les données de la banque de données originales, et non la banque de données fictives.graph_pred2 <- ggplot() +
geom_point(data = air,
aes(x = Wind, y = Temp,
color = as.factor(Month)),
alpha = .6) +
geom_line(data = prediction_viz,
aes(x = Wind, y = fit,
color = as.factor(Month))) +
geom_ribbon(data = prediction_viz,
aes(x = Wind, y = fit,
ymin = lwr, ymax = upr,
group = as.factor(Month)),
alpha = .1) +
scale_color_discrete(name = "Mois",
labels = c("Mai", "Juin", "Juillet",
"Août", "Septembre")) +
labs(title = "Température en fonction du vent",
y = "Température prédite\n(avec intervalle de 95%)",
x = "Vitesse du vent") +
theme_minimal()
ggplot
vide;geom_point
);geom_line
);geom_ribbon
).Déplacer un peu des points, à l’horizontale et à la verticale.
Des encadrés (rect
)
Des traits (segment
)
Du texte (text
)
Transformer au format “long”
Transformer au format “long”
Transformer au format “large”