###################INTRODUCCIÓN AL CURSO##################
###########VECTORES###############
a=c(1,2,3,4);a #Crear e imprime un vector fila
## [1] 1 2 3 4
length(a) #Busca el largo de un vector, el número de elementos
## [1] 4
dim(a) #mide dimensiones solo objetos no vectores
## NULL
#modulo de un vector
a[2] #Imprime el elemento mencionado dentro de un vector
## [1] 2
sqrt(a[4]) #Función sqrt()me saca la raíz cuadrada del elemento número 4 del vector a
## [1] 2
mod=sqrt(a[1]^2+a[2]^2+a[3]^2+a[4]^2);mod # la función mod imprime el valor de modulo del vector a
## [1] 5.477226
class(a) #Función class() indica el tipo de vector
## [1] "numeric"
j=c("anegamiento","sequia","normal");j #Dentro de un vector no solo hay números...
## [1] "anegamiento" "sequia" "normal"
class(j) #También caracteres como estados hídricos de una planta
## [1] "character"
h=c(50,25,10,"nada");h #Se pueden combinar tanto caracteres como números
## [1] "50" "25" "10" "nada"
class(h) # dando como resultado una vector de tipo caracter
## [1] "character"
k=c(45,45,25,NA);k #NA me indica dato faltante
## [1] 45 45 25 NA
length(k) # R no ignora NA también lo cuenta
## [1] 4
t=c(T,T,T,T,T,F,T,F,F);t #Un vector también es de tipo lógico como el que se observa aquí
## [1] TRUE TRUE TRUE TRUE TRUE FALSE TRUE FALSE FALSE
class(t)
## [1] "logical"
##########Operaciones con vectores#########
ta=t(a);ta #función t() transpone un vector de fila a columna
## [,1] [,2] [,3] [,4]
## [1,] 1 2 3 4
a #Vector original
## [1] 1 2 3 4
l=5*a;l #multiplicación de un numero (escalar) por un vector
## [1] 5 10 15 20
f=a+k;f #Suma de dos vectores, uno con un dato faltante
## [1] 46 47 28 NA
b=c(5,3,6,8,3);b #vector con 5 elementos
## [1] 5 3 6 8 3
a+b #suma de vectores que no son multiplos, por lo tanto aparece mensaje de advertencia
## Warning in a + b: longitud de objeto mayor no es múltiplo de la longitud de
## uno menor
## [1] 6 5 9 12 4
g=c(2,6,3,2,3,6,8,2);g #Vector de 8 elementos
## [1] 2 6 3 2 3 6 8 2
g+a #Para la suma deben ser multiplos en este caso a tiene 4 elementos y g 8
## [1] 3 8 6 6 4 8 11 6
##########multiplicación producto punto o producto escalar#############
r=c(2,6,5);r
## [1] 2 6 5
m=c(7,6,9);m
## [1] 7 6 9
m*r #multiplicación elemental
## [1] 14 36 45
m%*%r #multiplicación punto debe ponerse así: %*% para realizar una multiplicación punto
## [,1]
## [1,] 95
r%*%m
## [,1]
## [1,] 95
###Tipos de vectores####
vv=c();vv #Vector vacío
## NULL
nulo10=c(0,0,0,0,0,0,0,0,0,0,0,0);nulo10 # Vector nulo, conformado solo por ceros
## [1] 0 0 0 0 0 0 0 0 0 0 0 0
rep(0,15) #Función rep(X,N) me repite el elemento x un número de veces N
## [1] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
rep(1,400)
## [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [36] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [71] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [106] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [141] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [176] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [211] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [246] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [281] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [316] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [351] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [386] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
rep("locu",20) #también repite caracteres
## [1] "locu" "locu" "locu" "locu" "locu" "locu" "locu" "locu" "locu" "locu"
## [11] "locu" "locu" "locu" "locu" "locu" "locu" "locu" "locu" "locu" "locu"
logico=rep(T,100) # Un vector lógico también es posible con esta herramienta
######Ejercicio########
pH=c(7,5,3.5,4.5);pH
## [1] 7.0 5.0 3.5 4.5
MO=c(2,3,2.5,5);MO
## [1] 2.0 3.0 2.5 5.0
cor(pH,MO)#correlación de person, valores cercanos a 0 indican baja correlación, cercanos a uno alta correlación
## [1] -0.3874778
#####Correlación mediante método geométrico##########
uv=pH%*%MO;uv
## [,1]
## [1,] 60.25
modu=sqrt(pH[1]^2+pH[2]^2+pH[3]^2+pH[4]^2)
modv=sqrt(MO[1]^2+MO[2]^2+MO[3]^2+MO[4]^2)
cosphi=uv/(modu*modv)
angulo=acos(cosphi);angulo #Angulo en radianes
## [,1]
## [1,] 0.4998414
gradoss=(angulo*180)/pi;gradoss #Angulo en grados
## [,1]
## [1,] 28.6388
#######Datos al azar###########
CIC= rnorm(n=50,mean=3.5, sd=0.5); CIC #Crea datos al azar rnorm(X,y,z) donde tiene x elementos, media de y y desviación estandar de z
## [1] 3.599878 2.977636 3.059023 2.502675 2.728850 2.066926 3.429791
## [8] 3.239371 2.697423 3.202772 3.213005 3.034543 3.799453 3.402549
## [15] 3.876696 3.652850 2.772795 4.242985 2.903151 3.856998 3.216821
## [22] 3.654259 2.743202 4.274792 3.889871 3.739221 4.545080 3.742945
## [29] 3.876581 3.047164 3.284316 3.701279 3.199925 3.376197 3.962539
## [36] 3.126117 3.214881 3.790191 4.572474 3.214489 2.875154 3.432953
## [43] 3.014869 4.041811 3.937999 2.996678 3.719997 2.852535 4.130175
## [50] 3.488529
modulo=norm(CIC,type = "2");modulo #obtengo el valor de modulo del vector o magnitud
## [1] 24.45756
round(CIC, 3) #redondea a tres decimales
## [1] 3.600 2.978 3.059 2.503 2.729 2.067 3.430 3.239 2.697 3.203 3.213
## [12] 3.035 3.799 3.403 3.877 3.653 2.773 4.243 2.903 3.857 3.217 3.654
## [23] 2.743 4.275 3.890 3.739 4.545 3.743 3.877 3.047 3.284 3.701 3.200
## [34] 3.376 3.963 3.126 3.215 3.790 4.572 3.214 2.875 3.433 3.015 4.042
## [45] 3.938 2.997 3.720 2.853 4.130 3.489
floor( x = CIC) #redondee al menor
## [1] 3 2 3 2 2 2 3 3 2 3 3 3 3 3 3 3 2 4 2 3 3 3 2 4 3 3 4 3 3 3 3 3 3 3 3
## [36] 3 3 3 4 3 2 3 3 4 3 2 3 2 4 3
ceiling(CIC) #redondea al máximo
## [1] 4 3 4 3 3 3 4 4 3 4 4 4 4 4 4 4 3 5 3 4 4 4 3 5 4 4 5 4 4 4 4 4 4 4 4
## [36] 4 4 4 5 4 3 4 4 5 4 3 4 3 5 4
###################Matrices####################
A= matrix(c(1,5,5,6,9,8,2,6,9), nrow = 3,ncol =3, byrow = F);A #Función matrix()me construye matriz con nvol columnas y nrow filas
## [,1] [,2] [,3]
## [1,] 1 6 2
## [2,] 5 9 6
## [3,] 5 8 9
B= matrix(seq(1,16),nrow = 4);B ##También se puede construir a través de una secuencia
## [,1] [,2] [,3] [,4]
## [1,] 1 5 9 13
## [2,] 2 6 10 14
## [3,] 3 7 11 15
## [4,] 4 8 12 16
Z= matrix(seq(2,24,by = 2),nrow = 3,byrow = T);Z #matriz con secuencia de los números del 2 al 24, solo numeros pares, con la opción by que me salta cada X números
## [,1] [,2] [,3] [,4]
## [1,] 2 4 6 8
## [2,] 10 12 14 16
## [3,] 18 20 22 24
E= matrix(rep(0,100),nrow = 10,ncol = 10);E #matriz nula diferente a vacía
## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
## [1,] 0 0 0 0 0 0 0 0 0 0
## [2,] 0 0 0 0 0 0 0 0 0 0
## [3,] 0 0 0 0 0 0 0 0 0 0
## [4,] 0 0 0 0 0 0 0 0 0 0
## [5,] 0 0 0 0 0 0 0 0 0 0
## [6,] 0 0 0 0 0 0 0 0 0 0
## [7,] 0 0 0 0 0 0 0 0 0 0
## [8,] 0 0 0 0 0 0 0 0 0 0
## [9,] 0 0 0 0 0 0 0 0 0 0
## [10,] 0 0 0 0 0 0 0 0 0 0
V=matrix(nrow = 10,ncol = 10);V #Matriz vacía
## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
## [1,] NA NA NA NA NA NA NA NA NA NA
## [2,] NA NA NA NA NA NA NA NA NA NA
## [3,] NA NA NA NA NA NA NA NA NA NA
## [4,] NA NA NA NA NA NA NA NA NA NA
## [5,] NA NA NA NA NA NA NA NA NA NA
## [6,] NA NA NA NA NA NA NA NA NA NA
## [7,] NA NA NA NA NA NA NA NA NA NA
## [8,] NA NA NA NA NA NA NA NA NA NA
## [9,] NA NA NA NA NA NA NA NA NA NA
## [10,] NA NA NA NA NA NA NA NA NA NA
H= diag(1,nrow = 6,ncol = 6);H #matriz identidad con la función diag() que introduce una diagonal de 1 en la matriz
## [,1] [,2] [,3] [,4] [,5] [,6]
## [1,] 1 0 0 0 0 0
## [2,] 0 1 0 0 0 0
## [3,] 0 0 1 0 0 0
## [4,] 0 0 0 1 0 0
## [5,] 0 0 0 0 1 0
## [6,] 0 0 0 0 0 1
diag(H) #Esta función también saca los números ubicados en la diagonal
## [1] 1 1 1 1 1 1
#############Ejemplo#######
N= rnorm(30,5,1)
P= rnorm(30,1.5,0.2)
K= rnorm(30,4,0.8)
NPK=cbind(N,P,K);NPK #Función cbind() une y copila de forma ordenada por columnas cada uno de los vectores formado una matriz de datos
## N P K
## [1,] 4.564759 1.6269043 4.798373
## [2,] 5.916980 1.5717781 3.337617
## [3,] 3.978523 1.7460241 3.740344
## [4,] 5.704596 1.2785122 2.862655
## [5,] 5.462167 1.4636787 5.129172
## [6,] 5.374389 1.2601585 4.247484
## [7,] 5.496772 1.9050589 4.265976
## [8,] 3.844052 1.3241108 4.063195
## [9,] 4.389709 1.5698503 3.275336
## [10,] 5.419093 1.6192323 4.973540
## [11,] 5.323825 1.3489330 4.612333
## [12,] 4.920945 1.3282945 4.853220
## [13,] 5.265882 1.7824818 5.109989
## [14,] 2.983209 1.3083197 4.210742
## [15,] 5.637924 0.9386543 3.694885
## [16,] 5.142451 1.4253799 3.233526
## [17,] 5.093422 1.1762800 3.079726
## [18,] 5.648464 1.6796145 4.635383
## [19,] 4.369875 1.4144767 6.071356
## [20,] 4.364606 1.4662102 4.029132
## [21,] 5.577145 1.6788821 4.069076
## [22,] 3.942420 1.2574001 3.660839
## [23,] 3.932130 1.4401534 3.656481
## [24,] 4.984469 1.5095023 4.383844
## [25,] 4.323656 1.5923500 4.570673
## [26,] 5.543718 1.5412885 2.603789
## [27,] 5.638328 1.4062199 5.195632
## [28,] 4.386236 1.6778890 2.841651
## [29,] 4.832677 1.2876322 3.557853
## [30,] 5.437690 1.5631919 3.752074
dim(NPK) #Al ser ya un objeto me indica el tamaño de la matriz
## [1] 30 3
NPKr=rbind(N,P,K);NPKr ###matriz traspuesta
## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
## N 4.564759 5.916980 3.978523 5.704596 5.462167 5.374389 5.496772 3.844052
## P 1.626904 1.571778 1.746024 1.278512 1.463679 1.260158 1.905059 1.324111
## K 4.798373 3.337617 3.740344 2.862655 5.129172 4.247484 4.265976 4.063195
## [,9] [,10] [,11] [,12] [,13] [,14] [,15] [,16]
## N 4.389709 5.419093 5.323825 4.920945 5.265882 2.983209 5.6379243 5.142451
## P 1.569850 1.619232 1.348933 1.328294 1.782482 1.308320 0.9386543 1.425380
## K 3.275336 4.973540 4.612333 4.853220 5.109989 4.210742 3.6948847 3.233526
## [,17] [,18] [,19] [,20] [,21] [,22] [,23] [,24]
## N 5.093422 5.648464 4.369875 4.364606 5.577145 3.942420 3.932130 4.984469
## P 1.176280 1.679614 1.414477 1.466210 1.678882 1.257400 1.440153 1.509502
## K 3.079726 4.635383 6.071356 4.029132 4.069076 3.660839 3.656481 4.383844
## [,25] [,26] [,27] [,28] [,29] [,30]
## N 4.323656 5.543718 5.638328 4.386236 4.832677 5.437690
## P 1.592350 1.541288 1.406220 1.677889 1.287632 1.563192
## K 4.570673 2.603789 5.195632 2.841651 3.557853 3.752074
colMeans(NPK) #imprime los valores de media por columna
## N P K
## 4.916670 1.472949 4.083863
rowMeans(NPKr) #imprime los valores de media por fila
## N P K
## 4.916670 1.472949 4.083863
colnames(NPK)=c("NO3","PO4","K");NPK #Etiqueta las columnas
## NO3 PO4 K
## [1,] 4.564759 1.6269043 4.798373
## [2,] 5.916980 1.5717781 3.337617
## [3,] 3.978523 1.7460241 3.740344
## [4,] 5.704596 1.2785122 2.862655
## [5,] 5.462167 1.4636787 5.129172
## [6,] 5.374389 1.2601585 4.247484
## [7,] 5.496772 1.9050589 4.265976
## [8,] 3.844052 1.3241108 4.063195
## [9,] 4.389709 1.5698503 3.275336
## [10,] 5.419093 1.6192323 4.973540
## [11,] 5.323825 1.3489330 4.612333
## [12,] 4.920945 1.3282945 4.853220
## [13,] 5.265882 1.7824818 5.109989
## [14,] 2.983209 1.3083197 4.210742
## [15,] 5.637924 0.9386543 3.694885
## [16,] 5.142451 1.4253799 3.233526
## [17,] 5.093422 1.1762800 3.079726
## [18,] 5.648464 1.6796145 4.635383
## [19,] 4.369875 1.4144767 6.071356
## [20,] 4.364606 1.4662102 4.029132
## [21,] 5.577145 1.6788821 4.069076
## [22,] 3.942420 1.2574001 3.660839
## [23,] 3.932130 1.4401534 3.656481
## [24,] 4.984469 1.5095023 4.383844
## [25,] 4.323656 1.5923500 4.570673
## [26,] 5.543718 1.5412885 2.603789
## [27,] 5.638328 1.4062199 5.195632
## [28,] 4.386236 1.6778890 2.841651
## [29,] 4.832677 1.2876322 3.557853
## [30,] 5.437690 1.5631919 3.752074
rownames(NPKr)=c("NO3","PO4","K"); NPKr #Etiqueta filas
## [,1] [,2] [,3] [,4] [,5] [,6] [,7]
## NO3 4.564759 5.916980 3.978523 5.704596 5.462167 5.374389 5.496772
## PO4 1.626904 1.571778 1.746024 1.278512 1.463679 1.260158 1.905059
## K 4.798373 3.337617 3.740344 2.862655 5.129172 4.247484 4.265976
## [,8] [,9] [,10] [,11] [,12] [,13] [,14]
## NO3 3.844052 4.389709 5.419093 5.323825 4.920945 5.265882 2.983209
## PO4 1.324111 1.569850 1.619232 1.348933 1.328294 1.782482 1.308320
## K 4.063195 3.275336 4.973540 4.612333 4.853220 5.109989 4.210742
## [,15] [,16] [,17] [,18] [,19] [,20] [,21]
## NO3 5.6379243 5.142451 5.093422 5.648464 4.369875 4.364606 5.577145
## PO4 0.9386543 1.425380 1.176280 1.679614 1.414477 1.466210 1.678882
## K 3.6948847 3.233526 3.079726 4.635383 6.071356 4.029132 4.069076
## [,22] [,23] [,24] [,25] [,26] [,27] [,28]
## NO3 3.942420 3.932130 4.984469 4.323656 5.543718 5.638328 4.386236
## PO4 1.257400 1.440153 1.509502 1.592350 1.541288 1.406220 1.677889
## K 3.660839 3.656481 4.383844 4.570673 2.603789 5.195632 2.841651
## [,29] [,30]
## NO3 4.832677 5.437690
## PO4 1.287632 1.563192
## K 3.557853 3.752074
#####matriz de correlaciones de pearson
cor(NPK) #Muestra la correlación entre nutrientes gracias a la función cor()
## NO3 PO4 K
## NO3 1.000000000 0.07898574 -0.000241065
## PO4 0.078985742 1.00000000 0.153078990
## K -0.000241065 0.15307899 1.000000000
t(cor(NPK)) #Al trasponer esta matriz se obtiene la misma
## NO3 PO4 K
## NO3 1.000000000 0.07898574 -0.000241065
## PO4 0.078985742 1.00000000 0.153078990
## K -0.000241065 0.15307899 1.000000000
##matriz de varianzas y covarianzas
covarianza=cov(NPK);covarianza #Valores de la diagonal corresponden a varianzas por elemento
## NO3 PO4 K
## NO3 0.5207646744 0.01164852 -0.0001422862
## PO4 0.0116485245 0.04176408 0.0255873252
## K -0.0001422862 0.02558733 0.6689839299
diag(covarianza) #Extrae las varianzas de la matriz
## NO3 PO4 K
## 0.52076467 0.04176408 0.66898393
covv=diag(diag(covarianza));covv #Crea matriz con valores en diagonal de varianzas y demás cero
## [,1] [,2] [,3]
## [1,] 0.5207647 0.00000000 0.0000000
## [2,] 0.0000000 0.04176408 0.0000000
## [3,] 0.0000000 0.00000000 0.6689839
restmat=covarianza-covv;restmat # creo matriz mediante resta con valores en triangulo superior e inferor de correlaciones
## NO3 PO4 K
## NO3 0.0000000000 0.01164852 -0.0001422862
## PO4 0.0116485245 0.00000000 0.0255873252
## K -0.0001422862 0.02558733 0.0000000000
lower.tri(restmat) #identification triangulo inferior
## [,1] [,2] [,3]
## [1,] FALSE FALSE FALSE
## [2,] TRUE FALSE FALSE
## [3,] TRUE TRUE FALSE
extraer=restmat[lower.tri(restmat)];extraer #Extrae valores del triángulo inferior correspondiente a valores de correlación entre nutrientes
## [1] 0.0116485245 -0.0001422862 0.0255873252
list(covNP=extraer[1],covNK=extraer[2],covPK=extraer[3]) ###nombro las variables extraídas
## $covNP
## [1] 0.01164852
##
## $covNK
## [1] -0.0001422862
##
## $covPK
## [1] 0.02558733
#####suma de matrices
M1= matrix(c(1:4),nrow = 2,ncol = 2);M1
## [,1] [,2]
## [1,] 1 3
## [2,] 2 4
M2= matrix(c(4:1),2,2);M2
## [,1] [,2]
## [1,] 4 2
## [2,] 3 1
M1+M2 #suma simple, si conmutatividad
## [,1] [,2]
## [1,] 5 5
## [2,] 5 5
M1+3*M2 #suma variable más la multiplicación simple de otra por un escalar
## [,1] [,2]
## [1,] 13 9
## [2,] 11 7
M1%*%M2 #suma producto punto
## [,1] [,2]
## [1,] 13 5
## [2,] 20 8
M2%*%M1 #No conmutatividad
## [,1] [,2]
## [1,] 8 20
## [2,] 5 13
M2%*%t(M2) #Multiplicación por su inversa
## [,1] [,2]
## [1,] 20 14
## [2,] 14 10
M3= matrix(c(16:31),4,4);M3 #no hay coersion, tienen que ser del mismo tamaño
## [,1] [,2] [,3] [,4]
## [1,] 16 20 24 28
## [2,] 17 21 25 29
## [3,] 18 22 26 30
## [4,] 19 23 27 31
v1= c(2,3)
M2%*%v1 ## al multiplicar un vector con matriz se debe hacer con porcentaje o se hace duplicidad por omisión
## [,1]
## [1,] 14
## [2,] 9
library(psych) # Se instaló la librería para utilizar la función tr()
tr(M1) ## suma de la diagonal, función tr() sirve para sacar las varianzas totales
## [1] 5
Mxy= matrix(c(-1,3,5,-2),2,2);Mxy #se requiere solucionar el sistema de ecuaciones
## [,1] [,2]
## [1,] -1 5
## [2,] 3 -2
sol= solve(Mxy)%*%c(4,1);sol ### solve(), me sacó la inversa de la matriz la cual se multiplica con la otra parte de la igualdad 4 y 1
## [,1]
## [1,] 1
## [2,] 1
xy= list(x=sol[1],y=sol[2]);xy #me genera la lista donde indica a que equivale cada incógnita
## $x
## [1] 1
##
## $y
## [1] 1
######ejemplo de matrices sin inversa####
M8= matrix(rep(1,4),2,2);M8 #matriz unitaria
## [,1] [,2]
## [1,] 1 1
## [2,] 1 1
#solve(M8) #no tiene inversa error
set.seed(123) #Función que me permite establecer una semilla para que todos los datos generados al azar sean iguales
Mo2= rnorm(10,2.5,0.4);Mo2 #generamos datos al azar de Materia orgánica
## [1] 2.275810 2.407929 3.123483 2.528203 2.551715 3.186026 2.684366
## [8] 1.993976 2.225259 2.321735
CO= 0.58*Mo2;CO #creamos datos dependientes de la MO para establecer valores de CO los cuales estan directamente relacionados
## [1] 1.319970 1.396599 1.811620 1.466358 1.479995 1.847895 1.556933
## [8] 1.156506 1.290650 1.346606
X1= cbind(Mo2,CO);X1
## Mo2 CO
## [1,] 2.275810 1.319970
## [2,] 2.407929 1.396599
## [3,] 3.123483 1.811620
## [4,] 2.528203 1.466358
## [5,] 2.551715 1.479995
## [6,] 3.186026 1.847895
## [7,] 2.684366 1.556933
## [8,] 1.993976 1.156506
## [9,] 2.225259 1.290650
## [10,] 2.321735 1.346606
var(X1)
## Mo2 CO
## Mo2 0.14555264 0.08442053
## CO 0.08442053 0.04896391
#solve(var(X1)) # Error: al hacer combinación lineal no hay matriz inversa
A= rnorm(10,0.5,0.1)
Ar= rnorm(10,0.2,0.05)
Limo= 1-(Ar+A)
textura= cbind(A,Ar,Limo) # datos composicionales, suman un constante
rowSums(textura)
## [1] 1 1 1 1 1 1 1 1 1 1
var(textura)
## A Ar Limo
## A 0.010775964 -0.002740998 -0.008034965
## Ar -0.002740998 0.002166014 0.000574984
## Limo -0.008034965 0.000574984 0.007459981
#solve(var(textura)) ### error por datos composicionales