-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathcap-lm.html
620 lines (604 loc) · 73.5 KB
/
cap-lm.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>Capítulo 15 Modelización lineal | Fundamentos de ciencia de datos con R</title>
<meta name="author" content="Gema Fernández-Avilés y José-María Montero">
<meta name="description" content="Víctor Casero-Alonso\(^{a}\) y María Durbán\(^{b}\) \(^{a}\)Universidad de Castilla-La Mancha\(^{b}\)Universidad Carlos III de Madrid 15.1 Modelización Se acude a los modelos de regresión para...">
<meta name="generator" content="bookdown 0.37 with bs4_book()">
<meta property="og:title" content="Capítulo 15 Modelización lineal | Fundamentos de ciencia de datos con R">
<meta property="og:type" content="book">
<meta property="og:image" content="/img/cover.png">
<meta property="og:description" content="Víctor Casero-Alonso\(^{a}\) y María Durbán\(^{b}\) \(^{a}\)Universidad de Castilla-La Mancha\(^{b}\)Universidad Carlos III de Madrid 15.1 Modelización Se acude a los modelos de regresión para...">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Capítulo 15 Modelización lineal | Fundamentos de ciencia de datos con R">
<meta name="twitter:description" content="Víctor Casero-Alonso\(^{a}\) y María Durbán\(^{b}\) \(^{a}\)Universidad de Castilla-La Mancha\(^{b}\)Universidad Carlos III de Madrid 15.1 Modelización Se acude a los modelos de regresión para...">
<meta name="twitter:image" content="/img/cover.png">
<!-- JS --><script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js" integrity="sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=" crossorigin="anonymous"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/fuse.js/6.4.6/fuse.js" integrity="sha512-zv6Ywkjyktsohkbp9bb45V6tEMoWhzFzXis+LrMehmJZZSys19Yxf1dopHx7WzIKxr5tK2dVcYmaCk2uqdjF4A==" crossorigin="anonymous"></script><script src="https://kit.fontawesome.com/6ecbd6c532.js" crossorigin="anonymous"></script><script src="libs/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link href="libs/bootstrap-4.6.0/bootstrap.min.css" rel="stylesheet">
<script src="libs/bootstrap-4.6.0/bootstrap.bundle.min.js"></script><script src="libs/bs3compat-0.6.1/transition.js"></script><script src="libs/bs3compat-0.6.1/tabs.js"></script><script src="libs/bs3compat-0.6.1/bs3compat.js"></script><link href="libs/bs4_book-1.0.0/bs4_book.css" rel="stylesheet">
<script src="libs/bs4_book-1.0.0/bs4_book.js"></script><link href="libs/tabwid-1.1.3/tabwid.css" rel="stylesheet">
<script src="libs/tabwid-1.1.3/tabwid.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/autocomplete.js/0.38.0/autocomplete.jquery.min.js" integrity="sha512-GU9ayf+66Xx2TmpxqJpliWbT5PiGYxpaG8rfnBEk1LL8l1KGkRShhngwdXK1UgqhAzWpZHSiYPc09/NwDQIGyg==" crossorigin="anonymous"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/mark.js/8.11.1/mark.min.js" integrity="sha512-5CYOlHXGh6QpOFA/TeTylKLWfB3ftPsde7AnmhuitiTX4K5SqCLBeKro6sPS8ilsz1Q4NRx3v8Ko2IBiszzdww==" crossorigin="anonymous"></script><!-- CSS --><link rel="stylesheet" href="bs4_style.css">
<link rel="stylesheet" href="bs4_book.css">
<link rel="stylesheet" href="style.css">
</head>
<body data-spy="scroll" data-target="#toc">
<div class="container-fluid">
<div class="row">
<header class="col-sm-12 col-lg-3 sidebar sidebar-book"><a class="sr-only sr-only-focusable" href="#content">Skip to main content</a>
<div class="d-flex align-items-start justify-content-between">
<h1>
<a href="index.html" title="">Fundamentos de ciencia de datos con <strong>R</strong></a>
</h1>
<button class="btn btn-outline-primary d-lg-none ml-2 mt-1" type="button" data-toggle="collapse" data-target="#main-nav" aria-expanded="true" aria-controls="main-nav"><i class="fas fa-bars"></i><span class="sr-only">Show table of contents</span></button>
</div>
<div id="main-nav" class="collapse-lg">
<form role="search">
<input id="search" class="form-control" type="search" placeholder="Buscar" aria-label="Buscar">
</form>
<nav aria-label="Contenido"><h2>Contenido</h2>
<ul class="book-toc list-unstyled">
<li><a class="" href="index.html">Prefacio</a></li>
<li><a class="" href="pr%C3%B3logo-by-julia-silge.html">Prólogo (by Julia Silge)</a></li>
<li><a class="" href="pr%C3%B3logo-por-yanina-bellini.html">Prólogo (por Yanina Bellini)</a></li>
<li class="book-part">Ciencia, datos, software… y científicos</li>
<li><a class="" href="ciencia-datos.html"><span class="header-section-number">1</span> ¿Es la ciencia de datos una ciencia?</a></li>
<li><a class="" href="metodologia.html"><span class="header-section-number">2</span> Metodología en ciencia de datos</a></li>
<li><a class="" href="ch-110003.html"><span class="header-section-number">3</span> R para ciencia de datos</a></li>
<li><a class="" href="cap-etica.html"><span class="header-section-number">4</span> Ética en la ciencia de datos</a></li>
<li class="book-part">Bienvenidos a la jungla de datos</li>
<li><a class="" href="datos-sql.html"><span class="header-section-number">5</span> Gestión de bases de datos relacionales</a></li>
<li><a class="" href="cap-nosql.html"><span class="header-section-number">6</span> Gestión de bases de datos NoSQL</a></li>
<li><a class="" href="DGDQM.html"><span class="header-section-number">7</span> Gobierno, gestión y calidad del dato</a></li>
<li><a class="" href="cap-130009.html"><span class="header-section-number">8</span> Integración y limpieza de datos</a></li>
<li><a class="" href="chap-feature.html"><span class="header-section-number">9</span> Selección y transformación de variables</a></li>
<li><a class="" href="chap-herramientas.html"><span class="header-section-number">10</span> Herramientas para el análisis en ciencia de datos</a></li>
<li><a class="" href="cap-120006-aed.html"><span class="header-section-number">11</span> Análisis exploratorio de datos</a></li>
<li class="book-part">Fundamentos de estadística</li>
<li><a class="" href="Funda-probab.html"><span class="header-section-number">12</span> Probabilidad</a></li>
<li><a class="" href="Fundainfer.html"><span class="header-section-number">13</span> Inferencia estadística</a></li>
<li><a class="" href="muestreo.html"><span class="header-section-number">14</span> Muestreo y remuestreo</a></li>
<li class="book-part">Modelización estadística</li>
<li><a class="active" href="cap-lm.html"><span class="header-section-number">15</span> Modelización lineal</a></li>
<li><a class="" href="cap-glm.html"><span class="header-section-number">16</span> Modelos lineales generalizados</a></li>
<li><a class="" href="cap-gam.html"><span class="header-section-number">17</span> Modelos aditivos generalizados</a></li>
<li><a class="" href="cap-mxm.html"><span class="header-section-number">18</span> Modelos mixtos</a></li>
<li><a class="" href="cap-sparse.html"><span class="header-section-number">19</span> Modelos \(\textit{sparse}\) y métodos penalizados de regresión</a></li>
<li><a class="" href="cap-series-temp.html"><span class="header-section-number">20</span> Modelización de series temporales</a></li>
<li><a class="" href="cap-discriminante.html"><span class="header-section-number">21</span> Análisis discriminante</a></li>
<li><a class="" href="cap-conjunto.html"><span class="header-section-number">22</span> Análisis conjunto</a></li>
<li><a class="" href="tablas-contingencia.html"><span class="header-section-number">23</span> Análisis de tablas de contingencia</a></li>
<li class="book-part">Machine learning supervisado</li>
<li><a class="" href="cap-arboles.html"><span class="header-section-number">24</span> Árboles de clasificación y regresión</a></li>
<li><a class="" href="cap-svm.html"><span class="header-section-number">25</span> Máquinas de vector soporte</a></li>
<li><a class="" href="cap-knn.html"><span class="header-section-number">26</span> Clasificador \(k\)-vecinos más próximos</a></li>
<li><a class="" href="cap-naive-bayes.html"><span class="header-section-number">27</span> Naive Bayes</a></li>
<li><a class="" href="cap-bagg-rf.html"><span class="header-section-number">28</span> Métodos ensamblados: \(\bf \textit {bagging}\) y \(\bf \textit{random}\) \(\bf \textit{forest}\)</a></li>
<li><a class="" href="cap-boosting-xgboost.html"><span class="header-section-number">29</span> \(\bf \textit{Boosting}\) y el algoritmo XGBoost</a></li>
<li class="book-part">Machine learning no supervisado</li>
<li><a class="" href="cap-cluster.html"><span class="header-section-number">30</span> Análisis clúster: clusterización jerárquica</a></li>
<li><a class="" href="no-jerarquico.html"><span class="header-section-number">31</span> Análisis clúster: clusterización no jerárquica</a></li>
<li><a class="" href="acp.html"><span class="header-section-number">32</span> Análisis de componentes principales</a></li>
<li><a class="" href="af.html"><span class="header-section-number">33</span> Análisis factorial</a></li>
<li><a class="" href="mds.html"><span class="header-section-number">34</span> Escalamiento multidimensional</a></li>
<li><a class="" href="correspondencias.html"><span class="header-section-number">35</span> Análisis de correspondencias</a></li>
<li class="book-part">Deep learning</li>
<li><a class="" href="capNN.html"><span class="header-section-number">36</span> Redes neuronales artificiales</a></li>
<li><a class="" href="cap-redes-convol.html"><span class="header-section-number">37</span> Redes neuronales convolucionales</a></li>
<li class="book-part">Ciencia de datos de texto y redes</li>
<li><a class="" href="mineria-textos.html"><span class="header-section-number">38</span> Minería de textos</a></li>
<li><a class="" href="grafos.html"><span class="header-section-number">39</span> Análisis de grafos y redes sociales</a></li>
<li class="book-part">Ciencia de datos espaciales</li>
<li><a class="" href="datos-espaciales.html"><span class="header-section-number">40</span> Trabajando con datos espaciales</a></li>
<li><a class="" href="geo.html"><span class="header-section-number">41</span> Geoestadística</a></li>
<li><a class="" href="cap-econom-esp.html"><span class="header-section-number">42</span> Modelos econométricos espaciales</a></li>
<li><a class="" href="cap-pp.html"><span class="header-section-number">43</span> Procesos de puntos</a></li>
<li class="book-part">Comunica y colabora</li>
<li><a class="" href="cap-120007-informes.html"><span class="header-section-number">44</span> Informes reproducibles con R Markdown y Quarto</a></li>
<li><a class="" href="shiny.html"><span class="header-section-number">45</span> Creación de aplicaciones web interactivas con Shiny</a></li>
<li><a class="" href="github.html"><span class="header-section-number">46</span> Git y GitHub R</a></li>
<li><a class="" href="geoproces.html"><span class="header-section-number">47</span> Geoprocesamiento en nube</a></li>
<li class="book-part">Casos de estudio en ciencia de datos</li>
<li><a class="" href="cap-crimen.html"><span class="header-section-number">48</span> Análisis de una red criminal</a></li>
<li><a class="" href="cap-publicidad.html"><span class="header-section-number">49</span> Optimización de inversiones publicitarias</a></li>
<li><a class="" href="cap-twitter.html"><span class="header-section-number">50</span> ¿Cómo tuitea Elon Musk?</a></li>
<li><a class="" href="cap-periodismo.html"><span class="header-section-number">51</span> Análisis electoral: de RStudio a su periódico favorito</a></li>
<li><a class="" href="paro-clm.html"><span class="header-section-number">52</span> El impacto de las crisis financiera y de la COVID-19 en el paro de CLM</a></li>
<li><a class="" href="cap-rfm.html"><span class="header-section-number">53</span> Segmentación de clientes en el comercio minorista</a></li>
<li><a class="" href="cap-medicina.html"><span class="header-section-number">54</span> Análisis de datos en medicina</a></li>
<li><a class="" href="cap-futbol.html"><span class="header-section-number">55</span> Messi y Ronaldo: dos ídolos desde la perspectiva de los datos</a></li>
<li><a class="" href="cambioclimatico.html"><span class="header-section-number">56</span> Una nota sobre el cambio climático</a></li>
<li><a class="" href="cap-sist-exp.html"><span class="header-section-number">57</span> Implementación de un sistema experto en el ámbito pediátrico</a></li>
<li><a class="" href="cap-ree.html"><span class="header-section-number">58</span> Predicción de consumo eléctrico con redes neuronales artificiales</a></li>
<li><a class="" href="nlp-textil.html"><span class="header-section-number">59</span> El procesamiento del lenguaje natural para tendencias de moda en textil</a></li>
<li><a class="" href="cap-fraude.html"><span class="header-section-number">60</span> Detección de fraude de tarjetas de crédito</a></li>
<li class="book-part">Appendix</li>
<li><a class="" href="info-session.html"><span class="header-section-number">A</span> Información de la sesión</a></li>
<li><a class="" href="referencias.html">Referencias</a></li>
</ul>
<div class="book-extra">
</div>
</nav>
</div>
</header><main class="col-sm-12 col-md-9 col-lg-7" id="content"><div id="cap-lm" class="section level1" number="15">
<h1>
<span class="header-section-number">Capítulo 15</span> Modelización lineal<a class="anchor" aria-label="anchor" href="#cap-lm"><i class="fas fa-link"></i></a>
</h1>
<p><em>Víctor Casero-Alonso</em><span class="math inline">\(^{a}\)</span> y
<em>María Durbán</em><span class="math inline">\(^{b}\)</span></p>
<p><span class="math inline">\(^{a}\)</span>Universidad de Castilla-La Mancha<br><span class="math inline">\(^{b}\)</span>Universidad Carlos III de Madrid</p>
<div id="modelización" class="section level2" number="15.1">
<h2>
<span class="header-section-number">15.1</span> Modelización<a class="anchor" aria-label="anchor" href="#modelizaci%C3%B3n"><i class="fas fa-link"></i></a>
</h2>
<p>Se acude a los <strong>modelos de regresión</strong> para intentar explicar la relación entre dos o más variables. Para ello se predefine un modelo que pretende explicar el comportamiento de la variable <strong>respuesta</strong> <strong>o dependiente</strong>, denotada por <em>Y</em>, utilizando la información proporcionada por las <strong>variables explicativas</strong>, también llamadas independientes o predictoras, denotadas por <span class="math inline">\(X_1,\ldots,X_p\)</span>.
Pero dichas variables pueden ser de distinto tipo. Si la variable respuesta es continua, más concretamente, si se puede asumir que sigue una <strong>distribución de probabilidad normal</strong>, y al menos una de las variables explicativas es también continua, se puede acudir a la <strong>modelización lineal</strong> que se desarrolla en este capítulo. Sin embargo, si la variable respuesta fuese de otro tipo, por ejemplo, dicotómica, la modelización lineal no sería adecuada. En el Cap. <a href="cap-glm.html#cap-glm">16</a>, en el que se aborda el <strong>modelo lineal generalizado</strong>, quedará más clara esta distinción.</p>
<p>El primer paso en el proceso de modelización es intentar explicar una variable respuesta, que de aquí en adelante se supone continua y con distribución normal, a partir de una sola de las variables explicativas, de forma <em>lineal</em> (<strong>modelo lineal simple</strong>). Dicho modelo probablemente no será “bueno”, no explicará bien el comportamiento de la variable respuesta si la realidad que se pretende explicar es compleja, pero podría ser <em>suficiente</em> para el propósito del estudio.<a class="footnote-ref" tabindex="0" data-toggle="popover" data-content='<p>La capacidad de explicación la proporciona el coeficiente de <strong>bondad de ajuste</strong> o coeficiente de determinación lineal, <span class="math inline">\(R^2\)</span> (véase la Sec. <a href="cap-lm.html#Bondad">15.2.1</a>).</p>'><sup>114</sup></a></p>
<div class="infobox">
<p><strong>Nota</strong></p>
<p>Se entiende por <strong>modelo lineal</strong> aquel cuya relación entre las variables viene determinada por una combinación <em>lineal</em> de los parámetros, por ejemplo:</p>
<ul>
<li>
<span class="math inline">\(Y = \beta_0 + \beta_1 X + \epsilon\)</span>.</li>
<li>
<span class="math inline">\(Y = \beta_0 + \beta_1 X_1 + \beta_2 X_2 + \beta_3 X_3 + \epsilon\)</span>.</li>
<li>
<span class="math inline">\(Y = \beta_0 + \beta_1 X_1 + \beta_2 X_1^2 + \beta_3 X_2 + \epsilon\)</span>.</li>
</ul>
<p>El último ejemplo refleja un modelo lineal en los parámetros, pero no lineal en las variables, por el término <span class="math inline">\(X_1^2\)</span>. Ejemplos de <strong>modelos no lineales</strong> en los parámetros son:</p>
<ul>
<li>
<span class="math inline">\(Y = \beta_0\cdot e^{\beta_1 X_1} + \epsilon\)</span>.</li>
<li>
<span class="math inline">\(Y = \beta_0 + X_1^{\beta_1} + \epsilon\)</span>.</li>
</ul>
</div>
<p>Por ejemplo, se sabe que el peso de una persona está relacionado con muchos factores, pero uno de los más determinantes es la altura.
Si se recogen datos de pesos y alturas de un conjunto de personas se puede ajustar el modelo y obtener una explicación <em>suficiente</em>, aunque parcial, del peso de una persona a partir de su altura.
Es claro que la inclusión de otras variables en el modelo puede ayudar a <em>explicar</em> mejor la variable respuesta. Se llega así al denominado <strong>modelo de regresión lineal múltiple</strong> que se puede expresar matemáticamente como:
<span class="math display" id="eq:lm">\[\begin{equation}
Y_i = \beta_0 + \beta_1 X_{1i} + \ldots + \beta_p X_{pi} + \epsilon_i, \quad \epsilon_i \sim N(0, \sigma^2), \hspace{0,2cm} i=1,\ldots,N.
\tag{15.1}
\end{equation}\]</span>
donde:</p>
<ul>
<li>
<span class="math inline">\(\beta_0\)</span> es el <strong>término independiente</strong> o <strong>constante</strong> del modelo,</li>
<li>
<span class="math inline">\(\beta_1, \ldots, \beta_p\)</span> son los <strong>coeficientes de regresión</strong> o <strong>parámetros</strong> del modelo, que se estimarán a partir de los datos observados <span class="math inline">\((x_{1i}, \ldots, x_{pi},y_i)\)</span> y reflejan la magnitud del efecto <em>lineal</em> (constante) sobre la variable explicada <em>Y</em> de incrementos unitarios en las variables explicativas <span class="math inline">\(X_j\)</span>.</li>
<li>y <span class="math inline">\(\epsilon_i\)</span> es el <strong>término de error</strong> del modelo, la parte de <em>Y</em> que no es capaz de explicar la parte determinista del mismo (<span class="math inline">\(\beta_0 + \beta_1 X_{1i} + \ldots + \beta_p X_{pi}\)</span>), que se supone sigue una distribución de probabilidad normal, con media 0 y varianza constante <span class="math inline">\(\sigma^2\)</span>;</li>
<li>además, se asume que las <strong>observaciones</strong> son <strong>independientes</strong>.</li>
</ul>
<p>Siguiendo con el ejemplo del peso, añadir alguna variable genética, el sexo u otras, ayudará a mejorar la “bondad” del modelo lineal.
Otro ejemplo consiste en pretender explicar el salario en un determinado sector económico en función de los años de experiencia, la formación, la situación familiar, el sexo, etc., de los trabajadores.
Nótese que entre las variables explicativas sí puede haber variables de distinto tipo: continuas, categóricas, etc.<a class="footnote-ref" tabindex="0" data-toggle="popover" data-content='<p>Conviene mencionar la estrecha relación entre regresión lineal múltiple y <strong>ANOVA con varios factores</strong> (véase la Sec. <a href="cap-lm.html#anova">15.4.6.1</a>).</p>'><sup>115</sup></a>
Ahora bien, la interpretación de los coeficientes dependerá del tipo de variable al que van asociados, como se verá en los casos prácticos (Sec. <a href="cap-lm.html#Casos">15.4</a>).</p>
<p>Un par de referencias para ampliar conocimientos sobre este tema utilizando <strong>R</strong> son <span class="citation">Faraway (<a href="referencias.html#ref-faraway2002practical">2002</a>)</span> y <span class="citation">James et al. (<a href="referencias.html#ref-james2013introduction">2013</a>)</span>.</p>
</div>
<div id="procedimiento-de-modelización" class="section level2" number="15.2">
<h2>
<span class="header-section-number">15.2</span> Procedimiento de modelización<a class="anchor" aria-label="anchor" href="#procedimiento-de-modelizaci%C3%B3n"><i class="fas fa-link"></i></a>
</h2>
<div id="Bondad" class="section level3" number="15.2.1">
<h3>
<span class="header-section-number">15.2.1</span> Estimación del modelo<a class="anchor" aria-label="anchor" href="#Bondad"><i class="fas fa-link"></i></a>
</h3>
<p>Los datos recogidos u observados sirven para <strong>especificar</strong> la relación predefinida de antemano, mediante la <strong>estimación</strong> de los coeficientes <span class="math inline">\(\beta_i\)</span> que mejor ajustan dicha relación, utilizando el método de <strong>mínimos cuadrados</strong>.
Además, los correspondientes contrastes permiten decidir si cada coeficiente es <strong>significativamente distinto de 0</strong>, esto es, si tiene un <em>efecto</em> significativo sobre la respuesta,<a class="footnote-ref" tabindex="0" data-toggle="popover" data-content="<p>Desde el punto de vista estadístico, la influencia/efecto sobre la respuesta no es fruto del azar.</p>"><sup>116</sup></a> en cuyo caso tiene sentido mantener en el modelo la variable a la que va asociado.
En la práctica, el coeficiente estimado es <em>significativo</em> si su <em>p</em>–valor (definido en la Sec. <a href="Fundainfer.html#contrhip">13.5</a>) asociado es suficientemente pequeño.</p>
<div class="infobox">
<p><strong>Nota</strong></p>
<p>Se acepta, mayoritariamente, como “suficientemente pequeño” un <em>p</em>–valor inferior a 0,05, lo que supone un nivel de confianza en las estimaciones del 95%.
Pero dicho valor es arbitrario y podrían considerarse otros valores de referencia. Por ejemplo, en las salidas de <strong>R</strong> aparecen otros tres niveles de referencia: 0,1, 0,01 y 0,001. En general, cuanto menor sea el <em>p</em>–valor más confianza se tendrá en las conclusiones.</p>
</div>
<p>Como se avanzó anteriormente, si algún coeficiente no es significativo, procede eliminar del modelo la variable explicativa asociada.
En tal caso, se vuelven a estimar los coeficientes de las variables que se mantienen hasta llegar a un modelo con todos los coeficientes significativos, iterando las veces necesarias.<a class="footnote-ref" tabindex="0" data-toggle="popover" data-content="<p>El proceso debe basarse en la relación entre las variables predefinidas de antemano (por ejemplo, en la formulación teórica del modelo). Por ello, a pesar de la no significatividad estadística de algún coeficiente, en ocasiones, la variable asociada se mantiene en el modelo.</p>"><sup>117</sup></a> Para facilitar esta labor, se han desarrollado métodos automáticos de selección de variables, basados en la comparación de la varianza residual (haciendo uso del test <span class="math inline">\(F\)</span>), mediante el estadístico AIC (criterio de información de Akaike), etc.<a class="footnote-ref" tabindex="0" data-toggle="popover" data-content='<p>Consúltese el Cap. 10 de <span class="citation">Faraway (<a href="referencias.html#ref-faraway2002practical">2002</a>)</span>.</p>'><sup>118</sup></a>
Junto con los contrastes, se pueden aportar los intervalos de confianza de los coeficientes, que, si son significativos, no contendrán el valor 0.</p>
<p>A la par del contraste de significación de cada coeficiente, se obtiene el <strong>contraste de significación global del modelo</strong>.
La hipótesis nula es que todos los coeficientes <span class="math inline">\(\beta_1, \ldots, \beta_p\)</span> son 0. Dicho de otro modo, que el conocimiento de las variables <span class="math inline">\(X_1, \ldots, X_p\)</span> no aporta información alguna para explicar los valores de <span class="math inline">\(Y\)</span>.</p>
<p>También se ha de obtener la <strong>bondad del ajuste</strong> del modelo, normalmente medida por el <strong>coeficiente de determinación lineal</strong>, <span class="math inline">\(R^2\)</span> (adimensional, que toma valores entre 0 y 1).
Para comparar entre diferentes modelos, se utiliza el <span class="math inline">\(R^2\)</span> <strong>ajustado/corregido</strong>, que tiene en cuenta la composición/complejidad del modelo (número de variables, etc.).
Cuanto mejor ajuste el modelo los datos observados, más próximo a 1 será el valor de <span class="math inline">\(R^2\)</span> (1 indica una relación lineal perfecta entre la variable respuesta y las predictoras). Por el contrario, un <span class="math inline">\(R^2\)</span> cercano a 0 indica que el modelo estimado ajusta mal los datos.</p>
<p>Es habitual valorar conjuntamente la significación global del modelo, su bondad de ajuste y la significación de cada uno de los coeficientes, considerándose apropiados aquellos modelos que son globalmente <em>significativos</em> y tienen la suficiente “bondad”, aunque tengan coeficientes no significativos.</p>
</div>
<div id="sec-valida-lm" class="section level3" number="15.2.2">
<h3>
<span class="header-section-number">15.2.2</span> Validación del modelo<a class="anchor" aria-label="anchor" href="#sec-valida-lm"><i class="fas fa-link"></i></a>
</h3>
<p>Aunque el modelo sea significativo se debe <strong>validar</strong>, es decir, se deben someter a contraste los supuestos estadísticos que subyacen al modelo. Para ello se utilizan los <strong>residuos</strong> del modelo, la parte de <em>Y</em> que no explica la regresión estimada o, en otros términos, la diferencia entre los valores observados y los estimados. Matemáticamente,
<span class="math display">\[e_i = y_i - \hat{y}_i = y_i - (\hat{\beta}_0 +\hat{\beta}_1 x_{1i} + \ldots + \hat{\beta}_p x_{pi}), \hspace{0,2cm} i = 1, \ldots, N.\]</span></p>
<p>Los supuestos a contrastar son:</p>
<ul>
<li>Los residuos han de tener <strong>varianza constante</strong> (por definición tienen <strong>media cero</strong>).</li>
<li>Los residuos han de seguir la <strong>distribución</strong> de probabilidad <strong>normal</strong>.</li>
<li>Las observaciones tienen que ser <strong>independientes</strong>.</li>
<li>La <strong>relación</strong> entre la variable respuesta y las explicativas se supone <strong>lineal</strong>.</li>
<li>Las variables explicativas son linealmente independientes: ninguna puede ser explicada como combinación lineal de las otras. En caso contrario, se tendría el conocido problema de la <strong>multicolinealidad</strong> y debería quitarse del modelo la variable explicada por el resto.</li>
</ul>
</div>
<div id="Sec:interp" class="section level3" number="15.2.3">
<h3>
<span class="header-section-number">15.2.3</span> Interpretación de los coeficientes<a class="anchor" aria-label="anchor" href="#Sec:interp"><i class="fas fa-link"></i></a>
</h3>
<p>Una vez validado el modelo, se procede a la interpretación de los coeficientes significativos.
Teniendo en cuenta la expresión del modelo de regresión lineal múltiple (Eq. <a href="cap-lm.html#eq:lm">(15.1)</a>), la regla general de interpretación de cada uno de los coeficientes de regresión estimado <span class="math inline">\(\hat{\beta}_j\)</span> es simple y directa: el cambio/impacto <em>medio</em> en el valor de la variable respuesta <span class="math inline">\(Y\)</span> ante un cambio unitario de una variable explicativa cuantitativa o ante un cambio de categoría (desde la que se toma como referencia) si la variable es categórica. Y ello <em>ceteris paribus</em>, esto es, manteniendo constante el valor de las demás variables explicativas.</p>
<p>Habrá que tener en cuenta la magnitud de cada variable porque la influencia real en la respuesta podría ser de poca magnitud (quizá por las unidades o escala utilizada), pero estadísticamente significativa.</p>
</div>
<div id="predicción" class="section level3" number="15.2.4">
<h3>
<span class="header-section-number">15.2.4</span> Predicción<a class="anchor" aria-label="anchor" href="#predicci%C3%B3n"><i class="fas fa-link"></i></a>
</h3>
<p>La utilidad del modelo estimado (especificado) queda plasmada en su utilización para <strong>predecir</strong> nuevos valores, <span class="math inline">\(\hat{y_i}\)</span>, a partir del conocimiento/asignación de nuevos valores de las variables explicativas, <span class="math inline">\(\{x_{1i}, \ldots, x_{pi}\}\)</span>. No obstante, dichas predicciones son valores <em>esperados</em> (<em>medios</em>), pudiéndose construir sus correspondientes intervalos de confianza.</p>
</div>
</div>
<div id="procedimiento-con-r-la-función-lm" class="section level2" number="15.3">
<h2>
<span class="header-section-number">15.3</span> Procedimiento con <strong>R</strong>: la función <code>lm()</code><a class="anchor" aria-label="anchor" href="#procedimiento-con-r-la-funci%C3%B3n-lm"><i class="fas fa-link"></i></a>
</h2>
<p><strong>R</strong> tiene implementada la función <code><a href="https://rdrr.io/r/stats/lm.html">lm()</a></code> para ajustar/estimar modelos de regresión lineal múltiple:</p>
<div class="sourceCode" id="cb198"><pre class="downlit sourceCode r">
<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/stats/lm.html">lm</a></span><span class="op">(</span><span class="va">formula</span>, data <span class="op">=</span> <span class="va">...</span>, <span class="va">...</span><span class="op">)</span></span></code></pre></div>
<p>El argumento mínimo necesario es <code>formula</code>, donde se predeterminará la relación entre las variables respuesta y explicativas de una forma bastante intuitiva:</p>
<ul>
<li>
<code>Y ~ X</code> es la fórmula a utilizar para definir un modelo simple donde <code>Y</code> denota la variable respuesta y <code>X</code> la variable explicativa: <span class="math inline">\(Y = \beta_0 + \beta_1 X + \epsilon\)</span>.</li>
<li>
<code>Y ~ X1 + X2</code> define un modelo lineal múltiple con 2 variables explicativas: <span class="math inline">\(Y = \beta_0 + \beta_1 X_1 + \beta_2 X_2 + \epsilon\)</span>.</li>
<li>
<code>Y ~ X1 + X2 + X3 - 1</code> elimina el término independiente, <span class="math inline">\(\beta_0\)</span>, del modelo lineal múltiple de 3 variables explicativas.</li>
<li>Y así sucesivamente.</li>
</ul>
<p>En el segundo argumento, <code>data</code>, se indica el conjunto de datos donde se encuentran las variables de trabajo. No es necesario especificarlo si están en el <code>Environment</code>.</p>
<p>Hay que hacer notar que <strong>R</strong> considera, por defecto, las variables explicativas como cuantitativas. Si se tienen variables categóricas codificadas con números hay que indicarle que las trate como categóricas, usando la función <code><a href="https://rdrr.io/r/base/factor.html">factor()</a></code>.<a class="footnote-ref" tabindex="0" data-toggle="popover" data-content="<p>Si no está ya definida como <code>factor()</code> en el conjunto de datos.</p>"><sup>119</sup></a> De no hacerlo, la función las consideraría numéricas, con el consecuente error de interpretación de los coeficientes asociados.</p>
<p>A partir de los datos disponibles de <span class="math inline">\(Y, X_1, ..., X_p\)</span>, la función <code><a href="https://rdrr.io/r/stats/lm.html">lm()</a></code> estima los coeficientes <span class="math inline">\(\hat{\beta}_j\)</span> asociados a cada variable <span class="math inline">\(X_i\)</span>, mediante el <strong>método de mínimos cuadrados</strong>, y calcula sus errores estándar, con los que obtiene sus estadísticos de contraste (de la <span class="math inline">\(t-\)</span>Student)<a class="footnote-ref" tabindex="0" data-toggle="popover" data-content="<p>Con los errores estándar también se pueden obtener los intervalos de confianza de los coeficientes.</p>"><sup>120</sup></a> y su significación. En el objeto <code>lm</code> que se genera también se almacenan los valores ajustados, residuos, etc., que se pueden mostrar a través de funciones genéricas disponibles en <strong>R</strong>. Algunas de ellas son:</p>
<ul>
<li>
<code><a href="https://rdrr.io/r/base/print.html">print()</a></code>: muestra un breve resumen.</li>
<li>
<code><a href="https://rdrr.io/r/base/summary.html">summary()</a></code>: proporciona un resumen completo.</li>
<li>
<code><a href="https://rdrr.io/r/stats/coef.html">coef()</a></code>: proporciona las estimaciones de los coeficientes del modelo.</li>
<li>
<code><a href="https://rdrr.io/r/stats/confint.html">confint()</a></code>: construye intervalos de confianza para los coeficientes.</li>
<li>
<code><a href="https://rdrr.io/r/stats/fitted.values.html">fitted.values()</a></code>: muestra los valores ajustados del modelo (para cada observación del <code>data.frame</code>).</li>
<li>
<code><a href="https://rdrr.io/r/stats/residuals.html">residuals()</a></code>: calcula los residuos del modelo (también para cada observación del <code>data.frame</code>).</li>
</ul>
</div>
<div id="Casos" class="section level2" number="15.4">
<h2>
<span class="header-section-number">15.4</span> Casos prácticos<a class="anchor" aria-label="anchor" href="#Casos"><i class="fas fa-link"></i></a>
</h2>
<p>En esta sección se utilizan los datos <code>airquality</code>,<a class="footnote-ref" tabindex="0" data-toggle="popover" data-content="<p>Conjunto de datos incluido con la instalación <code>base</code> de <strong>R</strong>. Más información ejecutando <code>?airquality</code>.</p>"><sup>121</sup></a>
que consisten en 154 medidas (de 6 variables) de calidad del aire en Nueva
York. Las variables consideradas aquí son las cuatro siguientes:</p>
<ul>
<li>
<code>Ozone</code>: Concentración media de ozono en la atmósfera (en ppb, partes por billón).</li>
<li>
<code>Solar.R</code>: Radiación solar (en Ly, Langleys).</li>
<li>
<code>Wind</code>: Velocidad media del viento (en mph, millas por hora).</li>
<li>
<code>Temp</code>: Temperatura máxima diaria (en grados Fahrenheit).</li>
</ul>
<p>El objetivo es establecer la relación entre la concentración de ozono en la atmósfera, variable respuesta, y las variables meteorológicas <code>Solar.R</code>, <code>Wind</code> y <code>Temp</code>, variables explicativas.
Los valores disponibles de las cuatro variables permiten considerarlas como variables continuas.</p>
<div class="figure" style="text-align: center">
<span style="display:block;" id="fig:lm-airQlmsimples"></span>
<img src="150016_lm_files/figure-html/lm-airQlmsimples-1.png" alt="Gráficos de dispersión de las variables explicativas frente a la variable respuesta." width="60%"><p class="caption">
Figura 15.1: Gráficos de dispersión de las variables explicativas frente a la variable respuesta.
</p>
</div>
<p>Antes de proceder con el ajuste múltiple se pueden realizar los ajustes simples, individuales.
La Fig. <a href="cap-lm.html#fig:lm-airQlmsimples">15.1</a> representa 3 regresiones lineales simples de la variable respuesta <code>Ozone</code> sobre cada una de las 3 variables explicativas.
Cada gráfico muestra un <strong>diagrama de dispersión</strong> de solo dos variables, la explicativa en el eje <span class="math inline">\(X\)</span> y la respuesta en el eje <span class="math inline">\(Y\)</span>, obteniéndose la comúnmente denominada <strong>nube de puntos</strong>.
En tales diagramas se puede ver si entre las variables hay relación lineal, o no, y en caso de que la haya, si es positiva/directa (a mayores valores de <span class="math inline">\(X\)</span>, mayores valores de <span class="math inline">\(Y\)</span>) o negativa/inversa.
En cada gráfico se ha añadido la correspondiente recta de regresión lineal (con su correspondiente intervalo de confianza), que podría no ser la más apropiada, como parece que ocurre en las regresiones de <code>Ozone</code> sobre <code>Wind</code> y sobre <code>Temp</code>. En ambos casos, la relación parece más bien no lineal, aunque una recta podría ser suficiente (en función del interés del estudio) para explicar relativamente bien el comportamiento del nivel de concentración de ozono. El código para el obtener el primer gráfico es:</p>
<div class="sourceCode" id="cb199"><pre class="downlit sourceCode r">
<code class="sourceCode R"><span><span class="kw"><a href="https://rdrr.io/r/base/library.html">library</a></span><span class="op">(</span><span class="st"><a href="https://ggplot2.tidyverse.org">"ggplot2"</a></span><span class="op">)</span></span>
<span><span class="fu"><a href="https://ggplot2.tidyverse.org/reference/ggplot.html">ggplot</a></span><span class="op">(</span><span class="va">airquality</span>, <span class="fu"><a href="https://ggplot2.tidyverse.org/reference/aes.html">aes</a></span><span class="op">(</span><span class="va">Solar.R</span>, <span class="va">Ozone</span><span class="op">)</span><span class="op">)</span> <span class="op">+</span></span>
<span> <span class="fu"><a href="https://ggplot2.tidyverse.org/reference/geom_point.html">geom_point</a></span><span class="op">(</span><span class="op">)</span> <span class="op">+</span></span>
<span> <span class="fu"><a href="https://ggplot2.tidyverse.org/reference/theme.html">theme</a></span><span class="op">(</span>aspect.ratio <span class="op">=</span> <span class="fl">1</span><span class="op">)</span> <span class="op">+</span></span>
<span> <span class="fu"><a href="https://ggplot2.tidyverse.org/reference/geom_smooth.html">geom_smooth</a></span><span class="op">(</span>method <span class="op">=</span> <span class="st">"lm"</span><span class="op">)</span></span></code></pre></div>
<p>En regresión lineal múltiple no es posible visualizar en un solo gráfico la relación entre la variable respuesta y varias variables explicativas, salvo si son solo 2, en cuyo caso se tendría un gráfico en 3 dimensiones, generalmente difícil de visualizar.</p>
<div id="estimación-de-los-coeficientes" class="section level3" number="15.4.1">
<h3>
<span class="header-section-number">15.4.1</span> Estimación de los coeficientes<a class="anchor" aria-label="anchor" href="#estimaci%C3%B3n-de-los-coeficientes"><i class="fas fa-link"></i></a>
</h3>
<p>Se comienza ajustando el siguiente modelo lineal múltiple:<a class="footnote-ref" tabindex="0" data-toggle="popover" data-content="<p>Más adelante se introducirá una variable categórica para enriquecer el análisis.</p>"><sup>122</sup></a>
<span class="math display">\[Ozone = \beta_0 + \beta_1 Solar.R + \beta_2 Wind + \beta_3 Temp + \epsilon\]</span></p>
<p>La definición en <strong>R</strong> del modelo se puede ver como primer argumento de la función <code><a href="https://rdrr.io/r/stats/lm.html">lm()</a></code>. El objeto que genera la función <code><a href="https://rdrr.io/r/stats/lm.html">lm()</a></code> se guarda bajo el nombre de <code>airq_lm</code> y, a continuación, se muestra su resumen con <code><a href="https://rdrr.io/r/base/summary.html">summary()</a></code>:</p>
<div class="sourceCode" id="cb200"><pre class="downlit sourceCode r">
<code class="sourceCode R"><span><span class="va">airq_lm</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/stats/lm.html">lm</a></span><span class="op">(</span><span class="va">Ozone</span> <span class="op">~</span> <span class="va">Solar.R</span> <span class="op">+</span> <span class="va">Wind</span> <span class="op">+</span> <span class="va">Temp</span>, data <span class="op">=</span> <span class="va">airquality</span><span class="op">)</span></span>
<span><span class="fu"><a href="https://rdrr.io/r/base/summary.html">summary</a></span><span class="op">(</span><span class="va">airq_lm</span><span class="op">)</span></span>
<span><span class="co">#> </span></span>
<span><span class="co">#> Call:</span></span>
<span><span class="co">#> lm(formula = Ozone ~ Solar.R + Wind + Temp, data = airquality)</span></span>
<span><span class="co">#> </span></span>
<span><span class="co">#> Residuals:</span></span>
<span><span class="co">#> Min 1Q Median 3Q Max </span></span>
<span><span class="co">#> -40.485 -14.219 -3.551 10.097 95.619 </span></span>
<span><span class="co">#> </span></span>
<span><span class="co">#> Coefficients:</span></span>
<span><span class="co">#> Estimate Std. Error t value Pr(>|t|) </span></span>
<span><span class="co">#> (Intercept) -64.34208 23.05472 -2.791 0.00623 ** </span></span>
<span><span class="co">#> Solar.R 0.05982 0.02319 2.580 0.01124 * </span></span>
<span><span class="co">#> Wind -3.33359 0.65441 -5.094 1.52e-06 ***</span></span>
<span><span class="co">#> Temp 1.65209 0.25353 6.516 2.42e-09 ***</span></span>
<span><span class="co">#> ---</span></span>
<span><span class="co">#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1</span></span>
<span><span class="co">#> </span></span>
<span><span class="co">#> Residual standard error: 21.18 on 107 degrees of freedom</span></span>
<span><span class="co">#> (42 observations deleted due to missingness)</span></span>
<span><span class="co">#> Multiple R-squared: 0.6059, Adjusted R-squared: 0.5948 </span></span>
<span><span class="co">#> F-statistic: 54.83 on 3 and 107 DF, p-value: < 2.2e-16</span></span></code></pre></div>
<p>La salida del <code><a href="https://rdrr.io/r/base/summary.html">summary()</a></code> proporciona las estimaciones de los coeficientes del modelo (columna <code>Estimate</code>).
El término independiente aparece como <code>(Intercept)</code> y toma el valor <span class="math inline">\(\beta_0\)</span> = -64,3421, el coeficiente asociado a <code>Solar.R</code> es <span class="math inline">\(\beta_1\)</span> = 0,05982, etc.
También aparecen sus <em>p</em>–valores asociados (columna <code>Pr(>|t|)</code>), pudiéndose comprobar que los 4 coeficientes son significativos al 5%.
Según la leyenda <code>Signif. codes</code>, a mayor número de asteriscos, mayor significación del coeficiente (menor <em>p</em>–valor). Así, los coeficientes de <code>Temp</code> y <code>Wind</code> son más significativos que el de <code>Solar.R</code>.</p>
<p>También se pueden apreciar (penúltima línea) dos medidas de la bondad del ajuste del modelo considerado: el R cuadrado múltiple y el R cuadrado múltiple ajustado. En el ejemplo, el <span class="math inline">\(R^2\)</span>(ajustado) es 0,5948, que se podría considerar “suficiente” o no en función del objetivo del estudio, aunque, en este caso, está claro que el modelo no explica suficientemente bien la concentración de ozono.</p>
<p>En la última línea de la salida aparece información sobre el contraste global del modelo: valor del estadístico <span class="math inline">\(F\)</span>, grados de libertad y <em>p</em>–valor asociado. Como se aprecia, el modelo es globalmente significativo (<em>p</em>–valor del orden de <span class="math inline">\(10^{-16}\)</span>).</p>
</div>
<div id="validación" class="section level3" number="15.4.2">
<h3>
<span class="header-section-number">15.4.2</span> Validación<a class="anchor" aria-label="anchor" href="#validaci%C3%B3n"><i class="fas fa-link"></i></a>
</h3>
<p>Lo anterior carece de <strong>validez</strong> si no se satisfacen las hipótesis del modelo mencionadas en la Sec. <a href="cap-lm.html#sec-valida-lm">15.2.2</a>, principalmente las relativas a varianza constante (homocedasticidad) y normalidad. Para ello se realiza un análisis de residuos. La función <code><a href="https://ggplot2.tidyverse.org/reference/autoplot.html">autoplot()</a></code> del paquete <code>ggfortify</code> proporciona los gráficos que se muestran en la Fig. <a href="cap-lm.html#fig:lm-residuosOzone">15.2</a>.</p>
<p></p>
<div class="sourceCode" id="cb201"><pre class="downlit sourceCode r">
<code class="sourceCode R"><span><span class="kw"><a href="https://rdrr.io/r/base/library.html">library</a></span><span class="op">(</span><span class="st"><a href="https://github.com/sinhrks/ggfortify">"ggfortify"</a></span><span class="op">)</span></span>
<span><span class="fu"><a href="https://ggplot2.tidyverse.org/reference/autoplot.html">autoplot</a></span><span class="op">(</span><span class="va">airq_lm</span><span class="op">)</span> <span class="op">+</span></span>
<span> <span class="fu"><a href="https://ggplot2.tidyverse.org/reference/ggtheme.html">theme_minimal</a></span><span class="op">(</span><span class="op">)</span></span></code></pre></div>
<div class="figure" style="text-align: center">
<span style="display:block;" id="fig:lm-residuosOzone"></span>
<img src="150016_lm_files/figure-html/lm-residuosOzone-1.png" alt="Gráficos de residuos." width="60%"><p class="caption">
Figura 15.2: Gráficos de residuos.
</p>
</div>
<p>Por un lado, el gráfico de residuos frente a valores ajustados (<em>fitted</em>) muestra cierta heterocedasticidad (varianza cambiante con el valor en el eje X) y no linealidad (ya apreciable de forma individual en la Fig. <a href="cap-lm.html#fig:lm-airQlmsimples">15.1</a>).
Por su parte, el gráfico normal Q-Q, que enfrenta los residuos estandarizados con los cuantiles de la distribución normal, indica que los residuos presentan desviaciones de la normalidad en ambas colas.</p>
<p>Para completar el análisis gráfico se puede acudir a contrastes de hipótesis vistos en la Sec. <a href="Fundainfer.html#contrhip">13.5</a>. El más habitual para contrastar normalidad es el de <strong>Shapiro-Wilk</strong>, que se implementa en <strong>R</strong> con la función <code><a href="https://rdrr.io/r/stats/shapiro.test.html">shapiro.test()</a></code>.<a class="footnote-ref" tabindex="0" data-toggle="popover" data-content="<p>Se pueden encontrar otros contrastes de normalidad en el paquete <code>nortest</code>.</p>"><sup>123</sup></a> Para contrastar la homocedasticidad se puede utilizar alguno de los tres tests implementados para tal fin en el paquete <code>lmtest()</code>: el de Breusch-Pagan <code>bptest()</code>, el de Goldfeld-Quandt <code>gqtest()</code> o el de Harrison-McCabe <code>hmctest</code>.
</p>
<div class="sourceCode" id="cb202"><pre class="downlit sourceCode r">
<code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/stats/shapiro.test.html">shapiro.test</a></span><span class="op">(</span><span class="va">airq_lm</span><span class="op">$</span><span class="va">residuals</span><span class="op">)</span></span>
<span><span class="co">#> </span></span>
<span><span class="co">#> Shapiro-Wilk normality test</span></span>
<span><span class="co">#> </span></span>
<span><span class="co">#> data: airq_lm$residuals</span></span>
<span><span class="co">#> W = 0.91709, p-value = 3.618e-06</span></span>
<span><span class="fu">lmtest</span><span class="fu">::</span><span class="fu"><a href="https://rdrr.io/pkg/lmtest/man/bptest.html">bptest</a></span><span class="op">(</span><span class="va">airq_lm</span><span class="op">)</span></span>
<span><span class="co">#> </span></span>
<span><span class="co">#> studentized Breusch-Pagan test</span></span>
<span><span class="co">#> </span></span>
<span><span class="co">#> data: airq_lm</span></span>
<span><span class="co">#> BP = 5.0554, df = 3, p-value = 0.1678</span></span></code></pre></div>
<div class="figure" style="text-align: center">
<span style="display:block;" id="fig:lm-histogramas"></span>
<img src="150016_lm_files/figure-html/lm-histogramas-1.png" alt="Histogramas de las variables $Ozone$ y $log(Ozone)$." width="40%"><p class="caption">
Figura 15.3: Histogramas de las variables <span class="math inline">\(Ozone\)</span> y <span class="math inline">\(log(Ozone)\)</span>.
</p>
</div>
<p>El contraste de homocedasticidad lleva a no rechazar tal supuesto (<em>p</em>-valor > 0,05), pero el contraste de Shapiro-Wilk confirma la falta de normalidad (<em>p</em>–valor < 0,05).
A este respecto, en la Fig. <a href="cap-lm.html#fig:lm-histogramas">15.3</a> se muestra el histograma de la variable <code>Ozone</code>, apreciándose que los datos recogidos presentan asimetría incompatible con la normalidad, asumida por defecto para la variable respuesta.
Una posible solución sería el uso de una transformación logarítmica, que produce cierta simetría en la distribución de la variable, acercándola, por tanto, a la normalidad.</p>
<p>Para el análisis de colinealidad se pueden representar gráficos 2 a 2 de las variables explicativas, para comprobar si están o no correlacionadas (Fig. <a href="cap-lm.html#fig:lm-airQpairs">15.4</a>).</p>
<div class="sourceCode" id="cb203"><pre class="downlit sourceCode r">
<code class="sourceCode R"><span><span class="kw"><a href="https://rdrr.io/r/base/library.html">library</a></span><span class="op">(</span><span class="st"><a href="https://ggobi.github.io/ggally/">"GGally"</a></span><span class="op">)</span></span>
<span><span class="fu"><a href="https://ggobi.github.io/ggally/reference/ggpairs.html">ggpairs</a></span><span class="op">(</span><span class="va">airquality</span><span class="op">[</span>, <span class="fl">2</span><span class="op">:</span><span class="fl">4</span><span class="op">]</span><span class="op">)</span></span></code></pre></div>
<div class="figure" style="text-align: center">
<span style="display:block;" id="fig:lm-airQpairs"></span>
<img src="150016_lm_files/figure-html/lm-airQpairs-1.png" alt="Gráfico de dispersión por pares de las variables explicativas." width="40%"><p class="caption">
Figura 15.4: Gráfico de dispersión por pares de las variables explicativas.
</p>
</div>
<p>Pero este es un análisis parcial, puesto que una de las variables explicativas podría venir explicada por el resto o varias de ellas. Por si este fuera el caso, conviene calcular también los <strong>factores de inflación de la varianza</strong> (VIF), que indican el incremento de la varianza estimada del coeficiente de regresión de una determinada variable explicativa como consecuencia de la colinealidad con las demás <span class="citation">(para más detalle, véase el Cap. 3 de <a href="referencias.html#ref-james2013introduction">James et al., 2013</a>)</span>.</p>
<p>El mínimo valor de VIF es 1, no existiendo límite superior. Una regla general para interpretar los VIF es la siguiente: si el VIF de una variable explicativa <span class="math inline">\(X_j\)</span> es 1, no hay correlación entre ella y cualquier otra variable explicativa del modelo. Si está entre 1 y 5, la correlación es moderada y no provoca graves problemas. Si es mayor que 5, la correlación es fuerte y, probablemente, las estimaciones de los coeficientes y los <em>p</em>–valores resultantes de la estimación del modelo no sean confiables.</p>
<p>Los VIF se pueden obtener mediante la función <code>vif()</code> del paquete <code>car</code>:</p>
<div class="sourceCode" id="cb204"><pre class="downlit sourceCode r">
<code class="sourceCode R"><span><span class="fu">car</span><span class="fu">::</span><span class="fu"><a href="https://rdrr.io/pkg/car/man/vif.html">vif</a></span><span class="op">(</span><span class="va">airq_lm</span><span class="op">)</span></span>
<span><span class="co">#> Solar.R Wind Temp </span></span>
<span><span class="co">#> 1.095253 1.329070 1.431367</span></span></code></pre></div>
<p>En la Fig. <a href="cap-lm.html#fig:lm-airQpairs">15.4</a> se aprecia que los gráficos de dispersión muestran ausencia de correlación entre <code>Solar.R</code> y <code>Wind</code>; sin embargo, la correlación entre <code>Wind</code> y <code>Temp</code> no parece despreciable. No obstante, todos los VIF son prácticamente unitarios, por lo que se puede concluir que el modelo no presenta multicolinealidad.</p>
</div>
<div id="interpretación-de-los-coeficientes" class="section level3" number="15.4.3">
<h3>
<span class="header-section-number">15.4.3</span> Interpretación de los coeficientes<a class="anchor" aria-label="anchor" href="#interpretaci%C3%B3n-de-los-coeficientes"><i class="fas fa-link"></i></a>
</h3>
<p>De acuerdo con lo dicho en la Sec. <a href="cap-lm.html#Sec:interp">15.2.3</a> se tiene que:</p>
<ul>
<li>Un incremento en <code>Temp</code> de un grado Fahrenheit, manteniéndose constantes los valores de <code>Wind</code> y <code>Solar.R</code>,<a class="footnote-ref" tabindex="0" data-toggle="popover" data-content="<p>Si estos cambian, tendrán su correspondiente impacto en el nivel de concentración de ozono.</p>"><sup>124</sup></a> provoca un aumento (por ser positivo el coeficiente) promedio en el nivel de concentración de ozono en el aire de 1,6521 ppb.</li>
<li>El coeficiente de <code>Wind</code> es negativo, por lo que un aumento en la variable <code>Wind</code>, <em>ceteris paribus</em>, reduce la concentración de ozono. En concreto, dicha reducción es de 3,3336 ppb por cada milla por hora que se incremente la variable <code>Wind</code>.</li>
<li>La influencia de <code>Solar.R</code> en el nivel de concentración de ozono en la atmósfera es positiva, como la de <code>Temp</code>, pero de mucha menor magnitud (por las unidades de una y otra). Concretamente, por cada langley (Ly) que se incremente <code>Solar.R</code> el nivel de concentración de ozono se eleva, <em>ceteris paribus</em>, en 0,0598 ppb.</li>
</ul>
<p>Por tanto, el impacto promedio de un incremento unitario en la magnitud de las variables explicativas depende de la variable y de la magnitud de su coeficiente.</p>
<p>Conviene mencionar que las interpretaciones realizadas no deben extrapolarse a valores fuera del rango que toman las variables explicativas porque en esas regiones podrían darse otros efectos distintos del lineal que presupone el modelo estimado.</p>
</div>
<div id="predicción-1" class="section level3" number="15.4.4">
<h3>
<span class="header-section-number">15.4.4</span> Predicción<a class="anchor" aria-label="anchor" href="#predicci%C3%B3n-1"><i class="fas fa-link"></i></a>
</h3>
<p>Aunque el modelo estimado no es adecuado, por la falta de normalidad, linealidad, etc., detectadas, a continuación se ilustra cómo obtener predicciones con la función <code><a href="https://rdrr.io/r/stats/predict.html">predict()</a></code>.
Para ello, se asignan los valores de interés a las variables explicativas del modelo, con formato <code>data.frame</code>, obteniéndose predicciones del valor medio de la variable respuesta, junto con sus intervalos de confianza o predicción, según se proporcione al argumento <code>interval</code> los valores <code>confidence</code> o <code>prediction</code>, respectivamente.
En el siguiente ejemplo se obtienen predicciones de niveles de concentración de ozono para un par de casos elegidos arbitrariamente (el primero corresponde a <code>Solar.R</code>=50, <code>Wind</code>=5 y <code>Temp</code>=62):</p>
<div class="sourceCode" id="cb205"><pre class="downlit sourceCode r">
<code class="sourceCode R"><span><span class="va">nueva_meteo</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/data.frame.html">data.frame</a></span><span class="op">(</span></span>
<span> Solar.R <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html">c</a></span><span class="op">(</span><span class="fl">50</span>, <span class="fl">300</span><span class="op">)</span>,</span>
<span> Wind <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html">c</a></span><span class="op">(</span><span class="fl">5</span>, <span class="fl">17</span><span class="op">)</span>,</span>
<span> Temp <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html">c</a></span><span class="op">(</span><span class="fl">62</span>, <span class="fl">90</span><span class="op">)</span></span>
<span><span class="op">)</span></span>
<span><span class="fu"><a href="https://rdrr.io/r/stats/predict.html">predict</a></span><span class="op">(</span><span class="va">airq_lm</span>, newdata <span class="op">=</span> <span class="va">nueva_meteo</span>, interval <span class="op">=</span> <span class="st">"confidence"</span><span class="op">)</span></span>
<span><span class="co">#> fit lwr upr</span></span>
<span><span class="co">#> 1 24.41075 11.01412 37.80739</span></span>
<span><span class="co">#> 2 45.62141 31.46838 59.77444</span></span>
<span><span class="fu"><a href="https://rdrr.io/r/stats/predict.html">predict</a></span><span class="op">(</span><span class="va">airq_lm</span>, newdata <span class="op">=</span> <span class="va">nueva_meteo</span>, interval <span class="op">=</span> <span class="st">"prediction"</span><span class="op">)</span></span>
<span><span class="co">#> fit lwr upr</span></span>
<span><span class="co">#> 1 24.41075 -19.662967 68.48448</span></span>
<span><span class="co">#> 2 45.62141 1.311914 89.93090</span></span></code></pre></div>
<p>Como se puede observar, en ambos casos la predicción puntual (<code>fit</code>) es la misma y se obtiene sustituyendo en el modelo estimado los valores de las variables explicativas para los cuales se desea realizar la predicción.
Sin embargo, los intervalos de confianza son distintos. Con <code>confidence</code> se obtienen intervalos de confianza para el valor medio de las predicciones correspondientes a los días en los que los valores de las variables predictoras sean unos dados. Con <code>prediction</code>, el intervalo de confianza es para la predicción de un valor individual, es decir, para la predicción de un día concreto con esas condiciones meteorológicas. Los intervalos de predicción consideran tanto la incertidumbre de la estimación de un valor (debida a la estimación de los parámetros desconocidos) como la variación aleatoria de los valores individuales muestreados (las observaciones muestrales son variables aleatorias). Esto significa que el intervalo de predicción es siempre más ancho que el intervalo de confianza.</p>
</div>
<div id="nuevo-ajuste-con-logozone" class="section level3" number="15.4.5">
<h3>
<span class="header-section-number">15.4.5</span> Nuevo ajuste con <code>log(Ozone)</code><a class="anchor" aria-label="anchor" href="#nuevo-ajuste-con-logozone"><i class="fas fa-link"></i></a>
</h3>
<p>Ante los problemas de falta de normalidad de la variable <code>Ozone</code>, se ajusta un nuevo modelo con la variable <span class="math inline">\(\log(Ozone)\)</span> como respuesta (véase Sec. <a href="chap-feature.html#trans-vble-obj">9.3.1</a>).
Se aprovecha para introducir una variable <em>dicotómica</em> para explicar su interpretación.
Se define <code>Temp_f</code> dicotomizando <code>Temp</code> (tomando solo dos valores): 1, si la temperatura está por encima de su mediana; y 0, si está por debajo.</p>
<div class="sourceCode" id="cb206"><pre class="downlit sourceCode r">
<code class="sourceCode R"><span><span class="va">mediana</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/stats/median.html">median</a></span><span class="op">(</span><span class="va">airquality</span><span class="op">$</span><span class="va">Temp</span><span class="op">)</span></span>
<span><span class="va">Temp_f</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/factor.html">factor</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/numeric.html">as.numeric</a></span><span class="op">(</span><span class="va">airquality</span><span class="op">$</span><span class="va">Temp</span> <span class="op">></span> <span class="va">mediana</span><span class="op">)</span><span class="op">)</span></span>
<span><span class="va">lairq_lm</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/stats/lm.html">lm</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/Log.html">log</a></span><span class="op">(</span><span class="va">Ozone</span><span class="op">)</span> <span class="op">~</span> <span class="va">Wind</span> <span class="op">+</span> <span class="va">Solar.R</span> <span class="op">+</span> <span class="va">Temp_f</span>, data <span class="op">=</span> <span class="va">airquality</span><span class="op">)</span></span>
<span><span class="fu"><a href="https://rdrr.io/r/base/summary.html">summary</a></span><span class="op">(</span><span class="va">lairq_lm</span><span class="op">)</span></span>
<span><span class="co">#> </span></span>
<span><span class="co">#> Call:</span></span>
<span><span class="co">#> lm(formula = log(Ozone) ~ Wind + Solar.R + Temp_f, data = airquality)</span></span>
<span><span class="co">#> </span></span>
<span><span class="co">#> Residuals:</span></span>
<span><span class="co">#> Min 1Q Median 3Q Max </span></span>
<span><span class="co">#> -2.55347 -0.29689 0.02409 0.37171 1.18373 </span></span>
<span><span class="co">#> </span></span>
<span><span class="co">#> Coefficients:</span></span>
<span><span class="co">#> Estimate Std. Error t value Pr(>|t|) </span></span>
<span><span class="co">#> (Intercept) 3.3879872 0.2232099 15.178 < 2e-16 ***</span></span>
<span><span class="co">#> Wind -0.0885666 0.0161038 -5.500 2.61e-07 ***</span></span>
<span><span class="co">#> Solar.R 0.0030723 0.0005973 5.143 1.23e-06 ***</span></span>
<span><span class="co">#> Temp_f1 0.6999123 0.1158384 6.042 2.25e-08 ***</span></span>
<span><span class="co">#> ---</span></span>
<span><span class="co">#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1</span></span>
<span><span class="co">#> </span></span>
<span><span class="co">#> Residual standard error: 0.5572 on 107 degrees of freedom</span></span>
<span><span class="co">#> (42 observations deleted due to missingness)</span></span>
<span><span class="co">#> Multiple R-squared: 0.5972, Adjusted R-squared: 0.5859 </span></span>
<span><span class="co">#> F-statistic: 52.89 on 3 and 107 DF, p-value: < 2.2e-16</span></span></code></pre></div>
<p>Al redefinirse la variable respuesta y una variable explicativa del modelo, las estimaciones de los coeficientes cambian respecto al modelo anterior.
Todos los coeficientes siguen siendo significativos al 5% (incluso al 0,1%), el modelo global también es significativo y el <span class="math inline">\(R^2\)</span>(ajustado) es similar al del modelo anterior.
En el Cap. <a href="cap-gam.html#cap-gam">17</a>, en el que se abordan los modelos aditivos generalizados, se verá cómo se puede modelar la relación entre <code>Ozone</code> y el resto de variables de una forma más satisfactoria.
No obstante, este segundo modelo puede ser útil para ilustrar la relación entre las variables, sin olvidar que se ha de comprobar su validez.
Para ello, se haría de nuevo el análisis de residuos (que se deja como tarea al lector, al obtenerse de manera idéntica al anterior).
En los gráficos de residuos se observará mayor homocedasticidad, linealidad y normalidad que en el caso anterior.</p>
</div>
<div id="coeficientes-de-variables-categóricas" class="section level3" number="15.4.6">
<h3>
<span class="header-section-number">15.4.6</span> Coeficientes de variables categóricas<a class="anchor" aria-label="anchor" href="#coeficientes-de-variables-categ%C3%B3ricas"><i class="fas fa-link"></i></a>
</h3>
<p>A continuación, se aborda la interpretación de coeficientes asociados a variables categóricas. <code>Temp_f</code> toma los valores 0 y 1, según la temperatura sea menor o mayor que la mediana, respectivamente.
En la salida anterior de <strong>R</strong> solo aparece <code>Temp_f1</code>.
El 1 final indica que el coeficiente está asociado a la categoría 1 de <code>Temp_f</code>.
Para los cálculos con estas variables categóricas, <strong>R</strong> toma una categoría como referencia<a class="footnote-ref" tabindex="0" data-toggle="popover" data-content="<p>La primera “alfanuméricamente”, si no se especifica expresamente el orden con el argumento <code>levels</code> en la función <code>factor()</code>.</p>"><sup>125</sup></a> y proporciona un coeficiente para cada una de las restantes categorías, que representa el cambio <em>medio</em> al pasar desde la categoría de referencia a cada una de ellas (técnicamente utiliza variables <em>dummy</em>) o diferencia entre la media de la variable respuesta en las observaciones correspondientes a una categoría específica y a la categoría que sirve de referencia.
La categoría de referencia está considerada en los cálculos del término independiente del modelo.
Por lo tanto, el coeficiente de <code>Temp_f1</code> indica que, <em>ceteris paribus</em>,
la concentración media de ozono de los días con temperaturas por encima de la mediana (categoría 1) es 0,6999 ppb mayor que la de los días con temperaturas inferiores a ella (categoría 0).</p>
<div id="anova" class="section level4" number="15.4.6.1">
<h4>
<span class="header-section-number">15.4.6.1</span> Comparativa: regresión frente a ANOVA<a class="anchor" aria-label="anchor" href="#anova"><i class="fas fa-link"></i></a>
</h4>
<p>En la Fig. <a href="cap-lm.html#fig:lm-airQlmsimples">15.1</a> se pueden apreciar regresiones simples <em>puras</em> (variable continua sobre variable continua).
Si se regresa la variable <code>Ozone</code> sobre la variable categórica <code>Temp_f</code>, no se obtendrá un gráfico similar.<a class="footnote-ref" tabindex="0" data-toggle="popover" data-content="<p><code>ggplot(airquality, aes(Temp_f, Ozone)) + geom_point()</code>.</p>"><sup>126</sup></a>
No obstante, el gráfico ayudará a comparar visualmente las medias de la variable respuesta en cada categoría.
En realidad, al incluir un <strong>factor</strong> en el modelo se está realizando un contraste <em>t</em>–Student para averiguar si existen diferencias entre la media de la variable respuesta para cada categoría con respecto a la categoría de referencia.
Técnicamente, tales contrastes dos a dos son equivalentes al contraste ANOVA (análisis de la varianza), aunque este permite comparar si las medias de la variable respuesta en todas las categorías son iguales o no.
El <strong>ANOVA</strong> es un caso particular de regresión lineal en los parámetros, concretamente, cuando todas las variables explicativas son categóricas.</p>
</div>
</div>
</div>
<div id="comentarios-finales" class="section level2" number="15.5">
<h2>
<span class="header-section-number">15.5</span> Comentarios finales<a class="anchor" aria-label="anchor" href="#comentarios-finales"><i class="fas fa-link"></i></a>
</h2>
<p>En capítulos posteriores se abordarán modelizaciones más complejas, como, por ejemplo, los modelos lineales generalizados, GLM (Cap. <a href="cap-glm.html#cap-glm">16</a>), los modelos aditivos generalizados, GAM (Cap. <a href="cap-gam.html#cap-gam">17</a>) y los modelos mixtos (Cap. <a href="cap-mxm.html#cap-mxm">18</a>). También se verán modelos <em>sparse</em> y métodos penalizados de regresión (Cap. <a href="cap-sparse.html#cap-sparse">19</a>), como la regresión <em>ridge</em>, que permite manejar los problemas que genera la presencia de multicolinealidad.</p>
<p>Queda fuera de este capítulo la “consideración” de variables de confusión. Ejemplos típicos de tal tipo de variables son la edad y el sexo. De ser incluidas en el modelo, la magnitud e interpretación de las estimaciones de los coeficientes, las predicciones, etc., pueden ser erróneas, pues el efecto de las variables de confusión puede mezclarse con el de otras variables explicativas incluidas en el modelo (por ejemplo, la influencia de la edad/sexo en enfermedades). Si se incluyen, se podrá obtener el efecto de cualquier variable <span class="math inline">\(X_i\)</span> en la respuesta <em>Y</em>, <em>ceteris paribus</em>, es decir, independientemente de los valores y/o categorías de las variables de confusión (edad, sexo, etc.).</p>
<p>También podrían haberse considerado interacciones entre variables, que se suelen interpretar como sinergias o antagonismos. Pero dada la limitación de espacio y el carácter introductorio de este capítulo no se ha considerado oportuno, pues, además, la interpretación de dichas interacciones suele ser compleja. En el Cap. 3 de <span class="citation">James et al. (<a href="referencias.html#ref-james2013introduction">2013</a>)</span> puede encontrarse un ejemplo.</p>
<div id="resumen-14" class="section level3 unnumbered infobox_resume">
<h3>Resumen<a class="anchor" aria-label="anchor" href="#resumen-14"><i class="fas fa-link"></i></a>
</h3>
<p>En este capítulo se introduce el modelo de regresión lineal. En particular:</p>
<ul>
<li><p>Se presenta el modelo de regresión lineal múltiple indicando los pasos del análisis de regresión: estimación, validación, interpretación y predicción. La regresión lineal simple se plantea como un caso particular de la múltiple.</p></li>
<li><p>Se muestra el uso de <strong>R</strong> para el ajuste de este tipo de modelos.</p></li>
<li><p>Se presentan diversos casos prácticos para ilustrar la interpretación de los coeficientes de regresión, tanto asociados a variables continuas como a categóricas, la interpretación de las predicciones y el resto de análisis.</p></li>
<li><p>Se mencionan distintos problemas de modelización que el análisis ayuda a detectar, proponiendo a su vez soluciones para solventarlos.</p></li>
</ul>
</div>
</div>
</div>
<div class="chapter-nav">
<div class="prev"><a href="muestreo.html"><span class="header-section-number">14</span> Muestreo y remuestreo</a></div>
<div class="next"><a href="cap-glm.html"><span class="header-section-number">16</span> Modelos lineales generalizados</a></div>
</div></main><div class="col-md-3 col-lg-2 d-none d-md-block sidebar sidebar-chapter">
<nav id="toc" data-toggle="toc" aria-label="Índice del capítulo"><h2>Índice del capítulo</h2>
<ul class="nav navbar-nav">
<li><a class="nav-link" href="#cap-lm"><span class="header-section-number">15</span> Modelización lineal</a></li>
<li><a class="nav-link" href="#modelizaci%C3%B3n"><span class="header-section-number">15.1</span> Modelización</a></li>
<li>
<a class="nav-link" href="#procedimiento-de-modelizaci%C3%B3n"><span class="header-section-number">15.2</span> Procedimiento de modelización</a><ul class="nav navbar-nav">
<li><a class="nav-link" href="#Bondad"><span class="header-section-number">15.2.1</span> Estimación del modelo</a></li>
<li><a class="nav-link" href="#sec-valida-lm"><span class="header-section-number">15.2.2</span> Validación del modelo</a></li>
<li><a class="nav-link" href="#Sec:interp"><span class="header-section-number">15.2.3</span> Interpretación de los coeficientes</a></li>
<li><a class="nav-link" href="#predicci%C3%B3n"><span class="header-section-number">15.2.4</span> Predicción</a></li>
</ul>
</li>
<li><a class="nav-link" href="#procedimiento-con-r-la-funci%C3%B3n-lm"><span class="header-section-number">15.3</span> Procedimiento con R: la función lm()</a></li>
<li>
<a class="nav-link" href="#Casos"><span class="header-section-number">15.4</span> Casos prácticos</a><ul class="nav navbar-nav">
<li><a class="nav-link" href="#estimaci%C3%B3n-de-los-coeficientes"><span class="header-section-number">15.4.1</span> Estimación de los coeficientes</a></li>
<li><a class="nav-link" href="#validaci%C3%B3n"><span class="header-section-number">15.4.2</span> Validación</a></li>
<li><a class="nav-link" href="#interpretaci%C3%B3n-de-los-coeficientes"><span class="header-section-number">15.4.3</span> Interpretación de los coeficientes</a></li>
<li><a class="nav-link" href="#predicci%C3%B3n-1"><span class="header-section-number">15.4.4</span> Predicción</a></li>
<li><a class="nav-link" href="#nuevo-ajuste-con-logozone"><span class="header-section-number">15.4.5</span> Nuevo ajuste con log(Ozone)</a></li>
<li><a class="nav-link" href="#coeficientes-de-variables-categ%C3%B3ricas"><span class="header-section-number">15.4.6</span> Coeficientes de variables categóricas</a></li>
</ul>
</li>
<li>
<a class="nav-link" href="#comentarios-finales"><span class="header-section-number">15.5</span> Comentarios finales</a><ul class="nav navbar-nav"><li><a class="nav-link" href="#resumen-14">Resumen</a></li></ul>
</li>
</ul>
<div class="book-extra">
<ul class="list-unstyled">
</ul>
</div>
</nav>
</div>
</div>
</div> <!-- .container -->
<footer class="bg-primary text-light mt-5"><div class="container"><div class="row">
<div class="col-12 col-md-6 mt-3">
<p>"<strong>Fundamentos de ciencia de datos con <strong>R</strong></strong>" coordinado por <a href="https://blog.uclm.es/gemafaviles/" class="text-light">Gema Fernández-Avilés y José-María Montero</a>. </p>
</div>
<div class="col-12 col-md-6 mt-3">
<p>Este libro ha sido generado con el paquete de R <a class="text-light" href="https://bookdown.org">bookdown</a>.</p>
</div>
</div></div>
</footer><!-- dynamically load mathjax for compatibility with self-contained --><script>
(function () {
var script = document.createElement("script");
script.type = "text/javascript";
var src = "true";
if (src === "" || src === "true") src = "https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-MML-AM_CHTML";
if (location.protocol !== "file:")
if (/^https?:/.test(src))
src = src.replace(/^https?:/, '');
script.src = src;
document.getElementsByTagName("head")[0].appendChild(script);
})();
</script><script type="text/x-mathjax-config">const popovers = document.querySelectorAll('a.footnote-ref[data-toggle="popover"]');
for (let popover of popovers) {
const div = document.createElement('div');
div.setAttribute('style', 'position: absolute; top: 0, left:0; width:0, height:0, overflow: hidden; visibility: hidden;');
div.innerHTML = popover.getAttribute('data-content');
var has_math = div.querySelector("span.math");
if (has_math) {
document.body.appendChild(div);
MathJax.Hub.Queue(["Typeset", MathJax.Hub, div]);
MathJax.Hub.Queue(function() {
popover.setAttribute('data-content', div.innerHTML);
document.body.removeChild(div);
})
}
}
</script>
</body>
</html>