Está en la página 1de 37

Inferencia en modelos de Regresión Lineal

Enrique De La Hoz Domínguez

Data science

Enrique De La Hoz Domínguez Inferencia en modelos de Regresión Lineal Data science 1 / 37


Objetivos de aprendizaje

Hacer afirmaciones inferenciales sobre modelos.


Usar la estimación de mínimos cuadrados.
Crear intervalos de confianza para la pendiente.

Enrique De La Hoz Domínguez Inferencia en modelos de Regresión Lineal Data science 2 / 37


Starbucks Fat vs Calories (Comestibles)

starbucks<- read.csv("food_starbucks_menu.csv")
# Using popdata, plot response vs. explanatory
G1<- ggplot(starbucks, aes(x = Fat_g, y = Calories)) +
# Add a point layer
geom_point() +labs(title="Fat vs Calories
for Starbucks Food items")

Enrique De La Hoz Domínguez Inferencia en modelos de Regresión Lineal Data science 3 / 37


Starbucks Fat vs Calories (Comestibles)
Fat vs Calories
for Starbucks Food items

600

400
Calories

200

0 10 20 30
Fat_g

Enrique De La Hoz Domínguez Inferencia en modelos de Regresión Lineal Data science 4 / 37


Linea de Regresión: Starbucks Fat vs Calories

G1 + geom_smooth(method = "lm", se = FALSE)

Enrique De La Hoz Domínguez Inferencia en modelos de Regresión Lineal Data science 5 / 37


Linea de Regresión: Starbucks Fat vs Calories
Fat vs Calories
for Starbucks Food items

600

400
Calories

200

0 10 20 30
Fat_g

Enrique De La Hoz Domínguez Inferencia en modelos de Regresión Lineal Data science 6 / 37


(From a sample): Starbucks Fat vs Calories
Fat vs Calories
for Starbucks Food items

600

500
Calories

400

300

200

100
10 20 30
Fat_g

Enrique De La Hoz Domínguez Inferencia en modelos de Regresión Lineal Data science 7 / 37


(From a sample): Starbucks Fat vs Calories

set.seed(16)
#starbucks<- read.csv("food_starbucks_menu.csv")
sample1x<- sample_n(starbucks, 30)

G2<- ggplot(sample1x, aes(x = Fat_g, y = Calories)) +


# Add a point layer
geom_point() +labs(title="Fat vs Calories
for Starbucks Food items")

G2 + geom_smooth(method = "lm", se= FALSE)

Enrique De La Hoz Domínguez Inferencia en modelos de Regresión Lineal Data science 8 / 37


(From another sample): Starbucks Fat vs Calories
Fat vs Calories
for Starbucks Food items

600

500

400
Calories

300

200

100
10 20 30
Fat_g

Enrique De La Hoz Domínguez Inferencia en modelos de Regresión Lineal Data science 9 / 37


(For two samples): Starbucks Fat vs Calories

set.seed(16)
starbucks<- read.csv("food_starbucks_menu.csv")
sample1x<- sample_n(starbucks, 30)
sample2x<- sample_n(starbucks, 30)
two_samples<- bind_rows(sample1x, sample2x,
.id = "replicate")
# Using popdata, plot response vs. explanatory
G3<- ggplot(two_samples, aes(x = Fat_g, y = Calories,
color = replicate)) +
# Add a point layer
geom_point() +labs(title="two sampled linear models") +
geom_smooth(method= "lm", se = F)
G3

Enrique De La Hoz Domínguez Inferencia en modelos de Regresión Lineal Data science 10 / 37


Code. Linea de Regresión (From another sample):

set.seed(16)
starbucks<- read.csv("food_starbucks_menu.csv")
sample1x<- sample_n(starbucks, 30)
sample2x<- sample_n(starbucks, 30)
two_samples<- bind_rows(sample1x, sample2x,
.id = "replicate")
# Using popdata, plot response vs. explanatory
G3<- ggplot(two_samples, aes(x = Fat_g, y = Calories,
color = replicate)) +
# Add a point layer
geom_point() +labs(title="two sampled linear models") +
geom_smooth(method= "lm", se = F)

Enrique De La Hoz Domínguez Inferencia en modelos de Regresión Lineal Data science 11 / 37


Variabilidad en la línea de regresión

600

400
Calories

200

0 10 20 30
Fat_g

Enrique De La Hoz Domínguez Inferencia en modelos de Regresión Lineal Data science 12 / 37


Variabilidad en la línea de regresión

# From previous step


set.seed(4747)
many_samplex <- starbucks %>% rep_sample_n(size = 30,
reps = 100)
# Using many_samples, plot response vs. explanatory,
#grouped by replicate
G4<- ggplot(many_samplex, aes(x=Fat_g, y = Calories,
group = replicate)) +
# Add a point layer
geom_point() +
# Add a smooth trend line, using lin
geom_smooth(method = "lm", se = F)

Enrique De La Hoz Domínguez Inferencia en modelos de Regresión Lineal Data science 13 / 37


Preguntas de investigacion. (Proteínas y
Carbohidratos)

Que preguntas serían interesantes para el dataset Starbucks.


Están las protenias y los carbohidratos linealmente asociados en la
población (Prueba de dos colas)?
Están las protenias y los carbohidratos linealmente asociados en una
dirección positiva en la población (Prueba de una cola)?

Enrique De La Hoz Domínguez Inferencia en modelos de Regresión Lineal Data science 14 / 37


Salidas de un modelo de regresión: Estimaciones

# A tibble: 2 x 5
term estimate std.error statistic p.value
<chr> <dbl> <dbl> <dbl> <dbl>
1 (Intercept) 258. 36.3 7.10 0.000000100
2 Protein_g 8.41 2.25 3.73 0.000856
La variabilidad de los términos del modelo lineal se observan en
(std.error)
std.error, representa cuánto varía la línea en unidades asociadas
statistic, es un estimación estandarizada. Mide el número de veces de
errores estandarizados que las estimaciones son mayores que cero.
P.value, entrega información acerca de si el intercepto o la pendiente
son ceros. Por default, la prueba es de dos colas (tener esto en cuenta)
Para el caso en cuestión, es fácil rechazar la hipótesis de que esta
muestra proviene de una población con un intercepto igual a cero

Enrique De La Hoz Domínguez Inferencia en modelos de Regresión Lineal Data science 15 / 37


Twins case

120
Biological

100

80

60 80 100 120
Foster

Enrique De La Hoz Domínguez Inferencia en modelos de Regresión Lineal Data science 16 / 37


Orden de los datos

Enrique De La Hoz Domínguez Inferencia en modelos de Regresión Lineal Data science 17 / 37


Datos ordenados

Enrique De La Hoz Domínguez Inferencia en modelos de Regresión Lineal Data science 18 / 37


Datos permutados

Enrique De La Hoz Domínguez Inferencia en modelos de Regresión Lineal Data science 19 / 37


Datos originales vs Datos permutados 1
library(gridExtra)
g1<- ggplot(twins, aes(x= Foster, y = Biological)) +
geom_point() +
geom_smooth(method = "lm", se = F)+
ggtitle("Datos originales twins")
perm_slope <- twins %>%
# Specify Foster vs. Biological
specify(Foster ~ Biological) %>%
# Use a null hypothesis of independence
hypothesize(null = "independence") %>%
# Generate 10 permutation replicates
generate(reps = 1, type = "permute")
g2<- ggplot(perm_slope, aes(x= Foster, y = Biological)) +
geom_point() + geom_smooth(method = "lm", se = F)+
ggtitle("Datos permutados twins")

Enrique De La Hoz Domínguez Inferencia en modelos de Regresión Lineal Data science 20 / 37


Datos originales vs Datos permutados 1
Datos originales twins Datos permutados twins

120 120
Biological

Biological
100 100

80 80

60 80 100 120 60 80 100 120


Foster Foster

Enrique De La Hoz Domínguez Inferencia en modelos de Regresión Lineal Data science 21 / 37


Datos originales vs Datos permutados 2
Datos originales twins Datos permutados twins

120 120
Biological

Biological
100 100

80 80

60 80 100 120 60 80 100 120


Foster Foster

Enrique De La Hoz Domínguez Inferencia en modelos de Regresión Lineal Data science 22 / 37


Modelo de regresión lineal en los datos permutados

perm_slope <- twins %>%


# Specify Foster vs. Biological
specify(Foster ~ Biological) %>%
# Use a null hypothesis of independence
hypothesize(null = "independence") %>%
# Generate 10 permutation replicates
generate(reps = 500, type = "permute") %>%
# Calculate the slope statistic
calculate(stat="slope")

Enrique De La Hoz Domínguez Inferencia en modelos de Regresión Lineal Data science 23 / 37


Modelo de regresión lineal en los datos permutados

# A tibble: 500 x 2
replicate stat
<int> <dbl>
1 1 0.0215
2 2 -0.0297
3 3 0.420
4 4 0.192
5 5 0.0699
6 6 -0.120
7 7 0.0915
8 8 -0.215
9 9 0.0903
10 10 0.141
# ... with 490 more rows

Enrique De La Hoz Domínguez Inferencia en modelos de Regresión Lineal Data science 24 / 37


Muchas permutaciones (de la Pendiente)

perm_slope <- twins %>%


# Specify Foster vs. Biological
specify(Foster ~ Biological) %>%
# Use a null hypothesis of independence
hypothesize(null = "independence") %>%
# Generate 10 permutation replicates
generate(reps = 1000, type = "permute") %>%
# Calculate the slope statistic
calculate(stat="slope")
# Using perm_slope, plot stat
G6<- ggplot(perm_slope, aes(x=stat)) +
# Add a density layER

geom_histogram()

Enrique De La Hoz Domínguez Inferencia en modelos de Regresión Lineal Data science 25 / 37


Muchas permutaciones (de la Pendiente)
100

75
count

50

25

−0.5 0.0 0.5


stat

Enrique De La Hoz Domínguez Inferencia en modelos de Regresión Lineal Data science 26 / 37


Pendientes permutadas vs Pendiente observada
(rojo)

abs_obs_slope <- lm(Foster~Biological, twins) %>%


# Tidy the result
tidy() %>%
# Filter for rows where term equals Biological
filter(term == "Biological") %>%
# Pull out the estimate
pull("estimate") %>%
# Take the absolute value
abs()
G7<- ggplot(data = perm_slope,aes(x = stat)) +
geom_histogram() +
geom_vline(xintercept = abs_obs_slope,
color = "red")+ xlim(-1,1)

Enrique De La Hoz Domínguez Inferencia en modelos de Regresión Lineal Data science 27 / 37


Pendientes permutadas vs Pendiente observada
(rojo)

100
count

50

Enrique −1.0
De La Hoz Domínguez −0.5 Inferencia en modelos de
0.0 Regresión Lineal 0.5 Data science 1.0 28 / 37
Bootstrapped Samples

Enrique De La Hoz Domínguez Inferencia en modelos de Regresión Lineal Data science 29 / 37


Variedad de las permutaciones vs Bootstrap

110

120

100
Biological

Biological
100
90

80

80

70

60 80 100 120 70 80 90 100 110


Foster Foster

Enrique De La Hoz Domínguez Inferencia en modelos de Regresión Lineal Data science 30 / 37


Permutación vs Bootstrap código
Permutación
# A tibble: 100 x 2
replicate stat
<int> <dbl>
1 1 0.0754
2 2 0.386
3 3 0.201
4 4 0.0576
5 5 -0.0747
6 6 0.0642
7 7 -0.0699
8 8 -0.0107
9 9 0.0109
10 10 0.113
# ... with 90 more rows
Bootstrap
twins %>%
Enrique De La Hoz Domínguez Inferencia en modelos de Regresión Lineal Data science 31 / 37
Distribución muestral.
100

100

75

75
count

count
50

50

25

25

0 0

−0.4 0.0 0.4 0.7 0.9 1.1 1.3


stat stat

Enrique De La Hoz Domínguez Inferencia en modelos de Regresión Lineal Data science 32 / 37


Mathematical approach

y = β0 + β1 X1 + β2 X2 + 
- Multiple linear regression model
Dos variables independientes, tambien llamadas predictoras o
regresores.
El término “lineal” es usado dado que la función de enlace es una
función lineal de los parametros desconocidos β0 , β1 , β2
Para este ejemplo, el modelo describe un plano en dos dimensiones
(X1 , X2 )
Algunas veces a los coeficientes se les llama Coeficientes parciales de
regresión, dado que β1 mide el cambio esperado en y por cada cambio
de una unidad en cuando X2 se mantiene constante. Similar para β2 .

Enrique De La Hoz Domínguez Inferencia en modelos de Regresión Lineal Data science 33 / 37


El modelo general:

y = β0 + β1 X1 + β2 X2 + ... + βk Xk + 
- Los parametros βj son los coeficientes de regresión
El modelo describe un hiperplano de k-dimensiones de las variables
regresoras Xj .
Los βj representan el cambio esperado en la variable de respuesta y por
cada cambio de una unidad en Xj , cuando el resto de variables
permancen constante.

Enrique De La Hoz Domínguez Inferencia en modelos de Regresión Lineal Data science 34 / 37


Modelo generalizado

yi = β0 + β1 Xi1 + β2 Xi2 + ... + βk Xik + i

k
X
= β0 + βj Xij + i
j=1

Enrique De La Hoz Domínguez Inferencia en modelos de Regresión Lineal Data science 35 / 37


El método de los mínimos cuadrados
Objetivo a minimizar: La diferencia entre la predicción y el valor real

n
X n
X k
X
L= 2i = (yi − β0 − βj Xij )2
i=1 i=1 j=1

- Derivada con respecto al intercepto


δL
=0
δβ0
- Derivada con respecto a los βj

n k
δL
= −2 (yi − βˆ0 −
X X
β̂j Xij )
δβj i=1 j=1

Enrique De La Hoz Domínguez Inferencia en modelos de Regresión Lineal Data science 36 / 37


Ecuación normal

y = Xβ + 
- Definición de los coeficientes

X 0 X β̂ = X 0 y
β̂ = (X ťX )−1 X 0 y

Predicciones
ŷ = X β̂

Enrique De La Hoz Domínguez Inferencia en modelos de Regresión Lineal Data science 37 / 37

También podría gustarte