5 votos

¿Por qué la función de correlación de R, co() devuelve una matriz con menos filas que usted empezó?

Tengo una matriz de $G$ en el que me gustaría para el cálculo de la matriz de correlación de. La matriz en R parece:

> G
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]   -1    0   -1   -1    0   -1
[2,]   -1    0   -1    1    1    0
[3,]   -1    0    1   -1    0    1
[4,]   -1    0    1    1   -1    0
[5,]    1   -1    0   -1    0    1
[6,]    1   -1    0    1   -1    0
[7,]    1    1    0   -1    0   -1
[8,]    1    1    0    1    1    0

Ahora, me gustaría encontrar la matriz de correlación. Sin embargo, cuando hago uso de la función cor(), me sale lo siguiente:

> cor(G)
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    1  0.0  0.0    0  0.0  0.0
[2,]    0  1.0  0.0    0  0.5 -0.5
[3,]    0  0.0  1.0    0 -0.5  0.5
[4,]    0  0.0  0.0    1  0.0  0.0
[5,]    0  0.5 -0.5    0  1.0  0.0
[6,]    0 -0.5  0.5    0  0.0  1.0

¿Por qué fueron dos filas se omite aquí? Me estoy perdiendo algo?

18voto

ard Puntos 41

La correlación se calcula entre las columnas y no entre las filas.

La salida debe ser leído como, la correlación entre la columna-i y la columna j.

Desde que tiene 6 columnas, se obtiene un 6x6 matriz de correlación. Todos los 8 filas han sido consideradas al calcular estas correlaciones.

6voto

Antoni Parellada Puntos 2762

En el $G^TG$ operación $G^T$ $6 \times 8$ matriz, y $G$$8 \times 6$. Por lo tanto, la multiplicación de la matriz producirá un $6 \times 6$ matriz.

Frente a los comentarios y la cuestión de fondo, vamos a suponer que tenemos una matriz correspondiente a los retornos de los diferentes stocks (en las columnas) frente a los 5 años consecutivos (en las filas) - completamente ficticios poblaciones y años:

       yah(y)   gog(g)    ms(m)
Yr.1    1        8        1
Yr.2   -4        9        3
Yr.3    5       10        4
Yr.4    7        3        5
Yr.5    8        7        6

Vamos a llamar a esta matriz $A$. Queremos calcular las correlaciones entre los diferentes vectores de devoluciones, uno para cada empresa, "empaquetada" en la matriz de $A$.

La varianza-covarianza de la matriz de la cartera, asumiendo la igualdad de participaciones será:

$\Large \sigma(A) = \frac{G^TG}{n-1}$ $G$ siendo la media centrada en las observaciones y $n-1$ correspondiente al número de observaciones menos $1$.

La media de centrado (o de humillación) de la matriz $G$ es:

         yah    goog    ms
Yr.1    -2.4    0.6   -2.8
Yr.2    -7.4    1.6   -0.8
Yr.3     1.6    2.6    0.2
Yr.4     3.6   -4.4    1.2
Yr.5     4.6   -0.4    2.2

Y la varianza-covarianza de la matriz:

$$\begin{bmatrix} & y & g & m \\ y & 24.30 &-6.70 & 6.85\\ g & -6.70 & 7.30 & -2.15 \\ ms & 6.85 & -2.15 & 3.70 \\ \end{bmatrix} $$

So it went from the $5 \times 3$ $$ matrix to a $3 \times 3$ matrix.

The operations involved in calculating the correlation matrix are similar, but the data points are standardized by dividing each one by the standard deviation of the returns of each company (column vectors), right after centering the data points by subtracting the column means as in the covariance matrix:

$$\pequeño cor(A)=\tiny\frac{1}{n-1}\pequeño\begin{bmatrix} \frac{y_1 - \bar{a}}{sd(ya)} & \frac{y_2 - \bar{y}}{sd(y)} & \frac{y_3 - \bar{y}}{sd(y)} & \frac{y_4 - \bar{y}}{sd(ya)} &\frac{y_5 - \bar{y}}{sd(y)} \\ \frac{g_1 - \bar{g}}{sd(g)} & \frac{g_2 - \bar{g}}{sd(g)} & \frac{g_3 - \bar{g}}{sd(g)} & \frac{g_4 - \bar{g}} {sd(g)}& \frac{g_5 - \bar{g}}{sd(g)}\\ \frac{m_1 - \bar{m}}{sd(m)}& \frac{m_2 - \bar{m}}{sd(m)} &\frac{m_3 - \bar{m}}{sd(m)} & \frac{m_4 - \bar{m}}{sd(m)} & \frac{m_5 - \bar{m}}{sd(m)}\\ &&\color{blue} {3\times 5 \,\text{matrix}} \end{bmatrix} \begin{bmatrix} \frac{y_1 - \bar{y}}{sd(y)} & \frac{g_1 - \bar{g}}{sd(g)} & \frac{m_1 - \bar{m}}{sd(m)} \\ \frac{y_2 - \bar{y}}{sd(y)} & \frac{g_2 - \bar{g}}{sd(g)} & \frac{m_2 - \bar{m}}{sd(m)} \\ \frac{y_3 - \bar{y}}{sd(y)} &\frac{g_3 - \bar{g}}{sd(g)} & \frac{m_3 - \bar{m}}{sd(m)} \\ \frac{y_4 - \bar{y}}{sd(y)} & \frac{g_4 - \bar{go}}{sd(g)} & \frac{m_4 - \bar{m}}{sd(m)} \\ \frac{y_5 - \bar{y}}{sd(y)} & \frac{g_5 - \bar{g}}{sd(g)} & \frac{m_5 - \bar{m}}{sd(m)} \\ &\color{blue} {5\times 3 \,\text{matrix}} \end{bmatrix}$$

One more quick thing for completeness sake: We have so far a clunky matrix as the result, but in general we want to estimate the portfolio variance - 1 portfolio; 1 variance. To do that we multiply the matrix of variance-covariance of $$ to the left and to the right by the vector containing the proportions or weightings in each stock - $W$. Since we want to end up with a scalar single number, it is unsurprising that the algebra will be: $W^T\,\sigma(A)\,W$, with the vector of weights (fractions) being in this case $\color{blue}{3}\times \color{blue}{1}$ to match perfectly on the left as $W^T$, and on the right as $W$.

Código en R:

Ficticio conjunto de datos de ganancias en miles de millones, porcentaje (?) - la matriz a:

yah = c(1, - 4, 5, 7, 8)
goog = c(8, 9, 10, 3, 7)
ms = c(1, 3, 4, 5, 6)
returns <- cbind(yah, goog, ms)
row.names(returns) =c("Yr.1","Yr.2","Yr.3","Yr.4", "Yr.5")

Centrada en la matriz (G) de menosprecio devuelve:

demeaned_returns <- scale(returns, scale = F, center = T)

Manual y R de la función de cálculo de la varianza-covarianza de la matriz:

(var_cov_A = (t(demeaned_returns)%*%demeaned_returns)/(nrow(returns)-1))
cov(returns)   # the R in-built function cov() returns the same results.

Matriz de correlación de cálculo:

Tenemos que dividir por la desviación estándar de la columna-sabio:

demeaned_scaled_returns <- scale(returns, scale = T, center = T)

y, a continuación, proceder como en el anterior:

(corr_A = (t(demeaned_scaled_returns) %*% demeaned_scaled_returns)/(nrow(returns)-1))
cor(returns) # Again, the R function returns the same matrix.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X