En direct · le cheminPOL-2000 · séance 3 · jeu 17 sept
Quand R ne trouve pas
> df <-read.csv("data.csv")
Error in file(file, "rt") : cannot open the connection
In addition: Warning message:
In file(file, "rt") :
cannot open file 'data.csv': No such file or directory
>file.exists("data.csv")
[1] FALSE
>file.exists("data/data.csv")
[1] TRUE
>▍
Retour · le cheminPOL-2000 · séance 3 · jeu 17 sept
Trois vérifications
1
R n’est pas au bon endroit
getwd()
ouvrez le dossier pol2000 dans Positron
2
Le fichier est ailleurs
list.files("data")
regardez ce que R voit
3
Le nom n’est pas le bon
file.exists("data/data.csv")
une lettre, une majuscule, l’extension
"No such file or directory" : il n’y a rien à cette adresse. Trois vérifications, dans cet ordre.
La sciencePOL-2000 · séance 3 · jeu 17 sept
C’est quoi, la science ?
La sciencePOL-2000 · séance 3 · jeu 17 sept
Pourquoi se donner tout ce mal ?
« On dit que les jeunes ne votent pas. Mais j’ai parlé à tout le monde autour de moi, et tout le monde vote. »
schéma, pas des données
La sciencePOL-2000 · séance 3 · jeu 17 sept
Un livre, trois auteurs
Designing Social InquiryPrinceton University Press · 1994
Gary KingHarvardRobert O. KeohanePrincetonSidney VerbaHarvard · 1932-2019
KKVc’est eux
Sous-titre : “Scientific Inference in Qualitative Research”. Une seule logique, pour toute la recherche.
Photos : gking.harvard.edu · Chatham House, CC BY 2.0 · Harvard file photo. Couverture : Princeton University Press.
La sciencePOL-2000 · séance 3 · jeu 17 sept
Quatre traits de la recherche scientifique
1
2
3
4
King, Keohane et Verba (1994), Designing Social Inquiry, p. 7-9
La sciencePOL-2000 · séance 3 · jeu 17 sept
La méthode, pas le sujet
La démarcationPOL-2000 · séance 3 · jeu 17 sept
Quatre filtres pour une hypothèse
1PLAUSIBLE« elle doit avoir un rapport étroit avec le phénomène observé qu’elle prétend expliquer »
2VÉRIFIABLE« Il ne sert à rien de poser une hypothèse […] puisque nous ne pourrons jamais vérifier une telle hypothèse. »
3PRÉCISE« sa formulation doit éviter toute ambiguïté »
4GÉNÉRALE« son pouvoir d’explication va au-delà du cas particulier »
Pétry et Gélineau (2009), Comment construire une recherche empirique, p. 5-6
La démarcationPOL-2000 · séance 3 · jeu 17 sept
Deux prédictions
exemple
prédiction A
« Ce parti obtiendra entre 60 et 70 sièges. »
prédiction B
« Ce parti obtiendra un résultat qui reflétera l’humeur de l’électorat. »
Laquelle des deux peut avoir tort ?
Nature et sociétéPOL-2000 · séance 3 · jeu 17 sept
Le quark et l’électeur
les sciences de la natureles sciences sociales
DémontrerPOL-2000 · séance 3 · jeu 17 sept
Ce qu’on peut démontrer
“no one cares what we think—the scholarly community only cares what we can demonstrate.”King, Keohane and Verba (1994), Designing Social Inquiry
Alors, démontrons.
Et ça commence par décrire une variable.
L'inférencePOL-2000 · séance 3 · jeu 17 sept
Le but : l’inférence
Aller au-delà de ce qu’on a observé.
L'inférencePOL-2000 · séance 3 · jeu 17 sept
L’inférence
L’inférence, c’est “using the facts we know to learn about facts we do not know”.
King, Keohane and Verba (1994, p. 46)
L'inférencePOL-2000 · séance 3 · jeu 17 sept
Deux inférences
L'inférencePOL-2000 · séance 3 · jeu 17 sept
Le plan d’un article scientifique
DécrirePOL-2000 · séance 3 · jeu 17 sept
Décrire avant d’expliquer
DécrirePOL-2000 · séance 3 · jeu 17 sept
Trois questions pour une variable
résumée par
La forme
À quoi ça ressemble ?
Le centre
Où est le milieu ?
La dispersion
Ça s’étale comment ?
La formePOL-2000 · séance 3 · jeu 17 sept
1 de 3
La forme
La formePOL-2000 · séance 3 · jeu 17 sept
Une distribution
hist(df$cps25_interest_gen_1) = 100 personnes404 « ne sait pas » écartés
La formePOL-2000 · séance 3 · jeu 17 sept
Quatre formes
Gauche-droite · 0 à 10Symétrique
Intérêt pour la politique · 0 à 10Étirée vers la gauche
Pierre Poilievre · thermomètre 0 à 100En U
Personnes dans le ménage · 1 à 12Étirée vers la droite
Symétrique : elles se confondent. Étirée ou en U : elles s’écartent.
Étude électorale canadienne 2025
La forme · ça sert à quoi ?POL-2000 · séance 3 · jeu 17 sept
Ça sert à quoi ?
la forme
La moyenne d’une opinion divisée ne décrit presque personne.
Étude électorale canadienne 2025 · thermomètre de Pierre Poilievre, 0 à 100
Le centrePOL-2000 · séance 3 · jeu 17 sept
2 de 3
Le centre
Un seul chiffre pour tout le monde.
Le centrePOL-2000 · séance 3 · jeu 17 sept
Mode, médiane, moyenne
x <- c(2, 2, 2, 3)
MODEla valeur la plus fréquente
MÉDIANEla valeur du milieu, une fois rangées
MOYENNEla somme divisée par le nombre : le point d’équilibre
La moyenne court après la valeur extrême. La médiane reste.
Le centre · ça sert à quoi ?POL-2000 · séance 3 · jeu 17 sept
Ça sert à quoi ?
le mode
Dans une circonscription, le gagnant, c'est le mode. Pas la majorité.
Étude électorale canadienne 2025 · intentions de vote, sans les « ne sait pas »
Le centrePOL-2000 · séance 3 · jeu 17 sept
Dans les vraies données
> summary(df$cps25_household) Min. 1st Qu. Median Mean 3rd Qu. Max.
-99 2 2 4955 3 100000000
Étude électorale canadienne 2025
Le centre · ça sert à quoi ?POL-2000 · séance 3 · jeu 17 sept
Ça sert à quoi ?
la médiane
Pour parler du salaire « typique », on prend la médiane.
exemple fictif
Le centrePOL-2000 · séance 3 · jeu 17 sept
Quel centre, pour quelle variable ?
Nominaleintention de vote
Ordinalesatisfaction · démocratie
Numériqueâge
MODE
MÉDIANE
MOYENNE
Étude électorale canadienne 2025
Le centrePOL-2000 · séance 3 · jeu 17 sept
Moyenne ou médiane ? La règle du pouce
Calculez les deux.
proches : la moyenne
éloignées : la médiane, et on va voir la forme
des catégories (parti, religion) : ni l’une ni l’autre, le mode
Exemples : Étude électorale canadienne 2025
En direct · le centrePOL-2000 · séance 3 · jeu 17 sept
Le centre, dans R
>mean(df$cps25_age_in_years)
[1] 49.71511
>median(df$cps25_age_in_years)
[1] 50
>summary(df$cps25_age_in_years)
Min. 1st Qu. Median Mean 3rd Qu. Max.
18.00 35.00 50.00 49.72 64.00 96.00
>▍
La dispersionPOL-2000 · séance 3 · jeu 17 sept
3 de 3
La dispersion
Même centre, autre histoire.
La dispersionPOL-2000 · séance 3 · jeu 17 sept
Même moyenne
La dispersionPOL-2000 · séance 3 · jeu 17 sept
Couper en quatre
La dispersionPOL-2000 · séance 3 · jeu 17 sept
L’écart type (standard deviation)
La dispersion · ça sert à quoi ?POL-2000 · séance 3 · jeu 17 sept
Ça sert à quoi ?
l'écart type
Cote R = (Z, corrigé selon la force et la dispersion du groupe, + 5) × 5
BCI, « La cote de rendement au collégial : ce qu’elle est, ce qu’elle fait », 21 janvier 2025 ; groupes : exemple fictif
Une seule table, sept graphiques. Toujours demander : un pourcentage de quoi ?
Étude électorale canadienne 2025 · intentions de vote, sans les « ne sait pas »
DessinerPOL-2000 · séance 3 · jeu 17 sept
Un axe qui ment
✓l’axe part de 0
Mêmes données · Étude électorale canadienne 2025
En direct · une catégoriellePOL-2000 · séance 3 · jeu 17 sept
Des codes, pas des nombres
>table(df$cps25_demsat)
1 2 3 4 5
2971 10576 4313 1594 726
>levels(as_factor(df$cps25_demsat))
[1] "1. Very satisfied" "2. Fairly satisfied"
[3] "3. Not very satisfied" "4. Not at all satisfied"
[5] "5. Don't know/ Prefer not to answer"
>▍
En direct · le scriptPOL-2000 · séance 3 · jeu 17 sept
Le script entier, 1 de 3
seance3.R · à refaire chez vous
# POL-2000 · séance 3 · Les statistiques descriptives et la visualisation# À refaire chez vous, ligne par ligne, Ctrl + Entrée.library(ces)
library(dplyr)
library(haven)
library(ggplot2)
df <-readRDS("ces2025.rds") # sauvegardé à la séance 2 ; sinon : df <- get_ces("2025")# 1. Le centremean(df$cps25_age_in_years)
median(df$cps25_age_in_years)
summary(df$cps25_age_in_years)
table(df$cps25_demsat)
En direct · le scriptPOL-2000 · séance 3 · jeu 17 sept
Le script entier, 2 de 3
seance3.R · la suite
# 2. Une valeur extrêmesummary(df$cps25_household)
sort(df$cps25_household, decreasing =TRUE)[1:3]
# 3. La dispersionsd(df$cps25_age_in_years)
quantile(df$cps25_age_in_years)
IQR(df$cps25_age_in_years)
En direct · le scriptPOL-2000 · séance 3 · jeu 17 sept
Le script entier, 3 de 3
seance3.R · la fin
# 4. Dessiner une variableggplot(df, aes(x = cps25_age_in_years)) +geom_histogram(binwidth =5, boundary =15)
ggplot(df, aes(x = cps25_age_in_years)) +geom_boxplot()
ggplot(df, aes(x = cps25_age_in_years)) +geom_density()
# 5. Le vote, selon le groupe d'âge
d <- df |>filter(cps25_votechoice %in%1:5) |>mutate(parti =as_factor(cps25_votechoice),
age =as.numeric(cps25_age_in_years),
groupe_age =cut(age, breaks =c(18, 35, 55, Inf), right =FALSE,
labels =c("18-34", "35-54", "55 et plus")))
ggplot(d, aes(x = groupe_age, fill = parti)) +geom_bar(position ="dodge")
# 6. À vous : refaites 1, 3 et 4 avec cps25_interest_gen_1. Regardez le minimum.
Avant jeudi prochainPOL-2000 · séance 3 · jeu 17 sept
Avant jeudi prochain
Avant jeudi prochainPOL-2000 · séance 3 · jeu 17 sept