Upload .html version of .org file.

parent af7792ee
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="French" xml:lang="French">
<head>
<!-- 2021-10-14 jeu. 10:06 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Etude de la nocivité du tabac chez les femmes</title>
<meta name="author" content="Victor" />
<meta name="generator" content="Org Mode" />
<style>
#content { max-width: 60em; margin: auto; }
.title { text-align: center;
margin-bottom: .2em; }
.subtitle { text-align: center;
font-size: medium;
font-weight: bold;
margin-top:0; }
.todo { font-family: monospace; color: red; }
.done { font-family: monospace; color: green; }
.priority { font-family: monospace; color: orange; }
.tag { background-color: #eee; font-family: monospace;
padding: 2px; font-size: 80%; font-weight: normal; }
.timestamp { color: #bebebe; }
.timestamp-kwd { color: #5f9ea0; }
.org-right { margin-left: auto; margin-right: 0px; text-align: right; }
.org-left { margin-left: 0px; margin-right: auto; text-align: left; }
.org-center { margin-left: auto; margin-right: auto; text-align: center; }
.underline { text-decoration: underline; }
#postamble p, #preamble p { font-size: 90%; margin: .2em; }
p.verse { margin-left: 3%; }
pre {
border: 1px solid #e6e6e6;
border-radius: 3px;
background-color: #f2f2f2;
padding: 8pt;
font-family: monospace;
overflow: auto;
margin: 1.2em;
}
pre.src {
position: relative;
overflow: auto;
}
pre.src:before {
display: none;
position: absolute;
top: -8px;
right: 12px;
padding: 3px;
color: #555;
background-color: #f2f2f299;
}
pre.src:hover:before { display: inline; margin-top: 14px;}
/* Languages per Org manual */
pre.src-asymptote:before { content: 'Asymptote'; }
pre.src-awk:before { content: 'Awk'; }
pre.src-authinfo::before { content: 'Authinfo'; }
pre.src-C:before { content: 'C'; }
/* pre.src-C++ doesn't work in CSS */
pre.src-clojure:before { content: 'Clojure'; }
pre.src-css:before { content: 'CSS'; }
pre.src-D:before { content: 'D'; }
pre.src-ditaa:before { content: 'ditaa'; }
pre.src-dot:before { content: 'Graphviz'; }
pre.src-calc:before { content: 'Emacs Calc'; }
pre.src-emacs-lisp:before { content: 'Emacs Lisp'; }
pre.src-fortran:before { content: 'Fortran'; }
pre.src-gnuplot:before { content: 'gnuplot'; }
pre.src-haskell:before { content: 'Haskell'; }
pre.src-hledger:before { content: 'hledger'; }
pre.src-java:before { content: 'Java'; }
pre.src-js:before { content: 'Javascript'; }
pre.src-latex:before { content: 'LaTeX'; }
pre.src-ledger:before { content: 'Ledger'; }
pre.src-lisp:before { content: 'Lisp'; }
pre.src-lilypond:before { content: 'Lilypond'; }
pre.src-lua:before { content: 'Lua'; }
pre.src-matlab:before { content: 'MATLAB'; }
pre.src-mscgen:before { content: 'Mscgen'; }
pre.src-ocaml:before { content: 'Objective Caml'; }
pre.src-octave:before { content: 'Octave'; }
pre.src-org:before { content: 'Org mode'; }
pre.src-oz:before { content: 'OZ'; }
pre.src-plantuml:before { content: 'Plantuml'; }
pre.src-processing:before { content: 'Processing.js'; }
pre.src-python:before { content: 'Python'; }
pre.src-R:before { content: 'R'; }
pre.src-ruby:before { content: 'Ruby'; }
pre.src-sass:before { content: 'Sass'; }
pre.src-scheme:before { content: 'Scheme'; }
pre.src-screen:before { content: 'Gnu Screen'; }
pre.src-sed:before { content: 'Sed'; }
pre.src-sh:before { content: 'shell'; }
pre.src-sql:before { content: 'SQL'; }
pre.src-sqlite:before { content: 'SQLite'; }
/* additional languages in org.el's org-babel-load-languages alist */
pre.src-forth:before { content: 'Forth'; }
pre.src-io:before { content: 'IO'; }
pre.src-J:before { content: 'J'; }
pre.src-makefile:before { content: 'Makefile'; }
pre.src-maxima:before { content: 'Maxima'; }
pre.src-perl:before { content: 'Perl'; }
pre.src-picolisp:before { content: 'Pico Lisp'; }
pre.src-scala:before { content: 'Scala'; }
pre.src-shell:before { content: 'Shell Script'; }
pre.src-ebnf2ps:before { content: 'ebfn2ps'; }
/* additional language identifiers per "defun org-babel-execute"
in ob-*.el */
pre.src-cpp:before { content: 'C++'; }
pre.src-abc:before { content: 'ABC'; }
pre.src-coq:before { content: 'Coq'; }
pre.src-groovy:before { content: 'Groovy'; }
/* additional language identifiers from org-babel-shell-names in
ob-shell.el: ob-shell is the only babel language using a lambda to put
the execution function name together. */
pre.src-bash:before { content: 'bash'; }
pre.src-csh:before { content: 'csh'; }
pre.src-ash:before { content: 'ash'; }
pre.src-dash:before { content: 'dash'; }
pre.src-ksh:before { content: 'ksh'; }
pre.src-mksh:before { content: 'mksh'; }
pre.src-posh:before { content: 'posh'; }
/* Additional Emacs modes also supported by the LaTeX listings package */
pre.src-ada:before { content: 'Ada'; }
pre.src-asm:before { content: 'Assembler'; }
pre.src-caml:before { content: 'Caml'; }
pre.src-delphi:before { content: 'Delphi'; }
pre.src-html:before { content: 'HTML'; }
pre.src-idl:before { content: 'IDL'; }
pre.src-mercury:before { content: 'Mercury'; }
pre.src-metapost:before { content: 'MetaPost'; }
pre.src-modula-2:before { content: 'Modula-2'; }
pre.src-pascal:before { content: 'Pascal'; }
pre.src-ps:before { content: 'PostScript'; }
pre.src-prolog:before { content: 'Prolog'; }
pre.src-simula:before { content: 'Simula'; }
pre.src-tcl:before { content: 'tcl'; }
pre.src-tex:before { content: 'TeX'; }
pre.src-plain-tex:before { content: 'Plain TeX'; }
pre.src-verilog:before { content: 'Verilog'; }
pre.src-vhdl:before { content: 'VHDL'; }
pre.src-xml:before { content: 'XML'; }
pre.src-nxml:before { content: 'XML'; }
/* add a generic configuration mode; LaTeX export needs an additional
(add-to-list 'org-latex-listings-langs '(conf " ")) in .emacs */
pre.src-conf:before { content: 'Configuration File'; }
table { border-collapse:collapse; }
caption.t-above { caption-side: top; }
caption.t-bottom { caption-side: bottom; }
td, th { vertical-align:top; }
th.org-right { text-align: center; }
th.org-left { text-align: center; }
th.org-center { text-align: center; }
td.org-right { text-align: right; }
td.org-left { text-align: left; }
td.org-center { text-align: center; }
dt { font-weight: bold; }
.footpara { display: inline; }
.footdef { margin-bottom: 1em; }
.figure { padding: 1em; }
.figure p { text-align: center; }
.equation-container {
display: table;
text-align: center;
width: 100%;
}
.equation {
vertical-align: middle;
}
.equation-label {
display: table-cell;
text-align: right;
vertical-align: middle;
}
.inlinetask {
padding: 10px;
border: 2px solid gray;
margin: 10px;
background: #ffffcc;
}
#org-div-home-and-up
{ text-align: right; font-size: 70%; white-space: nowrap; }
textarea { overflow-x: auto; }
.linenr { font-size: smaller }
.code-highlighted { background-color: #ffff00; }
.org-info-js_info-navigation { border-style: none; }
#org-info-js_console-label
{ font-size: 10px; font-weight: bold; white-space: nowrap; }
.org-info-js_search-highlight
{ background-color: #ffff00; color: #000000; font-weight: bold; }
.org-svg { width: 90%; }
</style>
<link rel="stylesheet" type="text/css" href="http://www.pirilampo.org/styles/readtheorg/css/htmlize.css"/>
<link rel="stylesheet" type="text/css" href="http://www.pirilampo.org/styles/readtheorg/css/readtheorg.css"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
<script type="text/javascript" src="http://www.pirilampo.org/styles/lib/js/jquery.stickytableheaders.js"></script>
<script type="text/javascript" src="http://www.pirilampo.org/styles/readtheorg/js/readtheorg.js"></script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
displayAlign: "center",
displayIndent: "0em",
"HTML-CSS": { scale: 100,
linebreaks: { automatic: "false" },
webFont: "TeX"
},
SVG: {scale: 100,
linebreaks: { automatic: "false" },
font: "TeX"},
NativeMML: {scale: 100},
TeX: { equationNumbers: {autoNumber: "AMS"},
MultLineWidth: "85%",
TagSide: "right",
TagIndent: ".8em"
}
});
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS_HTML"></script>
</head>
<body>
<div id="content" class="content">
<h1 class="title">Etude de la nocivité du tabac chez les femmes</h1>
<div id="table-of-contents" role="doc-toc">
<h2>Table of Contents</h2>
<div id="text-table-of-contents" role="doc-toc">
<ul>
<li><a href="#org511c93e">1. Préambule</a>
<ul>
<li><a href="#orge40c0de">1.1. Contexte de l'exercice</a></li>
<li><a href="#org055713f">1.2. Origine des données</a></li>
<li><a href="#org017997a">1.3. Bibliothèques et fonctions utilisées</a></li>
<li><a href="#org440d819">1.4. Paramètres communs des graphiques</a></li>
<li><a href="#org47446ad">1.5. Import des données</a></li>
<li><a href="#org8b5e0ac">1.6. Vérifications automatiques des données</a></li>
<li><a href="#org064d263">1.7. Visualisations des données brutes</a>
<ul>
<li><a href="#orgd3c6b7e">1.7.1. Distribution des âges des participantes</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#org0528b83">2. Analyses de la nocivité du tabagisme chez les femmes</a>
<ul>
<li><a href="#org478a935">2.1. Approche 1 | Taux de mortalité des fumeuses et non-fumeuses</a>
<ul>
<li><a href="#org3bb101e">2.1.1. Calcul des paramètres</a></li>
<li><a href="#org5826802">2.1.2. Résultats</a></li>
</ul>
</li>
<li><a href="#org3ce9ee5">2.2. Approche 2 | Taux de mortalité des fumeuses et non-fumeuses selon la classe d'âge</a>
<ul>
<li><a href="#org6feb1be">2.2.1. Calcul des paramètres et résultats</a></li>
</ul>
</li>
<li><a href="#org1cbd4e0">2.3. Approche 3 | Probabilité de décès des fumeuses et non-fumeuses selon l'âge</a>
<ul>
<li><a href="#orgda7352c">2.3.1. Manipulation des données</a></li>
<li><a href="#org2f1fa28">2.3.2. Régressions logistiques</a></li>
<li><a href="#orgd7f9c80">2.3.3. Visualisation des résultats</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#orgfaaa9d6">3. Paradoxe de Simpson</a>
<ul>
<li><a href="#org5888c56">3.1. Qu'en est-il du paradoxe de Simpson dans notre cas ?</a></li>
<li><a href="#org84ff5ed">3.2. Quelles sont les explications dans notre cas ?</a></li>
</ul>
</li>
</ul>
</div>
</div>
<div id="outline-container-org511c93e" class="outline-2">
<h2 id="org511c93e"><span class="section-number-2">1.</span> Préambule</h2>
<div class="outline-text-2" id="text-1">
</div>
<div id="outline-container-orge40c0de" class="outline-3">
<h3 id="orge40c0de"><span class="section-number-3">1.1.</span> Contexte de l'exercice</h3>
<div class="outline-text-3" id="text-1-1">
<p>
Dans le cadre du <a href="https://www.fun-mooc.fr/fr/cours/recherche-reproductible-principes-methodologiques-pour-une-science-transparente/"><i>MOOC</i> de l'INRIA sur la recherche reproductible</a>, je
réalise un travail pratique évalué par les pairs. Ce travail pratique
intervient au cours du module 3. Le sujet choisi est le numéro 6,
intitulé : <i>Autour du Paradoxe de Simpson</i>.
</p>
</div>
</div>
<div id="outline-container-org055713f" class="outline-3">
<h3 id="org055713f"><span class="section-number-3">1.2.</span> Origine des données</h3>
<div class="outline-text-3" id="text-1-2">
<p>
Nous utilisons les données mises à disposition pour l'exercice par
l'équipe pédagogique du MOOC. Ces données sont un extrait de celles
d'études de l'incidence des pathologies de la thyroïde au sein de la
population britannique. Furent exclus du jeu de donnée
complet :
</p>
<ul class="org-ul">
<li>les hommes (n = 1285) ;</li>
<li>les femmes ayant arrêté de fumer (n = 162)</li>
<li>les femmes dont les données n'étaient pas disponibles (n = 18).</li>
</ul>
<p>
URL des données :
</p>
<p>
<a href="https://gitlab.inria.fr/learninglab/mooc-rr/mooc-rr-ressources/-/raw/master/module3/Practical_session/Subject6_smoking.csv?inline=false">https://gitlab.inria.fr/learninglab/mooc-rr/mooc-rr-ressources/-/raw/master/module3/Practical_session/Subject6_smoking.csv?inline=false</a>
</p>
<p>
Nous téléchargeons le jeu de donnée de l'exercice au format <code>.csv</code>. Dans
ce jeu de données, chaque ligne correspond aux données d'une
participante lors des études originales. Nous disposons des
informations suivantes :
</p>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<colgroup>
<col class="org-left" />
<col class="org-left" />
</colgroup>
<thead>
<tr>
<th scope="col" class="org-left">Nom de colonne</th>
<th scope="col" class="org-left">Description de la variable dépendante</th>
</tr>
</thead>
<tbody>
<tr>
<td class="org-left">Smoker</td>
<td class="org-left">Si la personne fume ou non.</td>
</tr>
<tr>
<td class="org-left">Status</td>
<td class="org-left">Si la personne est vivante ou décédée.</td>
</tr>
<tr>
<td class="org-left">Age</td>
<td class="org-left">L'âge de la personne si elle est vivante, l'âge à sa mort si elle est décédée.</td>
</tr>
</tbody>
</table>
</div>
</div>
<div id="outline-container-org017997a" class="outline-3">
<h3 id="org017997a"><span class="section-number-3">1.3.</span> Bibliothèques et fonctions utilisées</h3>
<div class="outline-text-3" id="text-1-3">
<p>
Pour la suite des manipulations de données, nous faisons l'usage de
plusieurs fonctions disponibles dans des bibliothèques Python.
</p>
<div class="org-src-container">
<pre class="src src-python"><span style="color: #a020f0;">from</span> os.path <span style="color: #a020f0;">import</span> exists
<span style="color: #a020f0;">from</span> pandas <span style="color: #a020f0;">import</span> read_csv
<span style="color: #a020f0;">from</span> matplotlib <span style="color: #a020f0;">import</span> pyplot <span style="color: #a020f0;">as</span> plt, rc
<span style="color: #a020f0;">from</span> seaborn <span style="color: #a020f0;">import</span> histplot, kdeplot, lmplot
<span style="color: #a020f0;">from</span> urllib <span style="color: #a020f0;">import</span> request
<span style="color: #a020f0;">from</span> numbers <span style="color: #a020f0;">import</span> Real
<span style="color: #a020f0;">from</span> numpy <span style="color: #a020f0;">import</span> nan, arange
</pre>
</div>
</div>
</div>
<div id="outline-container-org440d819" class="outline-3">
<h3 id="org440d819"><span class="section-number-3">1.4.</span> Paramètres communs des graphiques</h3>
<div class="outline-text-3" id="text-1-4">
<p>
Nous souhaitons que les graphiques soient réalisés avec TeX.
</p>
<div class="org-src-container">
<pre class="src src-python"><span style="color: #b22222;"># </span><span style="color: #b22222;">Draw in LaTeX</span>
rc(<span style="color: #8b2252;">'font'</span>, **{<span style="color: #8b2252;">'family'</span>: <span style="color: #8b2252;">'serif'</span>, <span style="color: #8b2252;">'serif'</span>: [<span style="color: #8b2252;">'Courier New'</span>]})
<span style="color: #a0522d;">plt.rcParams</span>[<span style="color: #8b2252;">'text.usetex'</span>] = <span style="color: #008b8b;">True</span>
</pre>
</div>
</div>
</div>
<div id="outline-container-org47446ad" class="outline-3">
<h3 id="org47446ad"><span class="section-number-3">1.5.</span> Import des données</h3>
<div class="outline-text-3" id="text-1-5">
<p>
Dans le cas où une copie locale n'est pas présente, nous téléchargeons
le jeu de données complet depuis son adresse de dépôt.
</p>
<div class="org-src-container">
<pre class="src src-python"><span style="color: #a0522d;">data_file</span> = <span style="color: #8b2252;">"Subject6_smoking.csv"</span>
<span style="color: #a020f0;">if</span> <span style="color: #a020f0;">not</span> exists(data_file):
request.urlretrieve(data_url, data_file)
<span style="color: #a020f0;">print</span>(<span style="color: #8b2252;">'Data set downloaded. \n'</span>)
<span style="color: #a0522d;">data</span> = read_csv(filepath_or_buffer=<span style="color: #8b2252;">'Subject6_smoking.csv'</span>)
data.info(verbose=<span style="color: #008b8b;">True</span>)
<span style="color: #a020f0;">print</span>(<span style="color: #8b2252;">'\n'</span>, data.head())
</pre>
</div>
<pre class="example" id="org00cc09f">
&lt;class 'pandas.core.frame.DataFrame'&gt;
RangeIndex: 1314 entries, 0 to 1313
Data columns (total 3 columns):
Smoker 1314 non-null object
Status 1314 non-null object
Age 1314 non-null float64
dtypes: float64(1), object(2)
memory usage: 30.9+ KB
Smoker Status Age
0 Yes Alive 21.0
1 Yes Alive 19.3
2 No Dead 57.5
3 No Alive 47.1
4 Yes Alive 81.4
</pre>
</div>
</div>
<div id="outline-container-org8b5e0ac" class="outline-3">
<h3 id="org8b5e0ac"><span class="section-number-3">1.6.</span> Vérifications automatiques des données</h3>
<div class="outline-text-3" id="text-1-6">
<p>
Vérifions le jeu de données :
</p>
<ul class="org-ul">
<li>nous ne devons avoir que les valeurs <i>Yes</i> et <i>No</i> dans la colonne
<i>Smoker</i> ;</li>
<li>seules les catégories <i>ALive</i> et <i>Dead</i> doivent être présentent dans la
colonne <i>Status</i> ;</li>
<li>l'âge doit être un réel entre 0 et 123 (le record de longévité
attesté étant de moins de 123 ans).</li>
</ul>
<p>
En cas de valeur incorrecte, nous remplaçons ladite valeur par <code>nan</code>
(<i>Not a number</i>).
</p>
<div class="org-src-container">
<pre class="src src-python"><span style="color: #a020f0;">for</span> row <span style="color: #a020f0;">in</span> data.iterrows():
<span style="color: #a020f0;">if</span> row[1][0] != <span style="color: #8b2252;">'Yes'</span> <span style="color: #a020f0;">and</span> row[1][0] != <span style="color: #8b2252;">'No'</span>:
<span style="color: #a020f0;">print</span>(f<span style="color: #8b2252;">"Uncorrect value in 'Smoker' column: {row[1][0]} (index = {row[0]})"</span>)
data[<span style="color: #8b2252;">'Smoker'</span>].iat[row[0]] = nan
<span style="color: #a020f0;">if</span> row[1][1] != <span style="color: #8b2252;">'Alive'</span> <span style="color: #a020f0;">and</span> row[1][1] != <span style="color: #8b2252;">'Dead'</span>:
<span style="color: #a020f0;">print</span>(f<span style="color: #8b2252;">"Uncorrect value in 'Status' column: {row[1][1]} (index = {row[0]})"</span>)
data[<span style="color: #8b2252;">'Status'</span>].iat[row[0]] = nan
<span style="color: #a020f0;">if</span> <span style="color: #a020f0;">not</span> <span style="color: #483d8b;">isinstance</span>(row[1][2], Real) <span style="color: #a020f0;">and</span> <span style="color: #a020f0;">not</span> 0 &lt;= row[1][2] &lt;= 123:
<span style="color: #a020f0;">print</span>(f<span style="color: #8b2252;">"Uncorrect value in 'Age' column: {row[1][2]} (index = {row[0]})"</span>)
data[<span style="color: #8b2252;">'Age'</span>].iat[row[0]] = nan
</pre>
</div>
</div>
</div>
<div id="outline-container-org064d263" class="outline-3">
<h3 id="org064d263"><span class="section-number-3">1.7.</span> Visualisations des données brutes</h3>
<div class="outline-text-3" id="text-1-7">
</div>
<div id="outline-container-orgd3c6b7e" class="outline-4">
<h4 id="orgd3c6b7e"><span class="section-number-4">1.7.1.</span> Distribution des âges des participantes</h4>
<div class="outline-text-4" id="text-1-7-1">
<p>
Nous souhaitons visualiser les distributions des âges selon les
habitudes de tabagisme.
</p>
<div id="org01b2352" class="figure">
<p><img src="./group_ages_kde.png" alt="group_ages_kde.png" />
</p>
<p><span class="figure-number">Figure 1: </span>Distribution des âges des participantes selon les habitudes de tabagisme (estimation par noyau)</p>
</div>
<p>
Constatons que les distributions en âge des participantes selon les
habitudes de tabagisme ne correspondent pas : les femmes de plus de 60
ans sont davantage présentes dans le groupe des non-fumeuses.
</p>
</div>
</div>
</div>
</div>
<div id="outline-container-org0528b83" class="outline-2">
<h2 id="org0528b83"><span class="section-number-2">2.</span> Analyses de la nocivité du tabagisme chez les femmes</h2>
<div class="outline-text-2" id="text-2">
<p>
Dans les analyses suivantes, nous souhaitons évaluer la nocivité du
tabagisme chez les femmes. Dans le cadre de notre exercice, nous
utilisons trois approches différentes.
</p>
<p>
Notre hypothèse est que le tabac est nocif chez les femmes.
</p>
</div>
<div id="outline-container-org478a935" class="outline-3">
<h3 id="org478a935"><span class="section-number-3">2.1.</span> Approche 1 | Taux de mortalité des fumeuses et non-fumeuses</h3>
<div class="outline-text-3" id="text-2-1">
<p>
Nous cherchons à déterminer les taux de mortalité des deux groupes de
notre étude. Nous souhaitons associer ces taux de mortalité à des
intervalles de confiance à 95%.
</p>
</div>
<div id="outline-container-org3bb101e" class="outline-4">
<h4 id="org3bb101e"><span class="section-number-4">2.1.1.</span> Calcul des paramètres</h4>
<div class="outline-text-4" id="text-2-1-1">
<p>
Commençons par séparer les deux groupes. Le nombre de participantes
mortes dans un groupe ramené à l'effectif total du groupe nous donne
le taux de mortalité dudit groupe.
</p>
<div class="org-src-container">
<pre class="src src-python"><span style="color: #a0522d;">rounding</span> = 1
<span style="color: #a0522d;">smokers</span> = data[(data[<span style="color: #8b2252;">'Smoker'</span>] == <span style="color: #8b2252;">'Yes'</span>)]
<span style="color: #a0522d;">nonsmokers</span> = data[(data[<span style="color: #8b2252;">'Smoker'</span>] == <span style="color: #8b2252;">'No'</span>)]
<span style="color: #a0522d;">dead_smokers</span> = smokers[(smokers[<span style="color: #8b2252;">'Status'</span>] == <span style="color: #8b2252;">'Dead'</span>)]
<span style="color: #a0522d;">dead_nonsmokers</span> = nonsmokers[(nonsmokers[<span style="color: #8b2252;">'Status'</span>] == <span style="color: #8b2252;">'Dead'</span>)]
<span style="color: #a0522d;">smokers_death_rate</span> = <span style="color: #483d8b;">round</span>(dead_smokers.shape[0] / smokers.shape[0] * 100, rounding)
<span style="color: #a0522d;">nonsmokers_death_rate</span> = <span style="color: #483d8b;">round</span>(dead_nonsmokers.shape[0] / nonsmokers.shape[0] * 100, rounding)
</pre>
</div>
<p>
Nous déterminons l'intervalle de confiance à 95% avec la formule
suivante :
</p>
<div class="latex" id="org4f4a245">
<p>
\(\text{IC}_{95} = \frac{100}{n} d \pm 1.96 \sqrt{d}\)
</p>
</div>
<p>
<code>n</code> correspond à l'effectif du groupe considéré et <code>d</code> au nombre
d'individus décédés au sein du même groupe. Voici le code que nous
avons utilisé pour réaliser le calcul des intervalles de confiance :
</p>
<div class="org-src-container">
<pre class="src src-python"><span style="color: #a020f0;">def</span> <span style="color: #0000ff;">death_rate_ci95</span>(sample_size: <span style="color: #483d8b;">int</span>,
deads: <span style="color: #483d8b;">int</span>,
per_people: <span style="color: #483d8b;">int</span> = 100) -&gt; <span style="color: #483d8b;">tuple</span>:
<span style="color: #8b2252;">"""Compute the 95% confidence interval upper and lower limits of a mortality rate in a sample.</span>
<span style="color: #8b2252;"> :param sample_size: number of people in the sample.</span>
<span style="color: #8b2252;"> :param deads: number of deads people in the sample.</span>
<span style="color: #8b2252;"> :param per_people: standardisation number: deads for per_people people. </span>
<span style="color: #8b2252;"> """</span>
<span style="color: #a020f0;">from</span> math <span style="color: #a020f0;">import</span> sqrt
<span style="color: #a0522d;">upper</span> = per_people / sample_size * (deads + 1.96 * sqrt(deads))
<span style="color: #a0522d;">lower</span> = per_people / sample_size * (deads - 1.96 * sqrt(deads))
<span style="color: #a020f0;">return</span> lower, upper
<span style="color: #a0522d;">smokers_dr_95ic</span> = death_rate_ci95(smokers.shape[0], dead_smokers.shape[0])
<span style="color: #a0522d;">nonsmokers_dr_95ic</span> = death_rate_ci95(nonsmokers.shape[0], dead_nonsmokers.shape[0])
</pre>
</div>
</div>
</div>
<div id="outline-container-org5826802" class="outline-4">
<h4 id="org5826802"><span class="section-number-4">2.1.2.</span> Résultats</h4>
<div class="outline-text-4" id="text-2-1-2">
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<colgroup>
<col class="org-left" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-left" />
</colgroup>
<thead>
<tr>
<th scope="col" class="org-left">Tabagisme</th>
<th scope="col" class="org-right">Effectif total</th>
<th scope="col" class="org-right">Individus décédés</th>
<th scope="col" class="org-right">Taux de mortalité (%)</th>
<th scope="col" class="org-left">IC95%</th>
</tr>
</thead>
<tbody>
<tr>
<td class="org-left">Fumeuses</td>
<td class="org-right">582</td>
<td class="org-right">139</td>
<td class="org-right">23.9</td>
<td class="org-left">[19.9;27.9]</td>
</tr>
<tr>
<td class="org-left">Non fumeuses</td>
<td class="org-right">732</td>
<td class="org-right">230</td>
<td class="org-right">31.4</td>
<td class="org-left">[27.4;35.5]</td>
</tr>
</tbody>
</table>
<div id="org7065dbc" class="figure">
<p><img src="./groups_death_rate.png" alt="groups_death_rate.png" />
</p>
<p><span class="figure-number">Figure 2: </span>Effectifs et taux de mortalité parmi les fumeuses et les non fumeuses.</p>
</div>
<p>
Pour le jeu de donnée considéré, le taux de mortalité des fumeuses est
de <code>23.9</code> contre
<code>31.4</code>
pour celui observé chez les non-fumeuses. Ce qui va à l'encontre de
notre hypothèse initiale. Il est possible que l'hétérogénéité
constatée dans la distribution des âges explique ce résultat contre
intuitif.
</p>
</div>
</div>
</div>
<div id="outline-container-org3ce9ee5" class="outline-3">
<h3 id="org3ce9ee5"><span class="section-number-3">2.2.</span> Approche 2 | Taux de mortalité des fumeuses et non-fumeuses selon la classe d'âge</h3>
<div class="outline-text-3" id="text-2-2">
<p>
Nous étudions désormais le taux de mortalité selon les habitudes de
tabagisme et selon la classe d'âge. Nous considérons quatre classes :
</p>
<ul class="org-ul">
<li>[18 ; 34[</li>
<li>[34 ; 54[</li>
<li>[54 ; 64[</li>
<li>[64 ; 123[</li>
</ul>
</div>
<div id="outline-container-org6feb1be" class="outline-4">
<h4 id="org6feb1be"><span class="section-number-4">2.2.1.</span> Calcul des paramètres et résultats</h4>
<div class="outline-text-4" id="text-2-2-1">
<p>
Premièrement nous devons séparer le jeu de donnée selon les classes
d'âge. Puis nous procédons de la même manière que précédemment : nous
identifions les effectifs de chaque groupe, le nombre de décès au sein
des sous-groupes et nous calculons le taux de mortalité associé à son
intervalle de confiance à 95%.
</p>
<div class="org-src-container">
<pre class="src src-python"><span style="color: #a0522d;">categories</span> = [(18, 34), (34, 54), (54, 64), (64, 123)]
<span style="color: #a0522d;">death_rates</span> = [] <span style="color: #b22222;"># </span><span style="color: #b22222;">plotting purpose</span>
<span style="color: #a0522d;">dr_uncertainties</span> = [] <span style="color: #b22222;"># </span><span style="color: #b22222;">plotting purpose</span>
<span style="color: #a020f0;">print</span>(f<span style="color: #8b2252;">"|Classe d'&#226;ge|Tabagisme|Effectif total|Individus d&#233;c&#233;d&#233;s|\</span>
<span style="color: #8b2252;"> Taux de mortalit&#233; (%)|IC95%|\n"</span>
f<span style="color: #8b2252;">"|-+-+-+-+-+-|"</span>)
<span style="color: #a020f0;">for</span> category <span style="color: #a020f0;">in</span> categories:
<span style="color: #a020f0;">for</span> smoker <span style="color: #a020f0;">in</span> data[<span style="color: #8b2252;">'Smoker'</span>].unique():
<span style="color: #a0522d;">alive</span>, <span style="color: #a0522d;">dead</span> = nan, nan
<span style="color: #a020f0;">if</span> smoker == <span style="color: #8b2252;">'Yes'</span>:
<span style="color: #a0522d;">smoke</span> = <span style="color: #8b2252;">'Fumeuses'</span>
<span style="color: #a020f0;">else</span>:
<span style="color: #a0522d;">smoke</span> = <span style="color: #8b2252;">'Non-fumeuses'</span>
<span style="color: #a020f0;">for</span> status <span style="color: #a020f0;">in</span> data[<span style="color: #8b2252;">'Status'</span>].unique():
<span style="color: #a0522d;">subset</span> = data[(data[<span style="color: #8b2252;">'Age'</span>] &gt;= category[0])
&amp; (data[<span style="color: #8b2252;">'Age'</span>] &lt; category[1])
&amp; (data[<span style="color: #8b2252;">'Smoker'</span>] == smoker)
&amp; (data[<span style="color: #8b2252;">'Status'</span>] == status)]
<span style="color: #a020f0;">if</span> status == <span style="color: #8b2252;">'Alive'</span>:
<span style="color: #a0522d;">alive</span> = subset.shape[0]
<span style="color: #a020f0;">else</span>:
<span style="color: #a0522d;">dead</span> = subset.shape[0]
<span style="color: #a0522d;">death_rate</span> = dead / (alive + dead) * 100
death_rates.append(death_rate)
<span style="color: #a0522d;">dr_ci95</span> = death_rate_ci95(alive + dead, dead)
dr_uncertainties.append(dr_ci95[1] - death_rate)
<span style="color: #a0522d;">rounded_dr_ci95</span> = <span style="color: #483d8b;">list</span>(dr_ci95)
<span style="color: #a0522d;">rounded_dr_ci95</span>[0] = <span style="color: #483d8b;">round</span>(rounded_dr_ci95[0], rounding)
<span style="color: #a0522d;">rounded_dr_ci95</span>[1] = <span style="color: #483d8b;">round</span>(rounded_dr_ci95[1], rounding)
<span style="color: #a0522d;">r_dr_ci95</span> = <span style="color: #483d8b;">tuple</span>(rounded_dr_ci95)
<span style="color: #a020f0;">print</span>(f<span style="color: #8b2252;">"|[{category[0]};{category[1]}[|{smoke}|{alive + dead}|\</span>
<span style="color: #8b2252;"> {dead}|{round(death_rate, rounding)}|{r_dr_ci95}|"</span>)
</pre>
</div>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<colgroup>
<col class="org-left" />
<col class="org-left" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-left" />
</colgroup>
<thead>
<tr>
<th scope="col" class="org-left">Classe d'âge</th>
<th scope="col" class="org-left">Tabagisme</th>
<th scope="col" class="org-right">Effectif total</th>
<th scope="col" class="org-right">Individus décédés</th>
<th scope="col" class="org-right">Taux de mortalité (%)</th>
<th scope="col" class="org-left">IC95%</th>
</tr>
</thead>
<tbody>
<tr>
<td class="org-left">[18;34[</td>
<td class="org-left">Fumeuses</td>
<td class="org-right">179</td>
<td class="org-right">5</td>
<td class="org-right">2.8</td>
<td class="org-left">(0.3, 5.2)</td>
</tr>
<tr>
<td class="org-left">[18;34[</td>
<td class="org-left">Non-fumeuses</td>
<td class="org-right">219</td>
<td class="org-right">6</td>
<td class="org-right">2.7</td>
<td class="org-left">(0.5, 4.9)</td>
</tr>
<tr>
<td class="org-left">[34;54[</td>
<td class="org-left">Fumeuses</td>
<td class="org-right">239</td>
<td class="org-right">41</td>
<td class="org-right">17.2</td>
<td class="org-left">(11.9, 22.4)</td>
</tr>
<tr>
<td class="org-left">[34;54[</td>
<td class="org-left">Non-fumeuses</td>
<td class="org-right">199</td>
<td class="org-right">19</td>
<td class="org-right">9.5</td>
<td class="org-left">(5.3, 13.8)</td>
</tr>
<tr>
<td class="org-left">[54;64[</td>
<td class="org-left">Fumeuses</td>
<td class="org-right">115</td>
<td class="org-right">51</td>
<td class="org-right">44.3</td>
<td class="org-left">(32.2, 56.5)</td>
</tr>
<tr>
<td class="org-left">[54;64[</td>
<td class="org-left">Non-fumeuses</td>
<td class="org-right">119</td>
<td class="org-right">39</td>
<td class="org-right">32.8</td>
<td class="org-left">(22.5, 43.1)</td>
</tr>
<tr>
<td class="org-left">[64;123[</td>
<td class="org-left">Fumeuses</td>
<td class="org-right">49</td>
<td class="org-right">42</td>
<td class="org-right">85.7</td>
<td class="org-left">(59.8, 111.6)</td>
</tr>
<tr>
<td class="org-left">[64;123[</td>
<td class="org-left">Non-fumeuses</td>
<td class="org-right">195</td>
<td class="org-right">166</td>
<td class="org-right">85.1</td>
<td class="org-left">(72.2, 98.1)</td>
</tr>
</tbody>
</table>
<div class="org-src-container">
<pre class="src src-python"><span style="color: #a0522d;">fig</span>, <span style="color: #a0522d;">ax</span> = plt.subplots()
<span style="color: #a0522d;">x_pos</span> = arange(<span style="color: #483d8b;">len</span>(categories))
<span style="color: #a0522d;">width</span> = 0.35
<span style="color: #a0522d;">xlabels</span> = <span style="color: #483d8b;">list</span>(<span style="color: #483d8b;">map</span>(<span style="color: #483d8b;">str</span>, categories))
<span style="color: #a020f0;">for</span> x_l, xlabel <span style="color: #a020f0;">in</span> <span style="color: #483d8b;">enumerate</span>(xlabels):
<span style="color: #a0522d;">head</span>, <span style="color: #a0522d;">_</span>, <span style="color: #a0522d;">tail</span> = xlabel.partition(<span style="color: #8b2252;">','</span>)
<span style="color: #a0522d;">xlabels</span>[x_l] = <span style="color: #8b2252;">'['</span> + head[1:] + <span style="color: #8b2252;">';'</span> + tail[:-1] + <span style="color: #8b2252;">'['</span>
plt.bar(x=x_pos - width / 2,
height=death_rates[0:<span style="color: #483d8b;">len</span>(death_rates):2],
yerr=dr_uncertainties[0:<span style="color: #483d8b;">len</span>(death_rates):2],
label=<span style="color: #8b2252;">'Smoker'</span>, width=width, edgecolor=<span style="color: #8b2252;">'k'</span>,
error_kw=<span style="color: #483d8b;">dict</span>(lolims=<span style="color: #008b8b;">True</span>))
plt.bar(x=x_pos + width / 2,
height=death_rates[1:<span style="color: #483d8b;">len</span>(death_rates):2],
yerr=dr_uncertainties[1:<span style="color: #483d8b;">len</span>(death_rates):2],
label=<span style="color: #8b2252;">'Nonsmoker'</span>, width=width, edgecolor=<span style="color: #8b2252;">'k'</span>,
error_kw=<span style="color: #483d8b;">dict</span>(lolims=<span style="color: #008b8b;">True</span>))
<span style="color: #b22222;"># </span><span style="color: #b22222;">In order to modify the default lolims error bars shape</span>
<span style="color: #a020f0;">for</span> ch <span style="color: #a020f0;">in</span> ax.get_children():
<span style="color: #a020f0;">if</span> <span style="color: #483d8b;">str</span>(ch).startswith(<span style="color: #8b2252;">'Line2D'</span>):
ch.set_marker(<span style="color: #8b2252;">'_'</span>)
ch.set_markersize(6)
plt.ylabel(<span style="color: #8b2252;">'Death rate (%)'</span>)
plt.xlabel(<span style="color: #8b2252;">'Age category'</span>)
plt.xticks(x_pos)
ax.set_xticklabels(xlabels)
plt.legend()
plt.tight_layout()
plt.savefig(<span style="color: #8b2252;">"age_categories_death_rate.png"</span>)
</pre>
</div>
<p>
<a href=""></a>
</p>
<div id="orgaacc7eb" class="figure">
<p><img src="./age_categories_death_rate.png" alt="age_categories_death_rate.png" />
</p>
<p><span class="figure-number">Figure 3: </span>Taux de mortalité et IC95% selon les habitudes de tabagisme et la classe d'âge</p>
</div>
<p>
Pour chacune de nos classes d'âge, les résultats indiquent que le taux
de mortalité des fumeuses est supérieur à celui des non-fumeuses ;
soit une interprétation des données en contradiction avec la première
analyse sans prise en compte de l'âge.
</p>
<p>
Outre un biais potentiel lié aux distributions des âges hétérogènes,
d'autres biais sont susceptibles d'exister dans les analyses
précédentes :
</p>
<ul class="org-ul">
<li>un biais lié à la non prise en compte de l'âge dans le calcul des
taux de mortalité ;</li>
<li>un biais lié aux choix de catégorisation.</li>
</ul>
<p>
En somme au moins trois biais peuvent se combiner dans nos études
précédentes et fausser nos interprétations.
</p>
<p>
Enfin, notons que l'âge semble avoir un effet supérieur au tabac sur
le taux de mortalité puisque l'amplitude des différences entre les
classes d'âge est supérieure à celle entre les habitudes de
tabagisme. En somme : le tabac tue, mais vieillir tue davantage.
</p>
</div>
</div>
</div>
<div id="outline-container-org1cbd4e0" class="outline-3">
<h3 id="org1cbd4e0"><span class="section-number-3">2.3.</span> Approche 3 | Probabilité de décès des fumeuses et non-fumeuses selon l'âge</h3>
<div class="outline-text-3" id="text-2-3">
<p>
Evitons les deux derniers biais en passant du calcul du taux de
mortalité au calcul de la probabilité de décès selon l'âge et les
habitudes de tabagisme. Pour ce faire nous pouvons utiliser la
régression logistique.
</p>
</div>
<div id="outline-container-orgda7352c" class="outline-4">
<h4 id="orgda7352c"><span class="section-number-4">2.3.1.</span> Manipulation des données</h4>
<div class="outline-text-4" id="text-2-3-1">
<p>
Plutôt que de disposer des status <code>Alive</code> et <code>Dead</code>, nous voulons qu'ils
soient respectivement codés avec <code>0</code> et <code>1</code>. Nous souhaitons à nouveau
disposer de jeux de données spécifiques à chaque groupe : fumeuses et
non fumeuses.
</p>
<div class="org-src-container">
<pre class="src src-python"><span style="color: #a0522d;">deaths</span> = []
<span style="color: #a020f0;">for</span> status <span style="color: #a020f0;">in</span> data[<span style="color: #8b2252;">'Status'</span>]:
<span style="color: #a020f0;">if</span> status == <span style="color: #8b2252;">'Alive'</span>:
deaths.append(0)
<span style="color: #a020f0;">else</span>:
deaths.append(1)
<span style="color: #a0522d;">data</span>[<span style="color: #8b2252;">'Death'</span>] = deaths
<span style="color: #a0522d;">smokers</span> = data[(data[<span style="color: #8b2252;">'Smoker'</span>] == <span style="color: #8b2252;">'Yes'</span>)]
<span style="color: #a0522d;">nonsmokers</span> = data[(data[<span style="color: #8b2252;">'Smoker'</span>] == <span style="color: #8b2252;">'No'</span>)]
<span style="color: #a020f0;">print</span>(smokers.head(), <span style="color: #8b2252;">'\n'</span>, <span style="color: #8b2252;">'\n'</span>, nonsmokers.head())
</pre>
</div>
<pre class="example" id="orgb21201e">
Smoker Status Age Death
0 Yes Alive 21.0 0
1 Yes Alive 19.3 0
4 Yes Alive 81.4 0
7 Yes Dead 57.5 1
8 Yes Alive 24.8 0
Smoker Status Age Death
2 No Dead 57.5 1
3 No Alive 47.1 0
5 No Alive 36.8 0
6 No Alive 23.8 0
11 No Dead 66.0 1
</pre>
</div>
</div>
<div id="outline-container-org2f1fa28" class="outline-4">
<h4 id="org2f1fa28"><span class="section-number-4">2.3.2.</span> Régressions logistiques</h4>
<div class="outline-text-4" id="text-2-3-2">
</div>
<ol class="org-ol">
<li><a id="org844efd9"></a>Réglages et code de la modélisation<br />
<div class="outline-text-5" id="text-2-3-2-1">
<p>
Pour effectuer la régression logistique, nous utilisons la
bibliothèque <code>statsmodels</code>. Nous laissons les paramètres par défaut : le
modèle est le logit, la méthode est celle du maximum de vraisemblance
(<i>Maximum Likelyhood Estimation</i>).
</p>
<div class="org-src-container">
<pre class="src src-python"><span style="color: #a020f0;">def</span> <span style="color: #0000ff;">logistic_regression</span>(independent_variable: <span style="color: #483d8b;">list</span>,
dependent_variable: <span style="color: #483d8b;">list</span>) -&gt; <span style="color: #483d8b;">object</span>:
<span style="color: #8b2252;">"""Logisitic regression with Logit model and MLE method.</span>
<span style="color: #8b2252;"> :param independent_variable: the independent variable</span>
<span style="color: #8b2252;"> :param dependent_variable: the dependent variable</span>
<span style="color: #8b2252;"> </span>
<span style="color: #8b2252;"> :return fitted_model: the logisitc regression fitted model.</span>
<span style="color: #8b2252;"> """</span>
<span style="color: #a020f0;">import</span> statsmodels.api <span style="color: #a020f0;">as</span> sm
<span style="color: #a0522d;">model</span> = sm.Logit(dependent_variable, sm.add_constant(independent_variable))
<span style="color: #a0522d;">fitted_model</span> = model.fit()
<span style="color: #a020f0;">print</span>(<span style="color: #8b2252;">'\n'</span>, fitted_model.summary())
<span style="color: #a020f0;">return</span> fitted_model
</pre>
</div>
</div>
</li>
<li><a id="orgb735a80"></a>Cas des fumeuses<br />
<div class="outline-text-5" id="text-2-3-2-2">
<div class="org-src-container">
<pre class="src src-python"><span style="color: #a0522d;">proba_smokers</span>, <span style="color: #a0522d;">model_smokers</span> = logistic_regression(smokers[<span style="color: #8b2252;">'Age'</span>],
smokers[<span style="color: #8b2252;">'Death'</span>])
</pre>
</div>
<pre class="example" id="org89b5746">
/usr/lib/python3/dist-packages/numpy/core/fromnumeric.py:2495: FutureWarning: Method .ptp is deprecated and will be removed in a future version. Use numpy.ptp instead.
return ptp(axis=axis, out=out, **kwargs)
Optimization terminated successfully.
Current function value: 0.412727
Iterations 7
Logit Regression Results
==============================================================================
Dep. Variable: Death No. Observations: 582
Model: Logit Df Residuals: 580
Method: MLE Df Model: 1
Date: jeu., 14 oct. 2021 Pseudo R-squ.: 0.2492
Time: 10:05:54 Log-Likelihood: -240.21
converged: True LL-Null: -319.94
Covariance Type: nonrobust LLR p-value: 1.477e-36
==============================================================================
coef std err z P&gt;|z| [0.025 0.975]
------------------------------------------------------------------------------
const -5.5081 0.466 -11.814 0.000 -6.422 -4.594
Age 0.0890 0.009 10.203 0.000 0.072 0.106
==============================================================================
</pre>
</div>
</li>
<li><a id="org5255456"></a>Cas des non-fumeuses<br />
<div class="outline-text-5" id="text-2-3-2-3">
<div class="org-src-container">
<pre class="src src-python"><span style="color: #a0522d;">proba_nonsmokers</span>, <span style="color: #a0522d;">model_nonsmokers</span> = logistic_regression(nonsmokers[<span style="color: #8b2252;">'Age'</span>],
nonsmokers[<span style="color: #8b2252;">'Death'</span>])
</pre>
</div>
<pre class="example" id="org4782e9b">
/usr/lib/python3/dist-packages/numpy/core/fromnumeric.py:2495: FutureWarning: Method .ptp is deprecated and will be removed in a future version. Use numpy.ptp instead.
return ptp(axis=axis, out=out, **kwargs)
Optimization terminated successfully.
Current function value: 0.354560
Iterations 7
Logit Regression Results
==============================================================================
Dep. Variable: Death No. Observations: 732
Model: Logit Df Residuals: 730
Method: MLE Df Model: 1
Date: jeu., 14 oct. 2021 Pseudo R-squ.: 0.4304
Time: 10:05:54 Log-Likelihood: -259.54
converged: True LL-Null: -455.62
Covariance Type: nonrobust LLR p-value: 2.808e-87
==============================================================================
coef std err z P&gt;|z| [0.025 0.975]
------------------------------------------------------------------------------
const -6.7955 0.479 -14.174 0.000 -7.735 -5.856
Age 0.1073 0.008 13.742 0.000 0.092 0.123
==============================================================================
</pre>
</div>
</li>
</ol>
</div>
<div id="outline-container-orgd7f9c80" class="outline-4">
<h4 id="orgd7f9c80"><span class="section-number-4">2.3.3.</span> Visualisation des résultats</h4>
<div class="outline-text-4" id="text-2-3-3">
<div class="org-src-container">
<pre class="src src-python"><span style="color: #a0522d;">fig</span>, <span style="color: #a0522d;">ax</span> = plt.subplots()
ax.set_xlim(15, 100)
ax.set_ylabel(<span style="color: #8b2252;">'Death probability'</span>)
ax.set_xlabel(<span style="color: #8b2252;">'Age'</span>)
lmplot(data=data, x=<span style="color: #8b2252;">'Age'</span>, y=<span style="color: #8b2252;">'Death'</span>, hue=<span style="color: #8b2252;">'Smoker'</span>,
logistic=<span style="color: #008b8b;">True</span>, y_jitter=0.01, truncate=<span style="color: #008b8b;">False</span>,
markers=[<span style="color: #8b2252;">'o'</span>, <span style="color: #8b2252;">'x'</span>], scatter_kws=<span style="color: #483d8b;">dict</span>(alpha=0.3))
plt.tight_layout()
plt.savefig(<span style="color: #8b2252;">'death_probabilities.png'</span>)
</pre>
</div>
<p>
<a href=""></a>
</p>
<div id="orgfa60244" class="figure">
<p><img src="./death_probabilities.png" alt="death_probabilities.png" />
</p>
<p><span class="figure-number">Figure 4: </span>Estimation des probabilités de décès selon l'âge et les habitudes de tabagisme.</p>
</div>
<p>
L'analyse graphique des résultats semble indiquer une plus forte
probabilité de décès des femmes fumeuses avant 55 ans. Après cet âge,
les probabilités de décès ne paraissent plus influencées par les
habitudes de tabagisme. Le tabac chez les femmes est donc nocif,
surtout avant 55 ans.
</p>
</div>
</div>
</div>
</div>
<div id="outline-container-orgfaaa9d6" class="outline-2">
<h2 id="orgfaaa9d6"><span class="section-number-2">3.</span> Paradoxe de Simpson</h2>
<div class="outline-text-2" id="text-3">
<p>
Nous sommes face à un paradoxe de Simpson quand la tendance observée
au sein de sous-groupes disparaît ou est inversée quand les
sous-groupes sont combinés.
</p>
</div>
<div id="outline-container-org5888c56" class="outline-3">
<h3 id="org5888c56"><span class="section-number-3">3.1.</span> Qu'en est-il du paradoxe de Simpson dans notre cas ?</h3>
<div class="outline-text-3" id="text-3-1">
<p>
Lors de notre première approche, les résultats indiquent que le taux
de mortalité est supérieur chez les non-fumeuses (<code>31.4</code> contre
<code>23.9</code>). Lors de la deuxième
approche, lors de la prise en compte de l'âge, les résultats indiquent
l'inverse : le taux de mortalité est supérieur chez les
fumeuses. Nous sommes face à un paradoxe de Simpson : la prise en
compte ou non de la variable <code>Age</code> inverse les interprétations que nous
pouvons faire des effets du tabagisme chez les femmes.
</p>
</div>
</div>
<div id="outline-container-org84ff5ed" class="outline-3">
<h3 id="org84ff5ed"><span class="section-number-3">3.2.</span> Quelles sont les explications dans notre cas ?</h3>
<div class="outline-text-3" id="text-3-2">
<p>
Il est probable que le paradoxe observé dans le cadre de cet exercice
s'explique en partie par les faits suivants :
</p>
<ul class="org-ul">
<li>il existe une différence de <code>150</code> individus entre les
effectifs des fumeuses et des non fumeuses, soit environ
<code>11.0</code> % de l'effectif total, ce qui n'est pas négligeable ;</li>
<li>les distributions en âge au sein des groupes (selon les habitudes de
tabagisme) ne coïncident pas ;</li>
<li>l'âge a un effet supérieur au tabac sur le taux de mortalité.</li>
</ul>
</div>
</div>
</div>
</div>
<div id="postamble" class="status">
<p class="author">Author: Victor</p>
<p class="date">Created: 2021-10-14 jeu. 10:06</p>
<p class="validation"><a href="https://validator.w3.org/check?uri=referer">Validate</a></p>
</div>
</body>
</html>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment