Projet Quarto

Auteur·rice

MEYTE

1 Introduction

Pour présenter Quarto, nous allons nous référer à l’article suivant : Evans (2025).

L’auteur montre un exemple de formules mathematiques en Latex.Nous avons reproduit son exemple (Figure 2. de l’article) ci-dessous

2 L’inteligence et la progammation en R

Let \(Y \sim \text{Bin}(n,p)\), where \(n \ge 1\) and \(0 \le p \le 1\), then the probability mass function of \(Y\) is given by

\[ P(Y = y) = \binom{n}{y} p^y (1-p)^{n-y}, \quad y = 0, 1, \dots, n. \]

Source : Evans (2025)

2.1 Les chunks R dans Quarto

2.2 Rappel sur la loi de Poisson

On dit que \(X\) suit une loi de Poisson de paramètre \(\lambda > 0\) si

\[ P(X=x)=\frac{\lambda^x}{x!}e^{-\lambda}, \quad x \in \mathbb{N}. \]

On peut utiliser R pour calculer ces probabilites par exemple \(\lambda = 3\)

[1] 2.996693

On trouve environ 3 qui est le paramètre \(\lambda\).

On peut aussi exécuter les chunks directement à l’intérieur d’une phrase :

La somme vaut environ 3, représentant le paramètre \(\lambda\).

2.3 Des chunks en python

Mean: 3.0
Median: 3.0

2.4 Application Shiny

Digramme dynamique

<– rsconnect::deployApp() –>

library(readr)
library(dplyr)

Attachement du package : 'dplyr'
Les objets suivants sont masqués depuis 'package:stats':

    filter, lag
Les objets suivants sont masqués depuis 'package:base':

    intersect, setdiff, setequal, union
library(tidyr)
library(ggplot2)
install.packages("ggplot2")
Warning: le package 'ggplot2' est en cours d'utilisation et ne sera pas
installé
# 1. IMPORT DONNÉES KENO
keno_202511_6 <- read_delim(
  "keno_202511 6.csv",
  delim = ";",
  escape_double = FALSE, 
  trim_ws = TRUE
) |>
  select(-devise, -...23, -numero_jokerplus, -multiplicateur, -date_de_forclusion) |>
  mutate(date_de_tirage = as.Date(date_de_tirage, format = "%d/%m/%Y"))
New names:
• `` -> `...23`
Rows: 100 Columns: 23
── Column specification ────────────────────────────────────────────────────────
Delimiter: ";"
chr  (4): date_de_tirage, date_de_forclusion, numero_jokerplus, devise
dbl (18): annee_numero_de_tirage, boule1, boule2, boule3, boule4, boule5, bo...
lgl  (1): ...23

ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
# 2. TRANSFORMATION EN FORMAT LONG
loto_long <- keno_202511_6 |>
  pivot_longer(
    cols = starts_with("boule"),
    names_to = "numero",
    values_to = "valeur",
    names_prefix = "boule"
  ) |>
  select(date_de_tirage, numero, valeur)

# 3. FONCTION PROP.TABLE ADAPTÉE
prop_keno <- function(data) {
  tab <- table(data$valeur)
  prop <- prop.table(tab)
  
  data.frame(
    valeur = as.numeric(names(tab)),
    count  = as.vector(tab),
    freq   = as.vector(prop)
  ) |>
    arrange(valeur)
}

# 4. APPEL DE LA FONCTION
prop_keno(loto_long)
   valeur count     freq
1       1    30 0.018750
2       2    26 0.016250
3       3    28 0.017500
4       4    32 0.020000
5       5    17 0.010625
6       6    21 0.013125
7       7    37 0.023125
8       8    23 0.014375
9       9    33 0.020625
10     10    30 0.018750
11     11    28 0.017500
12     12    28 0.017500
13     13    38 0.023750
14     14    35 0.021875
15     15    21 0.013125
16     16    23 0.014375
17     17    33 0.020625
18     18    19 0.011875
19     19    38 0.023750
20     20    24 0.015000
21     21    29 0.018125
22     22    20 0.012500
23     23    29 0.018125
24     24    29 0.018125
25     25    27 0.016875
26     26    28 0.017500
27     27    36 0.022500
28     28    33 0.020625
29     29    26 0.016250
30     30    35 0.021875
31     31    29 0.018125
32     32    24 0.015000
33     33    24 0.015000
34     34    25 0.015625
35     35    29 0.018125
36     36    24 0.015000
37     37    29 0.018125
38     38    31 0.019375
39     39    27 0.016875
40     40    27 0.016875
41     41    38 0.023750
42     42    30 0.018750
43     43    25 0.015625
44     44    30 0.018750
45     45    25 0.015625
46     46    32 0.020000
47     47    31 0.019375
48     48    30 0.018750
49     49    32 0.020000
50     50    30 0.018750
51     51    30 0.018750
52     52    29 0.018125
53     53    32 0.020000
54     54    24 0.015000
55     55    33 0.020625
56     56    24 0.015000
# 5. FRÉQUENCE PAR DATE (version alternative)
nombre_dates <- length(unique(loto_long$date_de_tirage))

freq_par_date <- loto_long |>
  group_by(valeur) |>
  summarise(
    count = n(),
    freq = count / nombre_dates,
    .groups = "drop"
  ) |>
  arrange(valeur)

# 6. CALCUL DU KHI-DEUX SUR LES COUNTS
df <- freq_par_date   # tableau contenant valeur + count

expected <- (16/56) * 100   # ton attendu en pourcentage

df <- df |>
  mutate(
    chi2 = (count - expected)^2 / expected
  )

chi2_total <- sum(df$chi2)
chi2_total
[1] 45.14
set.seed(123)
res <- c()
ech <- c()

for (i in 1:10000) {
  for (t in 1:100) {
    ech <- c(ech, sample(1:56, 16, replace = FALSE))
  }
  res <- c(res, min(table(ech)))
  ech <- c()
}
# Transformation en tibble
res_tbl <- tibble(value = res)

# Bar plot rouge
res_tbl %>%
  ggplot(aes(x = value)) +
  geom_bar(fill = "red") +           
  scale_x_continuous(breaks = 12:25) +
  labs(x = "Minimum des tirages", y = "Fréquence", title = "Distribution du minimum des tirages") +
  theme_minimal()

# Compter combien de valeurs de res sont <= 17
res %>%
  as_tibble() %>%
  filter(value <= 17) %>%
  summarise(count = n())
# A tibble: 1 × 1
  count
  <int>
1  2615

Les références

Evans, Kristian. 2025. « Innovative and interactive statistics teaching using Quarto ». Teaching Statistics.