Laurence-Olivier M. Foisy POL-2000 · séance 2 · jeu 10 sept

POL-2000 · Méthodologie quantitative

Introduction à R et à Positron


Séance 2 · jeudi 10 septembre 2026

Université Laval Département de science politique
Faculté des sciences sociales
Automne 2026
Où on en est POL-2000 · séance 2 · jeu 10 sept
lecturevous êtes ici13 sept210 sept317 sept424 sept51 oct68 oct715 oct822 oct95 nov1012 nov1119 nov1226 nov133 déc1410 déc1 · Concepts de base2 · Régression3 · Inférence causale
02 jeudi 10 septembre · partie 1 · Concepts de base

Introduction à R et à Positron

R à partir de zéro.

Apportez l'ordinateur, installé.

> 1 + 1[1] 2>
Un tour de salle POL-2000 · séance 2 · jeu 10 sept

À main levée

  1. R et Positron sont installés ?
  2. Vous avez ouvert Positron au moins une fois ?
  3. Avez-vous accepté l’invitation à Slack ?
  4. Avez-vous accepté l’invitation à Datacamp ?
Pourquoi R POL-2000 · séance 2 · jeu 10 sept

« Pourquoi pas Excel ? »


Parce qu’un clic ne laisse pas de trace.

Pourquoi R POL-2000 · séance 2 · jeu 10 sept

Pourquoi R ?

Libre

Le code est ouvert. Tout le monde peut le lire, le vérifier, le modifier.

Gratuit

Pour toujours, pour tout le monde. Pas de licence à payer, pas d’abonnement.

Une communauté active

Des millions de personnes. Votre problème a déjà été résolu, et la réponse est en ligne.

Fait par ses utilisateurs

Pour ses utilisateurs. Un besoin apparaît, quelqu’un écrit l’outil.

Facile à étendre

Écrire une nouvelle fonction, l’empaqueter, la donner aux autres : c’est prévu.

24 957 packages

Sur le CRAN, le dépôt officiel, comptés cette semaine. Des milliers d’autres ailleurs.

Le langage des sciences sociales

Le plus utilisé dans votre domaine. Vos collègues, vos profs, vos futures données.

Reproductible

Un script se relance et redonne le même résultat. À vous, à moi, dans dix ans.

Le code se partage

Un fichier texte. On l’envoie, on le lit, on le corrige ensemble.

On retrouve ses erreurs

Chaque étape est écrite. Une erreur a une ligne, et la ligne se corrige.

Pourquoi R POL-2000 · séance 2 · jeu 10 sept

Vous pouvez même créer le vôtre

Le haut de la page du package ces sur le CRAN : Access to Canadian Election Study Data, version 1.1.0, auteur et mainteneur Laurence-Olivier M. Foisy.

cran.r-project.org/package=ces

Le package ces : les données de l’Étude électorale canadienne, de 1965 à 2025, en une ligne de R.

Publié sur le dépôt officiel de R.

install.packages("ces")
Pourquoi R POL-2000 · séance 2 · jeu 10 sept
Pourquoi R POL-2000 · séance 2 · jeu 10 sept
Graphique à barres : intention de vote selon l’âge à l’élection fédérale de 2025, cinq partis par groupe d’âge.
Les plus beaux graphiques : ggplot2 · l’Étude électorale canadienne 2025
Pourquoi R POL-2000 · séance 2 · jeu 10 sept

Ils l’utilisent aussi

analyse de données à grande échelle
tous ses graphiques d’actualité
infographies et cartes électorales
statistiques du baseball
la Boussole électorale
analyse et prévision
expérimentation et statistiques
prévision de la demande
Pourquoi R POL-2000 · séance 2 · jeu 10 sept

Les logiciels d’analyse

Python Python gratuit · généraliste
SPSS SPSS payant · menus et clics
Stata Stata payant · commandes
Julia Julia gratuit · rapide, récent
Excel Excel payant · le tableur
R R gratuit · libre · fait pour les données
Le bureau POL-2000 · séance 2 · jeu 10 sept

Les deux outils du semestre

R LE LANGAGE la calculatrice
+
Positron L’ÉDITEUR le bureau de travail
Le bureau POL-2000 · séance 2 · jeu 10 sept

Positron, zone par zone

La fenêtre de Positron : l’explorateur de fichiers à gauche, l’éditeur avec un script au centre, la console en bas, les variables et un histogramme à droite.

cliquez, ou flèche droite : une zone à la fois

Avant de commencer POL-2000 · séance 2 · jeu 10 sept

Avant de commencer : l’arborescence des fichiers

Canada
Québec
Université Laval
Pavillon De Koninck
local 3159 · vous
UNE ADRESSE

Pour trouver ce local, on va du plus grand au plus petit : le pays, la ville, l’université, le pavillon, la porte. Un fichier a une adresse pareille.

Avant de commencer POL-2000 · séance 2 · jeu 10 sept

Deux façons d’écrire un chemin

ABSOLU · depuis la racine de l’ordinateur
Windows
C: /Users/vous/Documents / pol2000 /data/ces2025.csv
Mac
/Users/vous/Documents / pol2000 /data/ces2025.csv
vous moi l’auxiliaire l’examen

Ne marche que sur votre ordinateur.

RELATIF · depuis le dossier ouvert dans Positron
/ ouvert dans Positron pol2000 /data/ces2025.csv
vous moi l’auxiliaire l’examen

Marche partout où le dossier pol2000 existe.

c’est celui-là
ATTENTION, WINDOWS
C: \Users\vous\Documents \ pol2000 \data\ces2025.csv
Error: '\U' used without hex digits in character string
remplacez \ par /
C: /Users/vous/Documents / pol2000 /data/ces2025.csv
Ou mieux : un chemin relatif.
Avant de commencer POL-2000 · séance 2 · jeu 10 sept

Charger ses propres données

.csv

Le tableau texte universel. Excel, Google Sheets et tous les sites de données l’exportent.

df <- read.csv("data/ces.csv")
livré avec R
.rds

Le format de R. Garde tout : les étiquettes, les types, les facteurs. Le package ces vous donne des .rds.

df <- readRDS("data/ces.rds")
livré avec R
.sav

SPSS. La plupart des grands sondages de sciences sociales sont livrés ainsi, étiquettes comprises.

df <- haven::read_sav("data/ces.sav")
install.packages("haven")
.xlsx

Excel. Une feuille à la fois ; dites laquelle avec sheet = si ce n’est pas la première.

df <- readxl::read_excel("data/ces.xlsx")
install.packages("readxl")

Toujours le même geste : un nom d’objet, la flèche, une fonction qui lit, et entre guillemets le chemin relatif, depuis le dossier ouvert dans Positron. Le tableau apparaît dans « Variables ».

Le bureau POL-2000 · séance 2 · jeu 10 sept

Avant de commencer : la mentalité à adopter

Le revenu influence-t-il le vote ? Personne ne code ça d’un coup.

Trop gros. Donc on coupe.

En direct · la console POL-2000 · séance 2 · jeu 10 sept

Une calculatrice

> 2 + 2
[1] 4
> 10 / 3
[1] 3.333333
> 2^10
[1] 1024
> 1:30
 [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22
[23] 23 24 25 26 27 28 29 30

Le [1] et le [23] : la position du premier élément de chaque ligne. R répond toujours par une liste, même d’un seul nombre.

> 
En direct · les objets POL-2000 · séance 2 · jeu 10 sept

Ranger un résultat

> age <- 25

Rien ne s’affiche. R a rangé 25 dans age. Regardez « Variables ».

> age
[1] 25
> age + 1
[1] 26
> age
[1] 25

Toujours 25. Calculer n’est pas ranger : sans flèche, rien ne change.

> age <- age + 1
age
[1] 26
> 
En direct · les objets POL-2000 · séance 2 · jeu 10 sept

L’anatomie d’une ligne

moyenne <- mean(ages, na.rm = TRUE)
12345
LA LIGNE ENTIÈRE

Lue de droite à gauche : calcule ceci, range-le là.

En direct · les vecteurs POL-2000 · séance 2 · jeu 10 sept

Plusieurs valeurs, un seul objet

# quatre personnes, quatre âges
ages
24 [1] FALSE
30 [2] TRUE
19 [3] FALSE
45 [4] TRUE
29.5
> 
QUATRE VALEURS

Quatre ami.e.s, quatre âges. Des valeurs qui vont ensemble, mais encore en vrac.

En direct · les vecteurs POL-2000 · séance 2 · jeu 10 sept

Quatre types de variables

25 class() · numeric un nombre
"Québec" class() · character du texte
TRUE class() · logical vrai ou faux
NA class() · manquant on ne sait pas
En direct · les données POL-2000 · séance 2 · jeu 10 sept

Structure des données : 1D vs 2D

1 DIMENSION · LE VECTEUR
noms
"Alice""Bob"
ages
2430
noms <- c("Alice", "Bob")
ages <- c(24, 30)
2 DIMENSIONS · LE TABLEAU (data frame)
df
nomage 1Alice24 2Bob30
age2430
df$age → 27
df <- data.frame(nom = noms, age = ages)
> ages[1] 24 30
UNE DIMENSION

Un vecteur : une rangée de cases. On avance d’une case à la suivante, dans un seul sens.

En direct · les fonctions POL-2000 · séance 2 · jeu 10 sept

Une fonction, c’est une machine

LA BOÎTE NOIRE

Des valeurs entrent, un résultat sort. On ne voit pas dedans, et c’est correct : c’est une fonction.

En direct · les erreurs POL-2000 · séance 2 · jeu 10 sept

Les erreurs classiques

La parenthèse qui manque
ouimean(ages)
nonmean(ages
Error: unexpected end of input

R attend encore. Il ne dit rien, ou il dit ceci : il manque quelque chose pour fermer.

La virgule qui manque
ouic(24, 30)
nonc(24 30)
Error: unexpected numeric constant

Deux valeurs collées. R lit un nombre là où il attendait une virgule.

La majuscule de trop
ouiages
nonAges
Error: object 'Ages' not found

R distingue les majuscules. Ages et ages sont deux objets, et le second n’existe pas.

En direct · les erreurs POL-2000 · séance 2 · jeu 10 sept

Lire une erreur

1 library(dplyr)
2 df <- swiss
3 df |> select(fertility, Education)
Error in select(df, fertility, Education) :
  Can't select columns that don't exist.
✖ Column `fertility` doesn't exist.
fertility Fertility R distingue les majuscules
UNE ERREUR Vous ne casserez rien.

C’est R qui dit : « je n’ai pas compris ».

  1. Lire le message
  2. Corriger la ligne
  3. Relancer
Un jeu de données POL-2000 · séance 2 · jeu 10 sept

Les packages : la boîte à outils

UNE FOIS Installer
install.packages("tidyverse")
puis
CHAQUE SESSION Charger
library(tidyverse)
Un jeu de données POL-2000 · séance 2 · jeu 10 sept

L’Étude électorale canadienne 2025

20 180 personnes sondées pendant la campagne fédérale de 2025
1 440 colonnes : une par question

Le grand sondage universitaire de chaque élection fédérale depuis 1965. Une ligne par personne, un code par réponse. Il arrive dans R par le package ces ; rien à télécharger à la main.

cps25_votechoice
pour quel parti la personne compte voter (codes 1 à 8)
cps25_age_in_years
âge, en années
cps25_education
plus haut niveau de scolarité (codes 1 à 11)
cps25_province
province ou territoire (11 = Québec)
cps25_income
revenu du ménage, par tranche (codes 1 à 8)
cps25_genderid
identité de genre
Un jeu de données POL-2000 · séance 2 · jeu 10 sept

Charger

> library(ces)

Le package de tantôt. Installé une fois avec install.packages("ces"), chargé à chaque session avec library().

> library(dplyr)
library(haven)

dplyr manipule les tableaux ; haven lit les étiquettes des sondages (« 2 = Conservative Party »). Les deux viennent avec le tidyverse.

> df <- get_ces("2025")
trying URL 'https://dataverse.harvard.edu/api/access/datafile/13958997'
downloaded 57.6 MB
Data loaded successfully: 20180 rows and 1440 columns
CES 2025 (web) dataset ready for use
> saveRDS(df, "ces2025.rds")
> 
Un jeu de données POL-2000 · séance 2 · jeu 10 sept

Explorer

> nrow(df)
[1] 20180

Une ligne, une personne qui a répondu au sondage.

> ncol(df)
[1] 1440

Une colonne, une question. Mille quatre cent quarante.

> names(df)[1:8]
[1] "cps25_time"           "cps25_consent"        "cps25_citizenship"    "cps25_citizen_other" 
[5] "cps25_citizen_other2" "cps25_citizen_other3" "cps25_age_in_years"   "cps25_genderid"      

Les huit premiers noms sur 1 440. cps25 : « campaign period survey », la vague pendant la campagne de 2025.

> 
Un jeu de données POL-2000 · séance 2 · jeu 10 sept

Regarder

> df |> select(cps25_age_in_years, cps25_province, cps25_votechoice) |> head()
# A tibble: 6 × 3
  cps25_age_in_years cps25_province           cps25_votechoice         
  <dbl+lbl>          <dbl+lbl>                <dbl+lbl>                
1 69 [69. 69]         2 [2. British Columbia] 2 [2. Conservative Party]
2 61 [61. 61]         1 [1. Alberta]          3 [3. NDP]               
3 54 [54. 54]        11 [11. Quebec]          2 [2. Conservative Party]
4 28 [28. 28]         9 [9. Ontario]          1 [1. Liberal Party]     
5 63 [63. 63]         9 [9. Ontario]          1 [1. Liberal Party]     
6 28 [28. 28]         2 [2. British Columbia] 2 [2. Conservative Party]

select() choisit trois colonnes sur 1 440, head() garde six lignes ; on y revient dans un instant. Une ligne, une personne. Une case : un code et, entre crochets, ce qu’il veut dire.

> View(df)

S’ouvre dans l’onglet Données de Positron. Le tableau entier, à faire défiler : 20 180 lignes, 1 440 colonnes.

> 
Un jeu de données POL-2000 · séance 2 · jeu 10 sept

Une variable

> length(df$cps25_age_in_years)
[1] 20180

Le $ sort une colonne du tableau. Une colonne, c’est un vecteur : 20 180 âges. (Ne l’affichez pas tout seul : R les déverse tous.)

> mean(df$cps25_age_in_years)
[1] 49.71511
> 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 

Six chiffres pour une variable.

> 
Un jeu de données POL-2000 · séance 2 · jeu 10 sept

Des codes et leurs étiquettes

> table(df$cps25_votechoice)
   1    2    3    4    5    6    7    8 
6528 4644 1258 1011  317   82 1887  182 

Pour qui comptez-vous voter ? Un effectif par code. Qui est le 2 ?

> levels(as_factor(df$cps25_votechoice))
[1] "1. Liberal Party"                    "2. Conservative Party"              
[3] "3. NDP"                              "4. Bloc Québécois"                  
[5] "5. Green Party"                      "6. Another party (please specify)"  
[7] "7. Don't know/ Prefer not to answer" "8. People's Party"                  

as_factor(), de haven, lit l’étiquette collée à chaque code. 1 libéral, 2 conservateur, 3 NPD, 4 Bloc, 5 vert ; 6, 7 et 8 : autre, ne sait pas, PPC.

> 
Un jeu de données POL-2000 · séance 2 · jeu 10 sept

Sa forme

hist(df$cps25_age_in_years)
mean(df$cps25_age_in_years)
[1] 49.71511
05001000150020005631392146819231756169915401630178919421605136510024082030405060708090100df$cps25_age_in_yearsFrequencymoyenne · 49,7 ans
Un jeu de données POL-2000 · séance 2 · jeu 10 sept

Choisir des colonnes, garder des lignes

> df |> select(cps25_age_in_years, cps25_province, cps25_votechoice) |> head(3)
# A tibble: 3 × 3
  cps25_age_in_years cps25_province           cps25_votechoice         
  <dbl+lbl>          <dbl+lbl>                <dbl+lbl>                
1 69 [69. 69]         2 [2. British Columbia] 2 [2. Conservative Party]
2 61 [61. 61]         1 [1. Alberta]          3 [3. NDP]               
3 54 [54. 54]        11 [11. Quebec]          2 [2. Conservative Party]

select() choisit des colonnes. Trois sur 1 440.

> df |> filter(cps25_province == 11) |> nrow()
[1] 4906

filter() garde des lignes. Le code 11, c’est le Québec : 4 906 répondant.e.s sur 20 180.

> 
Un jeu de données POL-2000 · séance 2 · jeu 10 sept

Le pipe : « et ensuite »

SANS · on lit de l’intérieur vers l’extérieur
s_habiller(
  se_secher(
    se_doucher(
      se_lever(moi)
    )
  )
)
AVEC · on lit dans l’ordre
moi |>
  se_lever() |>
  se_doucher() |>
  se_secher() |>
  s_habiller()

Le pipe prend ce qui est à gauche et le passe à la fonction de droite. Lisez |> comme « et ensuite ». Vous croiserez aussi %>% : même chose, plus vieux.

Un jeu de données POL-2000 · séance 2 · jeu 10 sept

Enchaîner

> df |>
  filter(cps25_province == 11) |>
  select(cps25_age_in_years, cps25_province, cps25_votechoice) |>
  head(3)
# A tibble: 3 × 3
  cps25_age_in_years cps25_province  cps25_votechoice         
  <dbl+lbl>          <dbl+lbl>       <dbl+lbl>                
1 54 [54. 54]        11 [11. Quebec] 2 [2. Conservative Party]
2 60 [60. 60]        11 [11. Quebec] 1 [1. Liberal Party]     
3 46 [46. 46]        11 [11. Quebec] 2 [2. Conservative Party]

Trois verbes à la suite : le pipe passe le tableau de l’un au suivant. Une étape par ligne, ça se lit comme une recette.

> 
Un jeu de données POL-2000 · séance 2 · jeu 10 sept

Résumer par groupe

> df |>
  filter(cps25_votechoice %in% 1:5) |>
  mutate(parti = as_factor(cps25_votechoice)) |>
  group_by(parti) |>
  summarise(age = mean(cps25_age_in_years), n = n())
# A tibble: 5 × 3
  parti                   age     n
  <fct>                 <dbl> <int>
1 1. Liberal Party       52.6  6528
2 2. Conservative Party  49.7  4644
3 3. NDP                 44.7  1258
4 4. Bloc Québécois      52.9  1011
5 5. Green Party         45.8   317

filter() garde les cinq grands partis ; mutate() crée une colonne ; group_by() sépare ; summarise() résume chaque groupe. Une question : l’âge moyen change-t-il d’un parti à l’autre ? Le NPD et les verts recrutent plus jeune.

> 
Un jeu de données POL-2000 · séance 2 · jeu 10 sept

Un graphique, couche par couche

d, le tableau préparé avec filter(), mutate() et count() : la recette est dans le script de la séance.
ggplot(d, aes(x = scolarite, y = part, fill = parti)) +
  geom_col(position = "dodge") +
  labs(x = "Scolarité", y = "Part des intentions de vote", fill = "Parti", title = "Étude électorale canadienne 2025") +
  theme_minimal()
Étude électorale canadienne 20250.00.20.4Secondaire ou moinsCollégialUniversitaireScolaritéscolaritePart des intentions de votepartPartiWhich party do you think youwill vote for? - Selected Choice1. Liberal Party2. Conservative Party3. NDP4. Bloc Québécois5. Green Party
Un jeu de données POL-2000 · séance 2 · jeu 10 sept

Une ligne, un résultat

> d2 <- df |>
  filter(cps25_votechoice %in% c(1:5, 8), cps25_income <= 8) |>
  mutate(conservateur = cps25_votechoice == 2)

Un parti nommé, un revenu donné. conservateur vaut TRUE ou FALSE : R compte 1 ou 0.

> mean(d2$conservateur)
[1] 0.3305243

La moyenne de vrais et de faux, c’est une proportion : 33 % comptent voter conservateur.

> lm(conservateur ~ cps25_income, data = d2)
Call:
lm(formula = conservateur ~ cps25_income, data = d2)

Coefficients:
 (Intercept)  cps25_income  
     0.28364       0.01001  
> 
Un jeu de données POL-2000 · séance 2 · jeu 10 sept

Le script entier, 1 de 4

seance2.R · à refaire chez vous, puis à modifier
# POL-2000 · séance 2 · Introduction à R et à Positron
# À refaire chez vous, ligne par ligne, Ctrl + Entrée.

# 1. Les boîtes à outils (installées une fois : install.packages(c("ces", "tidyverse")))
library(ces)       # l'Étude électorale canadienne, de 1965 à 2025
library(dplyr)     # manipuler des tableaux
library(haven)     # lire les étiquettes des sondages
library(ggplot2)   # dessiner

# 2. L'Étude électorale canadienne 2025 : 20 180 personnes, 1 440 questions
df <- get_ces("2025")          # Internet, une trentaine de secondes
saveRDS(df, "ces2025.rds")     # la prochaine fois : df <- readRDS("ces2025.rds")
nrow(df)
ncol(df)
names(df)[1:8]
df |> select(cps25_age_in_years, cps25_province, cps25_votechoice) |> head()
Un jeu de données POL-2000 · séance 2 · jeu 10 sept

Le script entier, 2 de 4

seance2.R · la suite
# 3. Une variable
mean(df$cps25_age_in_years)
summary(df$cps25_age_in_years)
hist(df$cps25_age_in_years)
table(df$cps25_votechoice)
levels(as_factor(df$cps25_votechoice))

# 4. Choisir des colonnes, garder des lignes, résumer par groupe
df |> select(cps25_age_in_years, cps25_province, cps25_votechoice) |> head(3)
df |> filter(cps25_province == 11) |> nrow()
df |>
  filter(cps25_votechoice %in% 1:5) |>
  mutate(parti = as_factor(cps25_votechoice)) |>
  group_by(parti) |>
  summarise(age = mean(cps25_age_in_years), n = n())
Un jeu de données POL-2000 · séance 2 · jeu 10 sept

Le script entier, 3 de 4

seance2.R · la fin
# 5. Un graphique, couche par couche
d <- df |>
  filter(cps25_votechoice %in% 1:5, cps25_education <= 11) |>
  mutate(parti = as_factor(cps25_votechoice),
         scolarite = cut(cps25_education, c(0, 5, 7, 11),
                         labels = c("Secondaire ou moins", "Collégial", "Universitaire"))) |>
  count(scolarite, parti) |>
  group_by(scolarite) |>
  mutate(part = n / sum(n))
ggplot(d, aes(x = scolarite, y = part, fill = parti)) +
  geom_col(position = "dodge") +
  labs(x = "Scolarité", y = "Part des intentions de vote", fill = "Parti",
       title = "Étude électorale canadienne 2025") +
  theme_minimal()
Un jeu de données POL-2000 · séance 2 · jeu 10 sept

Le script entier, 4 de 4

seance2.R · la fin
# 6. Une ligne, un résultat
d2 <- df |>
  filter(cps25_votechoice %in% c(1:5, 8), cps25_income <= 8) |>
  mutate(conservateur = cps25_votechoice == 2)
lm(conservateur ~ cps25_income, data = d2)

# 7. À vous : remplacez cps25_income par cps25_education, partout. Que change-t-il ?
L'assistant d'IA POL-2000 · séance 2 · jeu 10 sept

Utiliser l’IA pour coder


L'assistant d'IA POL-2000 · séance 2 · jeu 10 sept

Le contrat, rappel

IAfaire mieuxl'effort se voiten faire moinsla paresse aussi
L'assistant d'IA POL-2000 · séance 2 · jeu 10 sept

Ce que ça coûte

Je suis biaisé.


Ma carrière repose sur l’IA. Je pense que vous devez l’apprendre pour vous placer dans un monde qui change vite.

L'assistant d'IA · ce que ça coûte POL-2000 · séance 2 · jeu 10 sept

L’IA est tangible

Des rangées d’armoires de serveurs dans un centre de données
Un centre de données. Du béton, du cuivre, du courant, de l’eau.
  1. 100 000 GPU dans un seul bâtiment, à Memphis NVIDIA, 2024
  2. 35 turbines à gaz brûlées sur place pour l’alimenter, 15 permises TechCrunch, 2025
  3. 35 000 foyers québécois l’électricité de ces GPU pendant un an NVIDIA · Hydro-Québec
  4. 700 000 litres d’eau évaporés pour entraîner GPT-3 Li et al., 2025
  5. 25 t de CO₂e pour entraîner BLOOM, mesurées au compteur Luccioni et al., 2023
  6. 1,5 % de l’électricité mondiale pour les centres de données en 2024, le double en 2030 AIE, 2025
  7. − 17 % à l’examen pour les élèves qui ont pratiqué avec ChatGPT sans garde-fou Bastani et al., 2025
  8. − 19 % d’emploi chez les 22 à 25 ans dans les métiers les plus exposés à l’IA Brynjolfsson et al., 2026

Sources NVIDIA, communiqué, 28 oct. 2024 · TechCrunch, 3 juill. 2025 · Hydro-Québec, 17 600 kWh par foyer et par an · Li, Yang, Islam & Ren, 2025, Communications of the ACM · Luccioni, Viguier & Ligozat, 2023, JMLR · AIE, Energy and AI, 2025 · Bastani et al., 2025, PNAS · Brynjolfsson, Chandar & Chen, 2026, Stanford Digital Economy Lab

L'assistant d'IA POL-2000 · séance 2 · jeu 10 sept

La bonne question

non

ça marche pas, pourquoi ?

oui

Je suis étudiant.e en science politique, débutant.e en R, dans Positron.

Je veux garder seulement les provinces dont la scolarité dépasse 20 %.

Voici mon code : df |> filter(education > 20)
Et l’erreur : object 'education' not found

Explique-moi ce qui cloche et pourquoi. Ne réécris pas tout le script.

LA MAUVAISE QUESTION

Rien à quoi répondre. L’assistant devinera, et il devinera avec assurance.

Avant jeudi prochain POL-2000 · séance 2 · jeu 10 sept

Avant jeudi prochain


Avant jeudi prochain POL-2000 · séance 2 · jeu 10 sept
Avant jeudi prochain POL-2000 · séance 2 · jeu 10 sept

Jeudi prochain


Les statistiques descriptives et la visualisation des données.

Laurence-Olivier M. Foisy POL-2000 · séance 2 · jeu 10 sept

Merci.


Université Laval Département de science politique
Faculté des sciences sociales
POL-2000 · Automne 2026
1 / 52