EJERCICIO 3.9 ANALISIS MULTIVARIANTE DANIEL PENA

library(ppcor)
Warning: package 'ppcor' was built under R version 4.4.2
Cargando paquete requerido: MASS
# Crear el DataFrame directamente desde los datos
data <- read.delim("invest.txt")

# Calcular la matriz de correlaciones parciales directamente
P <- pcor(data)$estimate

# Imprimir la matriz de correlaciones parciales
cat("Matriz de Correlaciones Parciales para invest.txt:\n")
Matriz de Correlaciones Parciales para invest.txt:
print(round(P, 2))  # Redondear a 2 decimales para legibilidad
      V1    V2    V3    V4    V5    V6    V7    V8
V1  1.00  0.04  0.50 -0.05  0.06 -0.60  0.75  0.30
V2  0.04  1.00 -0.68  0.88 -0.71 -0.66  0.44  0.82
V3  0.50 -0.68  1.00  0.82 -0.69 -0.31  0.00  0.57
V4 -0.05  0.88  0.82  1.00  0.89  0.73 -0.49 -0.89
V5  0.06 -0.71 -0.69  0.89  1.00 -0.68  0.47  0.88
V6 -0.60 -0.66 -0.31  0.73 -0.68  1.00  0.88  0.91
V7  0.75  0.44  0.00 -0.49  0.47  0.88  1.00 -0.69
V8  0.30  0.82  0.57 -0.89  0.88  0.91 -0.69  1.00
import numpy as np
import pandas as pd

# Leer los datos desde el archivo invest.txt
data = pd.read_csv("invest.txt", sep="\t")
print(data.head())
       V1      V2     V3     V4      V5      V6      V7      V8
0  815319  379851  88663  58104  255864  440134  111015  162288
1  162103   90332  35158  29802   59630   92725    6409   34349
2  105856   78811  13978  16758   55634  308926   32039   40538
3  118935   76186  13818  11253   49938  120065    9984   35792
4   91099   85037  11740  20337   41233   66087   11304   22093
# Calcular la matriz de varianzas y covarianzas (S)
S = data.cov()

# Calcular la inversa de la matriz de varianzas y covarianzas (S^-1)
S_inv = np.linalg.inv(S.values)

# Extraer los elementos diagonales de S^-1
S_inv_diag = np.diag(S_inv)

# Calcular la matriz de correlaciones parciales (P) de manera vectorizada
P = -S_inv / np.sqrt(np.outer(S_inv_diag, S_inv_diag))
np.fill_diagonal(P, 1)  # Establecer la diagonal principal en 1

# Convertir a DataFrame para formato legible
P_df = pd.DataFrame(P, columns=data.columns, index=data.columns)

# Imprimir la matriz de correlaciones parciales
print("Matriz de Correlaciones Parciales para invest.txt:")
Matriz de Correlaciones Parciales para invest.txt:
print(P_df.round(2))  # Redondear a 2 decimales para legibilidad
      V1    V2    V3    V4    V5    V6    V7    V8
V1  1.00  0.04  0.50 -0.05  0.06 -0.60  0.75  0.30
V2  0.04  1.00 -0.68  0.88 -0.71 -0.66  0.44  0.82
V3  0.50 -0.68  1.00  0.82 -0.69 -0.31  0.00  0.57
V4 -0.05  0.88  0.82  1.00  0.89  0.73 -0.49 -0.89
V5  0.06 -0.71 -0.69  0.89  1.00 -0.68  0.47  0.88
V6 -0.60 -0.66 -0.31  0.73 -0.68  1.00  0.88  0.91
V7  0.75  0.44  0.00 -0.49  0.47  0.88  1.00 -0.69
V8  0.30  0.82  0.57 -0.89  0.88  0.91 -0.69  1.00
# Crear el DataFrame directamente desde los datos
data <- read.delim("invest.txt")
# Calcular la matriz de covarianzas (S)
S <- cov(data)
# Calcular la inversa de la matriz de covarianzas (S^-1)
S_inv <- solve(S)
# Extraer los elementos diagonales de S^-1
S_inv_diag <- diag(S_inv)
# Calcular la matriz de correlaciones parciales (P) de manera vectorizada
P <- -S_inv / sqrt(tcrossprod(S_inv_diag))
diag(P) <- 1  # Establecer la diagonal principal en 1
# Asignar nombres a las filas y columnas
colnames(P) <- colnames(data)
rownames(P) <- colnames(data)
# Imprimir la matriz de correlaciones parciales
cat("Matriz de Correlaciones Parciales para invest.txt:\n")
Matriz de Correlaciones Parciales para invest.txt:
print(round(P, 2))  # Redondear a 2 decimales para legibilidad
      V1    V2    V3    V4    V5    V6    V7    V8
V1  1.00  0.04  0.50 -0.05  0.06 -0.60  0.75  0.30
V2  0.04  1.00 -0.68  0.88 -0.71 -0.66  0.44  0.82
V3  0.50 -0.68  1.00  0.82 -0.69 -0.31  0.00  0.57
V4 -0.05  0.88  0.82  1.00  0.89  0.73 -0.49 -0.89
V5  0.06 -0.71 -0.69  0.89  1.00 -0.68  0.47  0.88
V6 -0.60 -0.66 -0.31  0.73 -0.68  1.00  0.88  0.91
V7  0.75  0.44  0.00 -0.49  0.47  0.88  1.00 -0.69
V8  0.30  0.82  0.57 -0.89  0.88  0.91 -0.69  1.00