Write out the intro, move team presentation to intro, add proof for normality test

main
Shad Amethyst 2 years ago
parent ce2b22848d
commit 18831a5b34

@ -6,7 +6,7 @@ Report for my fourth-year internship, in latex.
```sh ```sh
# Download required programs and libraries # Download required programs and libraries
sudo pacman -S texlive-core texlive-latexextra texlive-fontsextra texlive-langextra inkscape sudo pacman -S texlive-core texlive-latexextra texlive-fontsextra texlive-langextra texlive-science ttf-fira-code inkscape graphviz
git clone https://aur.archlinux.org/ttf-tahoma.git git clone https://aur.archlinux.org/ttf-tahoma.git
git clone https://aur.archlinux.org/ttf-adobe-source-sans-fonts.git git clone https://aur.archlinux.org/ttf-adobe-source-sans-fonts.git
git clone https://github.com/pinam45/utbm-latex-internship-report-covers git clone https://github.com/pinam45/utbm-latex-internship-report-covers

@ -0,0 +1,18 @@
\begin{figure}
\begin{align*}
\sigma_{low} &= S_{n-1}^2 - z_{1-\alpha/2} \frac{\sqrt{2}S_{n-1}^2}{\sqrt{n}} \\
\sigma_{high} &= S_{n-1}^2 + z_{1-\alpha/2} \frac{\sqrt{2}S_{n-1}^2}{\sqrt{n}} \\
\mathcal{P}(\sigma_{low} \le \sigma \le \sigma_{high}) &\approx 1 - \alpha \\
z_a \;\text{est tel que} &\int_{-\infty}^{z_a}{\frac{e^{-\frac{x^2}{2}}}{\sqrt{2\pi}}}dx=a \\
\end{align*}
\begin{align*}
&I = [\mu^{\star} \pm \sigma_{high} \cdot z_{1 - \beta/2}] \\
&\text{Avec un taux d'erreur de $\alpha$,} \\
X \hookrightarrow \mathcal{N}(\mu, \sigma^2)
&\Rightarrow \forall i, \mathcal{P}(\omega_i \in I) = 1 - \beta' \ge 1 - \beta \\
&\Rightarrow S = \sum_{i=1}^{n}{\mathds{1}_{I}(\omega_i)} \hookrightarrow \mathcal{B}(1 - \beta', n) \\
&\Rightarrow \mathbb{E}(S) = (1 - \beta') n \ge (1 - \beta) n
\end{align*}
\caption{Calcul du test de normalité par valeurs anormales}
\label{normalitytest}
\end{figure}

@ -250,3 +250,23 @@
pages={1--66}, pages={1--66},
year={2004} year={2004}
} }
@misc{criterion,
title={Criterion.rs},
author={Brook Heisler},
howpublished="\url{https://crates.io/crates/criterion}",
note="[En ligne; accédé le 09 Février 2023]"
}
@article{tapprox,
author={Brereton, Richard G.},
title={The t-distribution and its relationship to the normal distribution},
journal={Journal of Chemometrics},
volume={29},
number={9},
pages={481-483},
doi={https://doi.org/10.1002/cem.2713},
url={https://analyticalsciencejournals.onlinelibrary.wiley.com/doi/abs/10.1002/cem.2713},
eprint={https://analyticalsciencejournals.onlinelibrary.wiley.com/doi/pdf/10.1002/cem.2713},
year={2015}
}

@ -22,6 +22,8 @@
\usepackage[nottoc,numbib]{tocbibind} \usepackage[nottoc,numbib]{tocbibind}
\usepackage{array} \usepackage{array}
\usepackage{booktabs} \usepackage{booktabs}
\usepackage{stmaryrd}
\usepackage{dsfont}
\usepackage{hyperref} \usepackage{hyperref}
\hypersetup{ \hypersetup{
@ -233,11 +235,26 @@ différents pôles:
futurs. Elle met en place le business plan, amène à l'entreprise de nouvelles opportunités futurs. Elle met en place le business plan, amène à l'entreprise de nouvelles opportunités
de partenariat et négocie les prix lors de la vente des produits de l'entreprise. de partenariat et négocie les prix lors de la vente des produits de l'entreprise.
% TODO: reste \item[Moment Care:] Une équipe est dédiée à la filiale \entity{Moment Care}.
Cette équipe s'occupe de vendre les produits de \entity{Moment Care},
de suivre leur développement et de déployer les produits de \entityb{Moment Care} chez les clients.
\end{description} \item[Administratif:] Ce pôle est constitué du directeur des resources humaines,
qui s'assure que l'entreprise a les employés nécessaires pour travailler.
Ce pôle s'occupe aussi de la finance et du budget de l'entreprise.
\newpage \item[Tech:] Le pôle technologie se divise en deux grandes équipes, les \entity{DevOps} et les \entity{Dev Full-Stack},
ainsi qu'une nouvelle équipe qui mène le développement du hardware pour la seconde génération de serveurs que l'entreprise souhaite bientôt proposer.
\item[DevOps:] L'équipe \entity{DevOps} développe des outils,
méthodes et processus pour automatiser les différents besoins des applications à déployer.
L'équipe gère entre autres le déploiement des applications sur les serveurs envoyés dans les avions,
la configuration du système d'exploitation de ces serveurs.
\item[Full Stack:] L'équipe \entity{Full Stack} développe les différentes applications front-end et back-end que \entity{Moment} propose.
Ces applications s'étendent du serveur de streaming de médias aux applications web et aux applications mobiles.
C'est également l'équipe que j'ai rejoint durant ce stage.
\end{description}
\subsection{Produits de Moment} \subsection{Produits de Moment}
@ -257,12 +274,6 @@ avec une installation et une gestion simplifiée et sans le besoin d'installer d
Ce produit est composé d'un serveur, nommé \entity{Flymingo Box}, qui émet son propre réseau wifi, Ce produit est composé d'un serveur, nommé \entity{Flymingo Box}, qui émet son propre réseau wifi,
sur lequel les passagers peuvent se connecter pour profiter des divertissements. sur lequel les passagers peuvent se connecter pour profiter des divertissements.
\begin{wrapfigure}{r}{0.25\textwidth}
\centering
\includegraphics[width=0.25\textwidth]{mood-digital}
\caption*{Mood Digital}
\end{wrapfigure}
Différentes applications sont développées autour de la \entity{Flymingo Box}: Différentes applications sont développées autour de la \entity{Flymingo Box}:
\begin{description} \begin{description}
@ -276,34 +287,46 @@ Différentes applications sont développées autour de la \entity{Flymingo Box}:
\end{description} \end{description}
\begin{description} \begin{description}
\item[Mood Entertainment] aussi appelé \entity{Mood Digital}, \item[Content API et Media API] sont deux \term{API} (interfaces de programmation) qui gèrent les films et autres médias stockées sur la box,
est une version de \entity{Flymingo Digital} qui ne requiet pas de customisation. ainsi que leurs informations (titres, durée, etc.).
\end{description} \end{description}
\begin{description} \begin{description}
\item[Mood TV] est une application tournant sur les télévisions connectées et permettant de profiter du contenu directement sur la télévision. \item[La \og Crew App \fg] est une application sur \entity{iOS} pour les membres de l'équippage,
qui permet de mettre en pause la lecture des médias pour faire des annonces aux passagers,
accéder aux informations des achats faits sur l'application \entity{Flymingo Digital}.
\end{description} \end{description}
\subsubsection{Mood}
\begin{wrapfigure}{r}{0.25\textwidth}
\centering
\includegraphics[width=0.25\textwidth]{mood-digital}
\caption*{Mood Digital}
\end{wrapfigure}
% TODO: vérifier la justification de mood
\textbf{Mood} est une distribution de \entity{Flymingo} plus optimisée pour la robustesse et la rapidité,
au prix d'une moins vaste customisabilité.
\begin{description} \begin{description}
\item[Content API et Media API] sont deux \term{API} (interfaces de programmation) qui gèrent les films et autres médias stockées sur la box, \item[Mood Entertainment] aussi appelé \entity{Mood Digital},
ainsi que leurs informations (titres, durée, etc.). est une version de \entity{Flymingo Digital} \og standarde \fg.
\end{description} \end{description}
\begin{description} \begin{description}
\item[La \og Crew App \fg] est une application sur \entity{iOS} pour les membres de l'équippage, \item[Mood TV] est une application tournant sur les télévisions connectées et permettant de profiter du contenu directement sur une télévision.
qui permet de mettre en pause la lecture des médias pour faire des annonces aux passagers,
accéder aux informations des achats faits sur l'application \entity{Flymingo Digital}.
\end{description} \end{description}
\subsubsection{Mint} \subsubsection{Mint}
% TODO: éviter la collision de wrapping en forcant un saut de page avant la section précédente
\begin{wrapfigure}{r}{0.25\textwidth} \begin{wrapfigure}{r}{0.25\textwidth}
\centering \centering
\includegraphics[width=0.25\textwidth]{mint-digital} \includegraphics[width=0.25\textwidth]{mint-digital}
\caption*{Mint Digital} \caption*{Mint Digital}
\end{wrapfigure} \end{wrapfigure}
% TODO: add logo floating to the right
\textbf{Mint} est la plateforme que \entityb{Moment} développe et déploie en ce moment dans les cliniques de santé. \textbf{Mint} est la plateforme que \entityb{Moment} développe et déploie en ce moment dans les cliniques de santé.
Elle vise à permettre aux patients des cliniques de profiter de divertissements de qualité tout le long de leur séjour. Elle vise à permettre aux patients des cliniques de profiter de divertissements de qualité tout le long de leur séjour.
@ -333,76 +356,49 @@ Les applications développées autour de cette plateforme sont:
\end{description} \end{description}
\begin{description} \begin{description}
\item[Mint TV,] qui est une application tournant sur les télévisions connectées, qui permet aux patients des \item[Mint TV,] qui sera une application tournant sur les télévisions connectées, qui permet aux patients des
cliniques d'accéder au même contenu que sur \entity{Mint Digital}, en plus de pouvoir regarder les flux de la télévision. cliniques d'accéder au même contenu que sur \entity{Mint Digital}, en plus de pouvoir regarder les flux de la télévision.
\end{description} \end{description}
\section{Organisation du stage} \subsection{Présentation de l'équipe Développement R\&D}
% Durant ce stage, j'ai rejoint l'équipe \entity{Développement Full-Stack - Recherche \& Développement},
% afin de contribuer au développement des applications front-end et back-end de l'entreprise,
% à l'assurance de qualité de ces applications et aux choix techniques faits pour ces applications.
\subsection{Thèmes définis avant le stage}
% Note: commencé avec 9 personnes, puis est passé à 7 personnes
% TODO: vérifier sur le portail des stages notre mission
Durant mes échanges avec mon tuteur de stage et le directeur des ressources humaines de \entity{Moment},
nous nous étions convenus que j'allais intégrer l'équipe \entity{Développement Full-Stack - Recherche \& Développement} en tant que développeur.
Mes tâches au sein de cette équipe seraient de:
% https://utbm.jobteaser.com/en/job-offers/8878261-moment-developpeur-se-web-fullstack-stage-ou-alternance \subsubsection{Méthode de travail}
% TODO: clarifier qu'est ce qui constitue un projet R&D
\begin{itemize}
\item Développer de nouvelles fonctionnalités (notamment de nouvelles \term{API} (interfaces de programmation) et de leur intégration côté client)
\item Documenter le code (sous forme de commentaires et sous forme de documentation technique)
\item Participer aux choix fonctionnels (quelles technologies utiliser, comment organiser des librairies, etc.),
et participation à leur implémentation
\item Participer à la définition de la roadmap technique, et au suivi de cette roadmap
\item Aider à améliorer les solutions déjà existantes (amélioration de performances, de maintenabilité, etc.)
\item Participation aux projets Recherche \& Développement
\end{itemize}
Au moment de mes entretiens pour ma candidature de stage, L'équipe \entity{Développement Full-Stack} fonctionne avec la méthode Scrum, qui est une méthode Agile. \cite{cohen2004introduction}
les thèmes principaux sur lesquels l'équipe travaillaient étaient le développement de \entity{Flymingo Digital}
et de \entity{Mood TV}, ainsi qu'un peu de développement pour \entity{Mint}.
J'ai aussi pu apprendre que l'équipe utilise la librairie \entity{React} et le framework \entity{Next.JS} pour ses applications front-end, Notre chef d'équipe reçoit les spécifications des projets, les retours de recettes et les bugs des équipes \entity{PMO} et \entity{Design}.
et le moteur javascript \entity{Node.JS} avec le framework \entity{Nest.JS} pour ses applications back-end. En chaque début de semaine, sur la base de ces demandes et retours, nous définissions les thèmes,
tâches et priorités pour la semaine durant la réunion \og weekly \fg.
J'espérais avant le stage pouvoir surtout travailler sur la partie back-end, Chaque matin, nous faisons aussi une réunion \og daily \fg,
car j'avais jusqu'à ce moment-là peu d'expérience avec \entity{React}, où chaqu'un présente le travail qu'iel a fait la veille, ainsi que ce qu'iel prévoit de faire ce jour.
et le peu d'expérience que j'avais ne m'inspirait pas confiance en cette technologie.
J'ai néanmoins décidé d'apprendre en amont du stage la librairie \entity{Solid.JS} \cite{solidjs}, Les tâches de la semaine sont inscrites sur \entity{Jira} dans un \term{Sprint} pour la semaine,
car je n'avais jusqu'à maintenant que fait du développement front-end \og vanilla \fg (sans librairie ou framework). où elles seront facilement visibles et leur status sera facilement suivable.
\entity{Solid.JS} se veut être une librairie de développement front-end plus simple, plus réactive et plus efficace que \entity{React},
et l'apprendre m'a permis d'avoir une première expérience avec la programmation réactive.
\subsection{Premiers jours de stage} L'attribution des tâches se fait en majorité sur la base du volontariat, avec les tâches à haute priorité à faire en premier:
lorsqu'il y a une tâche disponible que l'on souhaite faire,
on s'assigne à celle-ci sur \entity{Jira}, et on passe le status de la tâche de \textit{À faire} à \textit{En cours}.
On crée alors une \term{Merge Request} sur \entity{GitLab} (l'équivalent des \term{Pull Request} sur \entity{GitHub})
pour accueillir les changements à faire pour cette tâche.
À mon arrivée au stage, j'ai récupéré l'ordinateur portable qui m'a été préparé avec une installation d'Ubuntu, Une fois que la tâche est implémentée,
puis j'ai installé un environnement de développement d'applications dessus (différents outils en ligne de commande, on marque la \term{Merge Request} en mode \og Ready \fg et on passe la tâche sur \entity{Jira} au status \textit{Prêt à review}.
un éditeur de texte et un gestionnaire de fenêtre avec lequel je suis plus à l'aise). Un autre membre de l'équipe doit alors \term{review} les modifications au code,
pour s'assurer que les attentes en terms de qualité de code sont remplies.
J'ai aussi reçu la documentation d'\og onboarding \fg, Si la \term{review} relève des problèmes, alors ceux-cis doivent être adressés.
qui contient une liste de documentations avec lesquelles je devais me familiariser afin de pouvoir travailler efficacement. Dans le cas contraire, les changements de la \term{Merge Request} sont incorporés dans la branche \texttt{develop} et la tâche sur \entity{Jira} marquée comme \textit{Faite}.
J'ai parcouru ces documentations et ai testé certaines des fonctionnalités décrites dans celles-cis dans un mini-projet de test.
L'équipe se réunit chaque matin pour discuter des nouveautés et du travail de la veille, Les tâches qui ne sont pas faites pendant un \term{sprint} sont gardées dans un \term{Backlog},
et pour annoncer sur quoi chaqu'un prévoit de travailler ce jour-ci. afin de pouvoir les intégrer au sprint de la semaine d'après,
J'ai participé à ces réunions dès mon premier jour, ou pour les faire un jour où les taches d'un Sprint sont finies avant la fin de la semaine,
ce qui m'a permis de rapidement construire une compréhension des problématiques récurrente et de la dynamique des différentes applications. en fonction de leur priorité.
Nous sommes encouragés dans l'équipe à travailler en \og pair programming \fg, \subsubsection{Outils utilisés}
et en général à collaborer ensemble.
Ma première contribution au code a été faite en pair programming,
après avoir remarqué que la logique pour la complexité des mots de passe dans \entity{Mint Admin} était fausse.
Faire cette contribution en pair programming m'a permis d'être guidé dans le processus d'envoi et de vérification de contributions,
ainsi que d'être guidé dans l'organisation de la repository.
\subsection{Outils utilisés} Nous utilisons une diversité d'outils pour développer du code,
allant de l'éditeur de texte jusqu'aux outils automatisant le test du code affecté par un changement.
\newcommand{\logowidth}{0.15\textwidth} \newcommand{\logowidth}{0.15\textwidth}
@ -463,44 +459,6 @@ NextJS a également pour but d'optimiser la vitesse de chargement de ces pages,
NestJS utilise l'injection de dépendance pour permettre de plus facilement faire grandir une application back-end, NestJS utilise l'injection de dépendance pour permettre de plus facilement faire grandir une application back-end,
et propose de nombreux outils pour gérer les requêtes, les bases de données et la documentation. et propose de nombreux outils pour gérer les requêtes, les bases de données et la documentation.
\subsection{Organisation de l'équipe}
% Agile, poker planning
% Backlog, recettes, versioning
\subsubsection{Méthode de travail}
L'équipe \entity{Développement Full-Stack} fonctionne avec une méthode Scrum, qui est une méthode Agile. \cite{cohen2004introduction}
Notre chef d'équipe reçoit les spécifications des projets, les retours de recettes et les bugs des équipes \entity{PMO} et \entity{Design}.
En chaque début de semaine, sur la base de ces demandes et retours, nous définissions les thèmes,
tâches et priorités pour la semaine durant la réunion \og weekly \fg.
Chaque matin, nous faisons aussi une réunion \og daily \fg,
où chaqu'un présente le travail qu'iel a fait la veille, ainsi que ce qu'iel prévoit de faire ce jour.
Les tâches de la semaine sont inscrites sur \entity{Jira} dans un \term{Sprint} pour la semaine,
où elles seront facilement visibles et leur status sera facilement suivable.
L'attribution des tâches se fait en majorité sur la base du volontariat, avec les tâches à haute priorité à faire en premier:
lorsqu'il y a une tâche disponible que l'on souhaite faire,
on s'assigne à celle-ci sur \entity{Jira}, et on passe le status de la tâche de \textit{À faire} à \textit{En cours}.
On crée alors une \term{Merge Request} sur \entity{GitLab} (l'équivalent des \term{Pull Request} sur \entity{GitHub})
pour accueillir les changements à faire pour cette tâche.
Une fois que la tâche est implémentée,
on marque la \term{Merge Request} en mode \og Ready \fg et on passe la tâche sur \entity{Jira} au status \textit{Prêt à review}.
Un autre membre de l'équipe doit alors \term{review} les modifications au code,
pour s'assurer que les attentes en terms de qualité de code sont remplies.
Si la \term{review} relève des problèmes, alors ceux-cis doivent être adressés.
Dans le cas contraire, les changements de la \term{Merge Request} sont incorporés dans la branche \texttt{develop} et la tâche sur \entity{Jira} marquée comme \textit{Faite}.
Les tâches qui ne sont pas faites pendant un \term{sprint} sont gardées dans un \term{Backlog},
afin de pouvoir les intégrer au sprint de la semaine d'après,
ou pour les faire un jour où les taches d'un Sprint sont finies avant la fin de la semaine,
en fonction de leur priorité.
\subsubsection{Contrôle et assurance de qualité} \subsubsection{Contrôle et assurance de qualité}
L'équipe a plusieurs outils en place pour assurer la qualité du code et des applications tout au long du développement: L'équipe a plusieurs outils en place pour assurer la qualité du code et des applications tout au long du développement:
@ -514,6 +472,7 @@ L'équipe a plusieurs outils en place pour assurer la qualité du code et des ap
Ces tests sont éxécutés sur nos machines, Ces tests sont éxécutés sur nos machines,
afin de pouvoir rapidement corriger tout morceau de code qui aurait été accidentellement cassé lors d'une modification. afin de pouvoir rapidement corriger tout morceau de code qui aurait été accidentellement cassé lors d'une modification.
% TODO: citation for CI % TODO: citation for CI
\item[Continuous Integration] En plus de tester le code localement, \item[Continuous Integration] En plus de tester le code localement,
le code est aussi compilé et testé sur un serveur via les outils de \entity{GitLab} pour l'intégration continue. le code est aussi compilé et testé sur un serveur via les outils de \entity{GitLab} pour l'intégration continue.
@ -547,6 +506,71 @@ L'équipe a plusieurs outils en place pour assurer la qualité du code et des ap
\end{itemize} \end{itemize}
\end{description} \end{description}
\section{Organisation du stage}
% Durant ce stage, j'ai rejoint l'équipe \entity{Développement Full-Stack - Recherche \& Développement},
% afin de contribuer au développement des applications front-end et back-end de l'entreprise,
% à l'assurance de qualité de ces applications et aux choix techniques faits pour ces applications.
\subsection{Thèmes définis avant le stage}
% Note: commencé avec 9 personnes, puis est passé à 7 personnes
Durant mes échanges avec mon tuteur de stage et le directeur des ressources humaines de \entity{Moment},
nous nous étions convenus que j'allais intégrer l'équipe \entity{Développement Full-Stack - Recherche \& Développement} en tant que développeur.
Mes tâches au sein de cette équipe seraient de:
% https://utbm.jobteaser.com/en/job-offers/8878261-moment-developpeur-se-web-fullstack-stage-ou-alternance
% TODO: clarifier qu'est ce qui constitue un projet R&D
\begin{itemize}
\item Développer de nouvelles fonctionnalités (notamment de nouvelles \term{API} (interfaces de programmation) et de leur intégration côté client)
\item Documenter le code (sous forme de commentaires et sous forme de documentation technique)
\item Participer aux choix fonctionnels (quelles technologies utiliser, comment organiser des librairies, etc.),
et participation à leur implémentation
\item Participer à la définition de la roadmap technique, et au suivi de cette roadmap
\item Aider à améliorer les solutions déjà existantes (amélioration de performances, de maintenabilité, etc.)
\item Participation aux projets Recherche \& Développement
\end{itemize}
Au moment de mes entretiens pour ma candidature de stage,
les thèmes principaux sur lesquels l'équipe travaillaient étaient le développement de \entity{Flymingo Digital}
et de \entity{Mood TV}, ainsi qu'un peu de développement pour \entity{Mint}.
J'ai aussi pu apprendre que l'équipe utilise la librairie \entity{React} et le framework \entity{Next.JS} pour ses applications front-end,
et le moteur javascript \entity{Node.JS} avec le framework \entity{Nest.JS} pour ses applications back-end.
J'espérais avant le stage pouvoir surtout travailler sur la partie back-end,
car j'avais jusqu'à ce moment-là peu d'expérience avec \entity{React},
et le peu d'expérience que j'avais ne m'inspirait pas confiance en cette technologie.
J'ai néanmoins décidé d'apprendre en amont du stage la librairie \entity{Solid.JS} \cite{solidjs},
car je n'avais jusqu'à maintenant que fait du développement front-end \og vanilla \fg (sans librairie ou framework).
\entity{Solid.JS} se veut être une librairie de développement front-end plus simple, plus réactive et plus efficace que \entity{React},
et l'apprendre m'a permis d'avoir une première expérience avec la programmation réactive.
\subsection{Premiers jours de stage}
À mon arrivée au stage, j'ai récupéré l'ordinateur portable qui m'a été préparé avec une installation d'Ubuntu,
puis j'ai installé un environnement de développement d'applications dessus (différents outils en ligne de commande,
un éditeur de texte et un gestionnaire de fenêtre avec lequel je suis plus à l'aise).
J'ai aussi reçu la documentation d'\og onboarding \fg,
qui contient une liste de documentations avec lesquelles je devais me familiariser afin de pouvoir travailler efficacement.
J'ai parcouru ces documentations et ai testé certaines des fonctionnalités décrites dans celles-cis dans un mini-projet de test.
L'équipe se réunit chaque matin pour discuter des nouveautés et du travail de la veille,
et pour annoncer sur quoi chaqu'un prévoit de travailler ce jour-ci.
J'ai participé à ces réunions dès mon premier jour,
ce qui m'a permis de rapidement construire une compréhension des problématiques récurrente et de la dynamique des différentes applications.
Nous sommes encouragés dans l'équipe à travailler en \og pair programming \fg,
et en général à collaborer ensemble.
Ma première contribution au code a été faite en pair programming,
après avoir remarqué que la logique pour la complexité des mots de passe dans \entity{Mint Admin} était fausse.
Faire cette contribution en pair programming m'a permis d'être guidé dans le processus d'envoi et de vérification de contributions,
ainsi que d'être guidé dans l'organisation de la repository.
\subsection{Planning} \subsection{Planning}
Durant ce stage, j'ai surtout travaillé sur le développement de nouvelles fonctionnalités et la correction de bugs sur les applications suivantes: Durant ce stage, j'ai surtout travaillé sur le développement de nouvelles fonctionnalités et la correction de bugs sur les applications suivantes:
@ -908,24 +932,25 @@ alors on peut calculer la moyenne empirique ($\mu^{\star}_n$) et la variance ($(
\begin{align*} \begin{align*}
\mu^{\star}_n &= \frac{\sum_{i=1}^{n} \omega_i}{n} \\ \mu^{\star}_n &= \frac{\sum_{i=1}^{n} \omega_i}{n} \\
(\sigma^{\star}_n)^2 = S_{n-1} &= \frac{\sum_{i=1}^{n} (\omega_i - \mu^{\star}_n)^2}{n-1} \\ (\sigma^{\star}_n)^2 = S_{n-1}^2 &= \frac{\sum_{i=1}^{n} (\omega_i - \mu^{\star}_n)^2}{n-1} \\
&= \frac{(\mu^{\star}_n)^2}{n-1} - \frac{\sum_{i=1}^{n} \omega_i^2}{n(n-1)} \\ \\ &= \frac{(\mu^{\star}_n)^2}{n-1} - \frac{\sum_{i=1}^{n} \omega_i^2}{n(n-1)} \\ \\
\mu^{\star}_n \xrightarrow{n\rightarrow\infty} \mu & \quad \quad \quad \sigma^{\star}_n \xrightarrow{n\rightarrow\infty} \sigma \mu^{\star}_n \xrightarrow{n\rightarrow\infty} \mu & \quad \quad \quad \sigma^{\star}_n \xrightarrow{n\rightarrow\infty} \sigma
% TODO: preuve? % TODO: preuve?
\end{align*} \end{align*}
Afin de pouvoir comparer différents ensembles de valeurs, Afin de pouvoir comparer différents ensembles de valeurs,
je fais l'hypothèse que les valeurs suivent une loi normale ($X \hookrightarrow \mathcal{N}(\mu, \sigma^2)$). je fais l'hypothèse que les valeurs suivent une distribution normale ($X \hookrightarrow \mathcal{N}(\mu, \sigma^2)$).
% TODO: refine
Dans ce cas, on peut utiliser une approximation de la distribution de student pour calculer un intervale de confiance pour $\mu$.
J'utilise comme taux de confiance $\alpha = 0.95$:
\begin{align*} J'ai décidé d'utiliser dans mon programme de statistique un test rudimentaire de normalité,
\mu &\in [\mu^{\star}_n - z_{1-\alpha/2} \frac{\sigma^{\star}_n}{\sqrt{n}}, \mu^{\star}_n + z_{1-\alpha/2} \frac{\sigma^{\star}_n}{\sqrt{n}}] \\ également présent dans la librairie populaire de benchmark pour le langage \entity{Rust} nommée \entity{Criterion}, \cite{criterion}
z_a \;&\text{est tel que} \int_{-\infty}^{z_a}{\frac{e^{-\frac{(x-\mu)^2}{2\sigma^2}}}{\sigma\sqrt{2\pi}}}=a qui m'a permis de détecter une erreur dans la mesure de donnée (celle-ci mesurait la même donnée plusieures fois).
\end{align*}
Ce test de normalité vérifie simplement que plus de 95\% des valeurs mesurée tombent dans l'intervale
$\mu^{\star} \pm \sigma \cdot z_{0.975}$.
Comme $\sigma$ n'est pas connu, je majore $\sigma^{\star}$ par la valeur haute de l'approximation \cite{tapprox} de son intervale de confiance. \figref{normalitytest}
Enfin, on peut utiliser le t-test pour estimer si deux valeurs différentes $X$ et $Y$ diffèrent bien de moyenne. \cite{ttest} Enfin, on peut utiliser le t-test sur les mesures pour estimer si deux variables aléatoires différentes $X$ et $Y$ diffèrent bien de moyenne. \cite{ttest}
Avec ce test, il est alors possible de déterminer si les performances se sont améliorées ou non.
Pour \entity{Mood TV}, les valeurs mesurées sont les suivantes, en millisecondes: Pour \entity{Mood TV}, les valeurs mesurées sont les suivantes, en millisecondes:
@ -1042,6 +1067,6 @@ Faire ce travail m'a permis d'avoir une compréhension plus profonde sur différ
\inputfig{email-src-mjml} \inputfig{email-src-mjml}
% \inputfig{ttest} % \inputfig{ttest}
\inputfig{fromeffectloop} \inputfig{fromeffectloop}
\inputfig{normalitytest}
\end{document} \end{document}

Loading…
Cancel
Save