---
title: "Esercizio15052020"
author: "499EC"
date: "15/5/2020"
output:
  html_document:
    df_print: paged
  pdf_document: default
  word_document: default
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE)
```

## Esercizio di analisi in componenti principali

Svolgiamo l'esercizio di *Cap8.R* inserendolo in un documento di R markdown.

### I dati

Prendiamo i dati della *Tabella 8.7* nel Biggeri *et al.*.

```{r import}
Tab8.7 <- read.table("Tab8.7.txt", sep="\t", h=T, dec=".")
Imprese <- Tab8.7[,-1]    # via l'indice della prima colonna
dimnames(Imprese)[[1]] <- c("Alfa", paste("U", 2:6, sep=""))
```

### Statistiche descrittive

Calcoliamo media e varianza

```{r pressure, echo=TRUE}

## calc. media e varianza
apply(Imprese, 2, mean)
apply(Imprese, 2, var) * (5/6) # aggiusto per var. campionaria  
```

### Analisi in component principali

Calc. le CP come da esempio del libro: (NB qui le variabili non vengono standardizzate!)

#### Scomposizione della matrice di covarianza

Scomponiamo la matrice di covarianza usando una eigendecomposition (v. eq.(8)):

```{r eigendecomp}
eigen.decomposition <- eigen(cov(Imprese))
autovalori <- eigen.decomposition$values
autovettori <- eigen.decomposition$vectors
```

I coefficienti di C1 e C2 saranno gli autovettori della matrice di covarianza delle variabili originarie: 

```{r }
## coefficienti di C1 in (13):
autovettori[,1]
## coefficienti di C2:
autovettori[,2]
```

### Interpretazione delle componenti principali

L'interpretazione delle CP (si veda p.358 Biggeri, in alto): C1 è positivamente correlata al current ratio, negativamente al rapporto di indebitamento; pertanto **è da considerarsi un indicatore di stabilità finanziaria** (più alto è, meglio è); C2 invece è residuale e non ha una chiara interpretazione.

#### Varianze delle CP

Calcoliamo le varianze delle 2 componenti principali C1, C2:


```{r }
autovalori
```

Controlliamo: la varianza totale deve restare invariata

```{r }
sum(autovalori)
sum(apply(Imprese, 2, var))
```

## Interpretazione grafica delle CP

Calcoliamo i punteggi delle componenti principali (scores) per ogni impresa (calcolati sulle variabili in deviazioni dalla propria media):

```{r }
Imprese.dev <- apply(Imprese, 2, FUN=function(x) x-mean(x))
Imprese.scores <- as.matrix(Imprese.dev) %*% autovettori
dimnames(Imprese.scores)[[2]] <- c("C1", "C2")
```

Con questi riproduciamo la *Tabella 8.8* del libro:

```{r }
round(Imprese.scores[,"C1"], 3)
```

Rappresentiamo ora le imprese nello spazio delle variabili originarie:



```{r }
plot(Imprese$BETA, Imprese$CR, xlim=c(0,3), ylim=c(0,2),
     pch=19)
text(Imprese$BETA, Imprese$CR + 0.1, row.names(Imprese))
```

e in quello definito dalle componenti principali:

```{r }
plot(Imprese.scores[,"C1"], Imprese.scores[,"C2"],
     xlim=c(-1.4,1.4), ylim=c(-1.4,1.4), pch=19)
text(Imprese.scores[,"C1"], Imprese.scores[,"C2"] + 0.15,
     row.names(Imprese))
abline(h=0, lty=2)
abline(v=0, lty=2)
## posizione delle imprese sulla prima CP:
points(Imprese.scores[,"C1"], rep(0, dim(Imprese)[[1]]),
       pch=19, col="orange")
```

## Illustrazione grafica della rotazione degli assi

Facciamo vedere le imprese nello spazio delle variabili originarie, assieme agli assi delle nuove variabili: le componenti principali (C1 in rosso e C2 in verde).

```{r }
## Figura 8.2 (a bis): imprese nello spazio scalato e
## assi delle componenti principali (vedi Fig. 8.1 (a))
plot(Imprese$BETA-mean(Imprese$BETA),
     Imprese$CR-mean(Imprese$CR),
     xlim=c(-1.5,1.5), ylim=c(-1,1), pch=19,
     main="Rotazione degli assi fattoriali")
text(Imprese$BETA-mean(Imprese$BETA),
     Imprese$CR-mean(Imprese$CR) + 0.1,
     row.names(Imprese))
abline(h=0, col=grey(0.8))
abline(v=0, col=grey(0.8))

## aggiungiamo gli assi delle CP:
## passano per l'origine (a = 0) e la pendenza delle rette
## è data da b = a21/a11 e, risp., b = a22/a12 in (13)
abline(c(0, autovettori[2,1]/autovettori[1,1]),
       lty=2, col="red")
abline(c(0, autovettori[2,2]/autovettori[1,2]),
       lty=2, col="green3")
text(1.4, -0.8, "C1", col="red")
text(0.95, 0.95, "C2", col="green3")

```

