---
title: "Componente Principales"
author: "Mauro E. Lioy"
output: html_notebook
---
&nbsp;

#### **EJERCICIO 4 - Práctica 4 - Parte 2** 

<div style="text-align: justify">

En las Tablas 2 y 3 y en el archivo __P4-2-ej4-2019.txt__ figuran los datos de las mediciones de huesos y dientes de ratones campestres (de la especie Microtus). Las variables son:

+ $y_1$ = ancho del molar 1 superior izquierdo
+ $y_2$ = ancho del molar 2 superior izquierdo
+ $y_3$ = ancho del molar 3 superior izquierdo
+ $y_4$ = longitud de la inserción del incisivo
+ $y_5$ = longitud del hueso del paladar
+ $y_6$ = longitud del cóndilo del incisivo o longitud del cráneo
+ $y_7$ = altura del cráneo por encima de la bullae
+ $y_8$ = ancho del cráneo a través de la cara

Las variables y1 a y 5 son en mm/1000; las variables y 6 a y 8 son en mm/100. La variable grupo indica la especie de los ratones, siendo 1 la especie Microtus multiplex (Tabla2) y2 la especie Microtus subterraneus (Tabla 3). Consideremos solamente las primeras 3 variables ($y_1$ , $y_2$ , $y_3$ ) que son el ancho de los molares superiores izquierdos 1, 2 y 3 respectivamente, para las 43 ratas del grupo 1.

__(a)__ Hallar las componentes principales muestrales y los autovalores de $S$.

__(b)__ Hallar los porcentajes de la variabilidad total explicados por la primera y por las dos primeras componentes, e interpretarlas en función de las variables originales.

<div/>

&nbsp;

#### **RESOLUCIóN**

```{r}
rm(list = ls())
graphics.off()
```
&nbsp;

**DATOS**
```{r}
## DATOS ###########################################
#ds = read.table(file.choose(), header = )
ds = read.table('/home/maurolioy/Documentos/MEL/MAESTRIA/Multivariado/Practicas/P4/II/R/datos/datos_P4_ex4_p2.txt',header = T)

# Nos quedamos con las variables Y1,Y2,Y3 del grupo 1
ds1 = ds[ds$Grupo == 1,-c(1,5:9)]
```

&nbsp;

**AUTOVALORES Y AUTOVECTORES DE S**

Recordemos los estimadores de MV de $\mathbf{\mu}$ y $\Sigma$: 

$$ \hat{\mathbf{\mu}} = \bar{ \mathbf{x} } \quad \text{y} \quad  S = \frac{Q}{n} $$

```{r}
n = nrow(ds1) #43
Q = (n-1) * cov(ds1)
S = Q/n
```

Matriz S
```{r}
print(S)
```

```{r}
gamma_objet = eigen(S)
autovalores = gamma_objet$values
```

**Autovalores de S**

|$\lambda_1$|$\lambda_2$|$\lambda_3$|
|-|-|-|
|39040.432|7650.393|2770.575|



&nbsp;

**COMPONENTES PRINCIPALES MUESTRALES**

Sea:

$$\hat{\Sigma} =  \hat{\Gamma}\hat{\Lambda}\hat{\Gamma}^T$$
Entonces:
$$\hat{\mathbf{v}}_i =  \hat{\Gamma}^T (\mathbf{x}_i - \mathbf{\bar{x}}) $$
Donde:

+ $\mathbf{x}_i$ y $\mathbf{\bar{x}}$ $\in R^p$ (en este caso $p=3$).

+ $\hat{\mathbf{v}}_i \in R^q$ es el vector de componetes principales de la medicion $i$ (en este caso $q=p=3$).

+ $\hat{\Gamma}$ es la matriz de autovectores de $S$. 

+ $\hat{\Gamma} \in R^{p \times q}$ (en este caso $p=3$ y $q=3$).

```{r}
Gamma = gamma_objet$vectors
x_bar = matrix(colMeans(ds1), ncol = 1)

x_menos_mu = sweep(as.matrix(ds1), 2, x_bar)
v = t(Gamma)%*%t(x_menos_mu)
```

```{r}
print(t(v))
```

$nbsp;

**VARIABILIDAD**

Las componentes principales explican una porción de la dispersión total medida a través de la traza. 

+ $Tr(\Sigma) = Tr(\Gamma\Lambda\Gamma^T)=Tr(\Gamma^T\Gamma\Lambda) = Tr(\Lambda)$

+ $\hat{\Lambda} = \text{diag}(\hat{\lambda_1},\hat{\lambda_2},\hat{\lambda_3})$
+ $Tr(\hat{\Lambda}) = \hat{\lambda_1}+\hat{\lambda_2}+\hat{\lambda_3}$
+ $\hat{\text{var}}(v_j)=\hat{\lambda_j}$

Queremos calcular:
$$\frac{\hat{\lambda_1}}{ \sum_{j=1}^{3} \hat{\lambda_j}}$$

y

$$\frac{\hat{\lambda_1} + \hat{\lambda_2} }{ \sum_{j=1}^{3} \hat{\lambda_j}}$$

```{r}
## VARIABILIDAD ####################################
suma_p = sum(autovalores)
# variabilidad 1
pp1 = autovalores[1] / suma_p
# variabilidad 1+2
pp12 = (autovalores[1] + autovalores[2]) / suma_p
```


Luego:

$$\frac{\hat{\lambda_1}}{ \sum_{j=1}^{3} \hat{\lambda_j}} = 0.789$$


$$\frac{\hat{\lambda_1} + \hat{\lambda_2} }{ \sum_{j=1}^{3} \hat{\lambda_j}} = 0.943$$


&nbsp;



**Correlaciones**

$$\text{Corr}(\mathbf{x_{j}},\mathbf{v_{l}}) = \rho_{\mathbf{x_j},\mathbf{v_l}} = \gamma_{l,j}\sqrt{\frac{\lambda_l}{\sigma_{jj}}}$$

```{r}
Corr_Xjvl = matrix(0,nrow = 3,ncol=3)
## este loop me da para cada variable Xj la correlación con todas las componentes vl
for(j in 1:3){
  gammma_lj = Gamma[j,]
  correlaciones_j = gammma_lj * sqrt(autovalores / S[j,j])
  Corr_Xjvl[j,] = correlaciones_j
  
} 
```

```{r}
data.frame(t(Corr_Xjvl),row.names = c('v1','v2','v3'))
```


