Realizar pruebas de significancia del coeficiente de correlación y el coeficiente la pendiente en modelos de regresión lineal simple.
Se construyen unos datos relacionados con el caso anterior de llamadas y ventas.
Se determina el coeficiente de correlación de Pearson \(r\)
Se determina el valor del coeficiente de determinación \(r^2\)
Se hace la prueba de significancia para determinar si la correlación estimada de una población es diferente de cero para rechazar o aceptar una hipótesis nula.
Se construye el modelo de regresión linea con la ecuación de mínimos cuadrados \(Y = a + bx\)
Se determinan los coeficiente \(a\) y \(b\)
Se hace una prueba de significancia para evaluar si el valor de la pendiente o valor de \(b\) tiene un significado estadístico de manera tal que se pueda rechazar una hipótesis nula.
Como los datos provienen de una muestra es necesario contemplar pruebas de significancia para estimar parámetros poblacionales con los que se pueda confiar que las estadísticos son significativos.
Las pruebas de significancia implica determinar un valor de \(t\) que van a ser comparados con valores críticos a partir de los cuantiles qt() de distribuciones t student a ciertos grados de libertar y con el nivel de confianza requerido.
De tal forma que se debe utilizar e interpretar en caso de que el valor de \(t\) esté en una zona de confianza se acepta una hipótesis nula y si está fuera se rechaza la hipótesis nula y se acepta hipótesis alternativa.
Hay dos pruebas que se describen en este caso:
Prueba de significancia para correlación \(r\) para saber si la correlación sería difenrete de cero en una población.
Prueba de significancia para la pendiente \(b\) para saber si estadísticamente el valor de la pendiente de la recta de estimación en una regresión lineal simple es aceptada con valores de una población.
library(dplyr)
library(mosaic)
library(readr)
library(ggplot2) # Para gráficos
library(knitr) # Para formateo de
library(PerformanceAnalytics) # Para coorelaciones gráficas
library(visualize)
Datos de llamadas que hacen vendedores y las ventas que realizan.
vendedores <- paste("V",1:15, sep="")
llamadas <- c(96, 40, 104, 128, 164, 76, 72, 80 , 36, 84, 180, 132, 120, 44, 84)
ventas <- c(41, 41, 51, 60, 61, 29, 39, 50, 28, 43, 70, 56, 45, 31, 30)
datos <- data.frame(vendedores, llamadas, ventas)
datos
## vendedores llamadas ventas
## 1 V1 96 41
## 2 V2 40 41
## 3 V3 104 51
## 4 V4 128 60
## 5 V5 164 61
## 6 V6 76 29
## 7 V7 72 39
## 8 V8 80 50
## 9 V9 36 28
## 10 V10 84 43
## 11 V11 180 70
## 12 V12 132 56
## 13 V13 120 45
## 14 V14 44 31
## 15 V15 84 30
\[ r = \frac{S_{xy}}{S_x \cdot S_y} \]
chart.Correlation(datos[,2:3], histogram = TRUE)
r <- cor(x = datos$llamadas, y = datos$ventas)
r
## [1] 0.8646318
Significa elevar al cuadrado el coeficiente de correlación e interpretar que tanto afecta o representa la variable llamadas a la variable ventas.
\[ \text{coeficiente de determinación} = r^2 \]
c.determinacion <- r^2
c.determinacion
## [1] 0.7475881
Se establecen hipótesis nula y alternativa con respecto al coeficiente de correlación.
La hipótesis nula \(H_0\) establece que el coeficiente de correlación en una población de donde proviene la muestra sería cero.
La hipótesis alternativa \(H_1\) establece que el coeficiente de correlación en una población de donde proviene la muestra sería diferente de cero.
La idea es demostrar y rechazar la \(H_0\)
\[ \text{Hipótesis nula}: H_0: Correlación = 0 \\ \text{Hipótesis alternativa}: H_1: Correlación \neq 0 \]
Utilizar funciones de la distribución t student para encontrar valores críticos de \(t\) a un valor de confianza que puede ser \(0.90, 0.95, 0.99\).
Luego recordar que si se va a evaluar diferente de cero entonce el valor de alfa es: \(\alpha = (1 - confianza) / 2\). A esto se le llama prueba de dos colas.
Se va a utilizar la función qt() para estimar los valores de t.critico.
Se debe calcular el valor de t con respecto a la correlación \(r\) de la siguiente manera:
\[ t = r \cdot \frac{\sqrt{n-2}}{\sqrt{1 - r^2}} \]
\[ r el valor de la correlación (n-2) grados de libertad \]
A partir de la fórmula
n <- nrow(datos)
t <- r * (sqrt(n-2) / sqrt(1 - r^2))
t
## [1] 6.205089
Se toma un nivel de confianza al \(95\%\) usando la función de qt()
confianza = 0.95
t.critico <- qt(p = (1 - confianza) / 2, df = n-2, lower.tail = FALSE)
t.critico
## [1] 2.160369
Con la gráfica se ubica el valor de \(t\) con respecto al valor de \(t.critico\) y se estima si está en una zona de aceptación rechazo para concluir que se acepta o se rechaza la \(H_0\).
visualize.t(stat = c(-t.critico, t.critico), section = "tails", df = (n-2)) +
abline(v = t, col = "red", lwd = 3, lty = 2) +
text(0, 0.2, paste(confianza * 100, "%", sep = ""), col = "red") +
xlim(-6,6)
## NULL
El valor de \(t = 6.205089\) está muy a la derecha del valor crítico (no se visualiza por la escala) de \(t = 2.160369\) de tal forma que se entiende o interpreta que está en zona de rechazo.
Al estar en zona de rechazo (azul) se rechaza la \(H_0\) y se acepta \(H_1\)
Entonces con esto se asegura y se prueba que el valor del coeficiente de correlación que se obtuvo de la muestra sería absolutamente diferente de cero en una población con un nivel de confianza del 95% .
Para evaluar es valor de una pendiente se tiene que construir un modelo de regresión lineal, en este caso sería bajo el modelo de la ecuación de mínimos cuadrados \(Y = a+bx\) , de la regresión lineal simple.
Con el modelo se determina el valor del coeficiente de l abcisa \(a\) y el valor de la pendiente \(b\) en la fórmula.
La prueba de significancia del valor de la pendiente \(b\)
Se interpreta de que si este valor de la ecuación obtenido de una muestra tiene significado estadístico en una población y se pudiera utilizar en la fórmula para estimaciones.
Ahora bien, es necesario obtener el valor de t con la siguiente fórmula:
\[ t = \frac{b-0}{S_b} \therefore \]
\[ S_b = \frac{\sqrt{\frac{(y_i - Y)^2}{(n-2)}}}{\sqrt{(x_i-\bar{x})^2}} \]
\[ S_b \text{ es el error estándar de la estimación de la pendiente o varianza de residuos} \\ b \text{ es el valor de la pendiene} \]
Se construye el modelo
modelo <- lm(data = datos, formula = ventas ~ llamadas)
modelo
##
## Call:
## lm(formula = ventas ~ llamadas, data = datos)
##
## Coefficients:
## (Intercept) llamadas
## 19.9800 0.2606
resumen <- summary(modelo)
a <- modelo$coefficients[1]
b <- modelo$coefficients[2]
Se presentan una tabla con las columnas con los cálculos necesarios para determinar \(S_b\) a partir de los valores \(x\) e \(y\).
tabla <- data.frame(x = llamadas, y = ventas, x.media = mean(llamadas), xi.menos.x.media = llamadas - mean(llamadas), xi.menos.x.media.cuad = (llamadas - mean(llamadas))^2, Y = modelo$fitted.values, y.menos.Y = ventas - modelo$fitted.values, y.menos.Y.cuad = (ventas - modelo$fitted.values)^2)
tabla <- rbind(tabla, apply(tabla, 2, sum))
tabla[16,c(1,2,3,6,7)] <- '*'
kable(tabla)
x | y | x.media | xi.menos.x.media | xi.menos.x.media.cuad | Y | y.menos.Y | y.menos.Y.cuad |
---|---|---|---|---|---|---|---|
96 | 41 | 96 | 0 | 0 | 45 | -4.00000000000001 | 16.0000000 |
40 | 41 | 96 | -56 | 3136 | 30.405 | 10.595 | 112.2540250 |
104 | 51 | 96 | 8 | 64 | 47.085 | 3.915 | 15.3272250 |
128 | 60 | 96 | 32 | 1024 | 53.34 | 6.66 | 44.3556000 |
164 | 61 | 96 | 68 | 4624 | 62.7225 | -1.7225 | 2.9670063 |
76 | 29 | 96 | -20 | 400 | 39.7875 | -10.7875 | 116.3701563 |
72 | 39 | 96 | -24 | 576 | 38.745 | 0.255000000000003 | 0.0650250 |
80 | 50 | 96 | -16 | 256 | 40.83 | 9.17 | 84.0889000 |
36 | 28 | 96 | -60 | 3600 | 29.3625 | -1.3625 | 1.8564062 |
84 | 43 | 96 | -12 | 144 | 41.8725 | 1.1275 | 1.2712562 |
180 | 70 | 96 | 84 | 7056 | 66.8925 | 3.1075 | 9.6565563 |
132 | 56 | 96 | 36 | 1296 | 54.3825 | 1.6175 | 2.6163062 |
120 | 45 | 96 | 24 | 576 | 51.255 | -6.255 | 39.1250250 |
44 | 31 | 96 | -52 | 2704 | 31.4475 | -0.447499999999998 | 0.2002562 |
84 | 30 | 96 | -12 | 144 | 41.8725 | -11.8725 | 140.9562563 |
* | * | * | 0 | 25600 | * | * | 587.1100000 |
De la tabla anterior se obtienen las sumatorias de \((x_i - \bar{x})\) y de \((y_i - Y)^2\). Las sumatorias de las columnas 5 y 8 de la tabla anterior renglón 16. [16, (5,8)]
suma.xi.media.x.cuad <- tabla[16, 5]
suma.yi.menos.Y.cuad <- tabla[16, 8]
suma.xi.media.x.cuad
## [1] 25600
suma.yi.menos.Y.cuad
## [1] 587.11
Ahora sólo calcular conforme a la fórmula el valor de \(S_b\) y sería
n <- nrow(datos)
Sb <- sqrt(suma.yi.menos.Y.cuad / (n-2)) / sqrt(suma.xi.media.x.cuad)
Sb
## [1] 0.04200182
Y calculando el valor de \(t\) conforme a la fórmula sería:
t <- (b - 0) / Sb
t
## llamadas
## 6.205089
resumen
##
## Call:
## lm(formula = ventas ~ llamadas, data = datos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -11.873 -2.861 0.255 3.511 10.595
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 19.9800 4.3897 4.552 0.000544 ***
## llamadas 0.2606 0.0420 6.205 3.19e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 6.72 on 13 degrees of freedom
## Multiple R-squared: 0.7476, Adjusted R-squared: 0.7282
## F-statistic: 38.5 on 1 and 13 DF, p-value: 3.193e-05
Los valores específicos incluyendo el valor de \(p\) que es la probabilidad de las regiones en color azul más adelante visto en la gráfica.
Los asteriscos ‘***’ significan que los coeficientes son estadísticamente significativos a niveles de confianza 0.001, 0.01 o 0.05 y que si son útiles como predictores en la ecuación.
resumen$coefficients[2, ]
## Estimate Std. Error t value Pr(>|t|)
## 0.2606250000 0.0420018172 6.2050886762 0.0000319277
Nivel de confianza del 95% con valor de t a una cola
\[ H_0: b \le 0 \\ H_1: b > 0 \]
confianza = 0.95
t.critico <- abs(qt(p = 1 - confianza, df = n-2))
t.critico
## [1] 1.770933
visualize.t(stat = c(-t.critico, t.critico), section = "tails", df = (n-2)) +
abline(v = t, col = "red", lwd = 3, lty = 2) +
text(0, 0.2, paste(confianza * 100, "%", sep = ""), col = "red") +
xlim(-6,6)
## NULL
Nivel de confianza del 95% con valor de t a dos colas
\[ H_0: b = 0 \\ H_1: b \neq 0 \]
confianza = 0.95
t.critico <- abs(qt(p = (1 - confianza) /2 , df = n-2))
t.critico
## [1] 2.160369
visualize.t(stat = c(-t.critico, t.critico), section = "tails", df = (n-2)) +
abline(v = t, col = "red", lwd = 3, lty = 2) +
text(0, 0.2, paste(confianza * 100, "%", sep = ""), col = "red") +
xlim(-6,6)
## NULL
El valor de t está muy lejos a la derecha de los valores críticos.
Con estos valores de t comparados con cualquier valor de t.critico se interpreta que estos datos de la muestra a un 95% de nivel de confianza se debe rechazar la \(H_0\) y aceptar la \(H_1\) con lo cual se concluye que el valor de la pendiente si es un predictor significativo para la ecuación.