Analisis de datos bivariados

Ejemplo 1: El tiempo que tarda un sistema informático en red en ejecutar una instrucción depende del número de usuarios conectados a él. Sí no hay usuarios el tiempo es cero. Se tienen registrados los siguientes datos:

Creamos los dos vectores de usuarios y tiempo.

# Número de usuarios = Variable explicativa o independiente
usuarios <- c(10, 15, 20, 20, 25, 30, 30); usuarios
[1] 10 15 20 20 25 30 30
tiempo = c(1.0, 1.2, 2.0, 2.1, 2.2, 2.0, 1.9); tiempo 
[1] 1.0 1.2 2.0 2.1 2.2 2.0 1.9

Creamos un marco de datos con los dos vectores

Sistema <- data.frame(Usuarios=usuarios, Tiempo=tiempo);Sistema
  Usuarios Tiempo
1       10    1.0
2       15    1.2
3       20    2.0
4       20    2.1
5       25    2.2
6       30    2.0
7       30    1.9
summary(Sistema)
    Usuarios         Tiempo     
 Min.   :10.00   Min.   :1.000  
 1st Qu.:17.50   1st Qu.:1.550  
 Median :20.00   Median :2.000  
 Mean   :21.43   Mean   :1.771  
 3rd Qu.:27.50   3rd Qu.:2.050  
 Max.   :30.00   Max.   :2.200  
cov(Sistema) # Matriz de covarianzas
          Usuarios   Tiempo
Usuarios 55.952381 2.714286
Tiempo    2.714286 0.222381
cor(Sistema, use = "all.obs", method="pearson") # Matriz de correlaciones 
          Usuarios    Tiempo
Usuarios 1.0000000 0.7694803
Tiempo   0.7694803 1.0000000
#Elabora un gráfico de dispersión para analizar alguna relación entre las variables.
plot(Sistema, xlim= c(5, 35), ylim= c(0.0, 2.5), type = "p", pch=1, col = "blue", main =
"Gráfico de dispersión (Usuarios, Tiempo)", xlab="Número de usuarios", ylab="Tiempo de ejecución") 

reg.Y.X <- lm(Tiempo ~ -1 + Usuarios, Sistema, na.action=NULL, method="qr", model=TRUE)
#-1 indica que no se toma en cuenta la constante en el modelo.
summary(reg.Y.X)

Call:
lm(formula = Tiempo ~ -1 + Usuarios, data = Sistema, na.action = NULL, 
    method = "qr", model = TRUE)

Residuals:
    Min      1Q  Median      3Q     Max 
-0.4831 -0.1873  0.2056  0.3127  0.5113 

Coefficients:
         Estimate Std. Error t value Pr(>|t|)    
Usuarios 0.079437   0.006496   12.23 1.82e-05 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.3871 on 6 degrees of freedom
Multiple R-squared:  0.9614,    Adjusted R-squared:  0.955 
F-statistic: 149.5 on 1 and 6 DF,  p-value: 1.821e-05
reg.anova <- anova(reg.Y.X); reg.anova 
Analysis of Variance Table

Response: Tiempo
          Df  Sum Sq Mean Sq F value    Pr(>F)    
Usuarios   1 22.4011 22.4011  149.53 1.821e-05 ***
Residuals  6  0.8989  0.1498                      
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Por lo tanto se concluye con una certeza del 95% que si depende la cantidad de usuarios y el tiempo en realizar la instruccion el sistema.

Ejemplo 2: A continuacion se presentan otras dos variables y verificaremos el grado de relacion entre ellas, y si dependen una de la otra.

# Ejemplo de datos
x <- c(1, 2, 3, 4, 5, 6, 7, 8, 9)
y <- c(2, 4, 5, 4, 5, 7, 8, 9, 10)
cor(x,y, use = "all.obs", method="pearson")
[1] 0.9660918
# Ajuste de modelo de regresión lineal
modelo <- lm(y ~ x)

# Mostrar el resumen del modelo
summary(modelo)

Call:
lm(formula = y ~ x)

Residuals:
    Min      1Q  Median      3Q     Max 
-1.0667 -0.2667  0.1333  0.2667  0.8667 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  1.33333    0.53055   2.513   0.0402 *  
x            0.93333    0.09428   9.899 2.29e-05 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.7303 on 7 degrees of freedom
Multiple R-squared:  0.9333,    Adjusted R-squared:  0.9238 
F-statistic:    98 on 1 and 7 DF,  p-value: 2.287e-05
# Crear el gráfico de dispersión
plot(x, y, main="Recta de Mejor Ajuste", xlab="Variable X", ylab="Variable Y")

# Agregar la recta de mejor ajuste al gráfico
abline(modelo, col="red")

anova(modelo)
Analysis of Variance Table

Response: y
          Df Sum Sq Mean Sq F value    Pr(>F)    
x          1 52.267  52.267      98 2.287e-05 ***
Residuals  7  3.733   0.533                      
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Podemos verificar que si dependen las variables una de la otra.