“Tratamiento matricial”
a.-Vector de medias
b.-Matriz de covarianza
c.-matriz de correlación
d.-Medidas Globales de variabilidad
d.1. varianza total
d.2. varianza media
d.3. varianza generalizada
d.4. varianza efectiva
e.-Distancia de Mahalanobis
AnalisisMultivariado<-function(datos){
n<-nrow(datos)
n
p<-ncol(datos)
p
#vector de unos
vector.uno<-matrix(rep(1,n),ncol=1)
vector.uno
## a.- EL VECTOR DE MEDIAS(xprom) = (x'1n)/n
vector.media<-(t(datos)%*%vector.uno)/n
vector.media
## b.- Matriz de covarianza S=1/n(x'*x)-((vector.media)(vector.media)')
matriz.covarianza<-S<-cov(datos)*(n-1)/n
matriz.covarianza
#Inversa de la matriz de covarianzas
SI<-solve(S)
SI
##c.-Matriz de Correlación R=D^-1/2*S*D^-1/2
DN<-diag(c(1/sqrt(diag(S))))
DN
matriz.correlacion<-DN%*%S%*%DN
##d.-Medidas Globales de variabilidad
##d.1.-Varianza total : VT=traza(S)
VT<-sum(diag(S))
VT
##d.2.-Varianza media : VM=VT/p
VM<-VT/p
VM
##d.3.- varianza generalizada : VG = det(S)
VG<-det(S)
VG
##d.4.-Varianza efectiva : VE=[det(S)]^1/p
VE<-(det(S))^(1/p)
VE
##e.- Distancia de Mahalanobis
x<-as.matrix(datos)
media<-colMeans(datos)
matriz.media<-matrix(media,nrow = n,ncol=p,byrow = TRUE)
distm<-((x-matriz.media)%*%SI)%*%t((x-matriz.media))
cat("Tratamiento matricial", "\n" )
cat("----------------------------------------------------------------","\n")
cat("a.-Vector de media =",vector.media, "\n",
"b.-Matriz de covarianza =",matriz.covarianza, "\n",
"c.-Matriz de correlacion=",matriz.correlacion, "\n")
cat("----------------------------------------------------------------","\n")
cat("d.-Medidas globales de variabilidad","\n",
"d.1.- Varianza Total =", VT, "\n",
"d.2.- Varianza Media =",VM, "\n",
"d.3.-Varianza Generalizada=",VG, "\n",
"d.4.-Varianza Efectiva =",VE, "\n")
cat("----------------------------------------------------------------","\n")
cat("e.-Distancia de Mahalanobis",diag(distm),"\n")
}
Ejemplo: La siguiente base de datos contiene la información de una muestra de 14 cereales listos para consumo
cereal<-matrix(c(38,1,100,2,34,1,120,2,21,1.5,110,12,23,1.5,110,9,23,1.5,110,8,51,2,180,17,28,2,220,2,28,1.5,140,2,27,1.3,130,8,28,1.25,130,8,19,1.25,110,6,23,1.2,100,3,24,1.5,150,5,16,1.2,100,3),byrow =TRUE,nrow = 14)
cereal
## [,1] [,2] [,3] [,4]
## [1,] 38 1.00 100 2
## [2,] 34 1.00 120 2
## [3,] 21 1.50 110 12
## [4,] 23 1.50 110 9
## [5,] 23 1.50 110 8
## [6,] 51 2.00 180 17
## [7,] 28 2.00 220 2
## [8,] 28 1.50 140 2
## [9,] 27 1.30 130 8
## [10,] 28 1.25 130 8
## [11,] 19 1.25 110 6
## [12,] 23 1.20 100 3
## [13,] 24 1.50 150 5
## [14,] 16 1.20 100 3
AnalisisMultivariado(cereal)
## Tratamiento matricial
## ----------------------------------------------------------------
## a.-Vector de media = 27.35714 1.407143 129.2857 6.214286
## b.-Matriz de covarianza = 73.22959 0.7295918 123.8265 12.63776 0.7295918 0.08744898 8.005102 0.619898 123.8265 8.005102 1106.633 18.0102 12.63776 0.619898 18.0102 18.59694
## c.-Matriz de correlacion= 1 0.2883097 0.4349794 0.3424569 0.2883097 1 0.8137439 0.4860961 0.4349794 0.8137439 1 0.1255441 0.3424569 0.4860961 0.1255441 1
## ----------------------------------------------------------------
## d.-Medidas globales de variabilidad
## d.1.- Varianza Total = 1198.547
## d.2.- Varianza Media = 299.6367
## d.3.-Varianza Generalizada= 13617.42
## d.4.-Varianza Efectiva = 10.80248
## ----------------------------------------------------------------
## e.-Distancia de Mahalanobis 6.535034 4.568847 3.495424 2.21943 2.513294 10.84709 10.03363 3.001701 2.559174 3.791498 1.497059 1.724615 1.19491 2.01829
“Test de normalidad multivariada”
a.-Asimetria Multivariada
b.-Kurtosis Multivariada
c.-Test de mardia:
c.1.-TAM(asimetria): muestras grandes y muestras pequeñas
c.2.-TKM(Kurtosis)
TestdeNormalidadMultivariado<-function(datos){
n<-nrow(datos)
k<-ncol(datos)
x<-as.matrix(datos)
media<-colMeans(datos)
matriz.media<-matrix(media,nrow=n,ncol=k,byrow=TRUE)
S<-cov(datos)*(n-1)/n #Matriz de covarianzas
SI<-solve(S) #Inversa de la matriz de covarianzas
distm<-((x-matriz.media)%*%SI)%*%t((x-matriz.media)) #Distancia de Mahalanobis
gl<-k*(k+1)*(k+2)/6
# Medida de Asimetría Multivariada
AMp<-sum(distm^3)/n^2
if (n<30){
# Test Multivariado de Asimetría de Mardia - "Muestras Pequeñas"
c<-(n+1)*(n+3)*(k+1)/(n*((n+1)*(k+1)-6))
TAM<-n*c/6*AMp
valor_p1<-pchisq(TAM,gl,lower.tail = FALSE)
} else {
# Test Multivariado de Asimetríia de Mardia - "Muestras grandes"
TAM<-n/6*AMp
valor_p1<-pchisq(TAM,gl,lower.tail = FALSE)
}
#Medida de Kurtosis Multivariado
KMp<-sum((diag(distm))^2)/n
#Test Multivariado de Kurtosis de Mardia
TKM<-(KMp-k*(k+2))*sqrt(n/(8*k*(k+2)))
TKM2<-TKM^2
valor_p2<-pchisq(TKM2,1,lower.tail = FALSE)
if (valor_p1<0.05){
test1 <- "No Normalidad multivariado"
} else {
test1 <- "Normalidad multivariado "
}
if (valor_p2<0.05){
test2 <- "No Normalidad multivariado"
} else {
test2 <- "Normalidad multivariado"
}
df<-data.frame(Prueba=c("Prueba de Asimetría","Prueba de Curtosis "),Medida=c(AMp,KMp),Test_Mardia=c(TAM,TKM2),valor_p=c(valor_p1,valor_p2),Conclusión=c(test1,test2))
df
}
Ejemplo: Evaluamos la normalidad de las variables en conjunto de la base de datos “Cereal”
TestdeNormalidadMultivariado(cereal)
## Prueba Medida Test_Mardia valor_p
## 1 Prueba de Asimetría 12.68187 39.05648611 0.006560378
## 2 Prueba de Curtosis 24.71618 0.03740018 0.846652566
## Conclusión
## 1 No Normalidad multivariado
## 2 Normalidad multivariado