polucion <- read.table("R/visualizacion/practica 1/datos_practica_1/data-usair.txt", header=TRUE)
rownames(polucion) <- polucion$City
polucion <- polucion %>% select(-c("SO2", "City"))
polucion

Dias son precipitaciones al año Precip: precipitacon media anual en
pulgadas
Wind: velocidad
Manuf: canitdad de empresas Pop: Population
resultado <- prcomp(polucion, center = TRUE, scale. = TRUE)
resultado
Standard deviations (1, .., p=6):
[1] 1.4819456 1.2247218 1.1809526 0.8719099 0.3384829 0.1855998
Rotation (n x k) = (6 x 6):
PC1 PC2 PC3 PC4 PC5 PC6
Temp -0.32964613 -0.1275974 -0.67168611 0.30645728 0.55805638 -0.13618780
Manuf 0.61154243 -0.1680577 -0.27288633 -0.13684076 -0.10204211 -0.70297051
Pop 0.57782195 -0.2224533 -0.35037413 -0.07248126 0.07806551 0.69464131
Wind 0.35383877 0.1307915 0.29725334 0.86942583 0.11326688 -0.02452501
Precip -0.04080701 0.6228578 -0.50456294 0.17114826 -0.56818342 0.06062222
Days 0.23791593 0.7077653 0.09308852 -0.31130693 0.58000387 -0.02196062


Pareciera que en este caso necesito la tercer componente,
cumsum(resultado$sdev) / sum (resultado$sdev)
[1] 0.2804796 0.5122759 0.7357882 0.9008098 0.9648726 1.0000000
Osea necesito 3 components para el 70% y 40 para el 90%.
El ejercicio pretende que pensemos si hacer PCA sobre la matriz de
covarianza o la de correlacion, en realidad al standarizar es lo mismo.
El unico caso donde podemos no estandarizar es si las variables estan en
la misma escala y nos importan las varianzas. Es decir, que mas varianza
pueda afectar mas el resultado.
Componentes principales: miro su covarianza con las variables
originales (recordemos componente distinto de direccion principal).
Componente es una vez proyectado

La primer componente contrapone Temperatura con Manuf, Pop y Wind La
segunda tiene una influencia positiva de las variables de precipitacion
y negativa de todo lo otro. La tercera se ve influenciada negativamente
por precipitacion y temperatura y positivamente por el viento.
Siempre recordemos esta intepretacion es siempre relativa al promedio
de las variables.
library(factoextra)
fviz_pca_biplot(
resultado,
axes = c(1,2),
repel = TRUE, # evita solapamiento de etiquetas
legend.title = list(fill = "Observ./Var.")
) +
ggtitle("Biplot") +
theme_minimal()

library(factoextra)
fviz_pca_biplot(
resultado,
axes = c(2, 3),
repel = TRUE, # evita solapamiento de etiquetas
legend.title = list(fill = "Observ./Var.")
) +
ggtitle("Biplot") +
theme_minimal()

Reconstruccion de las variables originales
proyectar <- function(resultado, k, ciudad) {
a <- t(resultado$rotation[,1:k])
b <- t(as.matrix(polucion[ciudad,]))
a%*% b
}
pr <- proyectar(resultado, 2, "Buffalo")
reconstruir <- function(resultado, proyectado, k) {
resultado$rotation[,1:k] %*% proyectado
}
error_reconstruccion <- function(resultado, k, ciudad) {
norm(reconstruir(resultado, proyectar(resultado, k, ciudad), k) - t( as.matrix(polucion[ciudad,])))
}
error_reconstruccion(resultado, 2, "Buffalo")
[1] 738.3217
error_reconstruccion(resultado, 3, "Buffalo")
[1] 328.5152
error_reconstruccion(resultado, 4, "Buffalo")
[1] 243.8951
error_reconstruccion(resultado, 5, "Buffalo")
[1] 63.31033
Una extrema:
ciudad <- "Phoenix"
error_reconstruccion(resultado, 2, ciudad)
[1] 858.4979
error_reconstruccion(resultado, 3, ciudad)
[1] 500.6273
error_reconstruccion(resultado, 4, ciudad)
[1] 443.1274
error_reconstruccion(resultado, 5, ciudad)
[1] 401.1431
Una promedio
ciudad <- "Cincinnati"
error_reconstruccion(resultado, 2, ciudad)
[1] 785.5298
error_reconstruccion(resultado, 3, ciudad)
[1] 254.251
error_reconstruccion(resultado, 4, ciudad)
[1] 150.3578
error_reconstruccion(resultado, 5, ciudad)
[1] 29.79927
rownames(polucion) %>% purrr::map_vec(function(ciudad) error_reconstruccion(resultado, 2, ciudad)) %>% var()
[1] 638187.9

rownames(polucion) %>% purrr::map_vec(function(ciudad) error_reconstruccion(resultado, 3, ciudad)) %>% var()
[1] 53397.83

rownames(polucion) %>% purrr::map_vec(function(ciudad) error_reconstruccion(resultado, 4, ciudad)) %>% var()
[1] 13752.1

LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKYGBge3J9CnBvbHVjaW9uIDwtIHJlYWQudGFibGUoIlIvdmlzdWFsaXphY2lvbi9wcmFjdGljYSAxL2RhdG9zX3ByYWN0aWNhXzEvZGF0YS11c2Fpci50eHQiLCBoZWFkZXI9VFJVRSkKcm93bmFtZXMocG9sdWNpb24pIDwtIHBvbHVjaW9uJENpdHkKcG9sdWNpb24gPC0gcG9sdWNpb24gJT4lIHNlbGVjdCgtYygiU08yIiwgIkNpdHkiKSkKCnBvbHVjaW9uIApgYGAKYGBge3J9CmNvcnJwbG90Ojpjb3JycGxvdChjb3IocG9sdWNpb24pKQpgYGAKRGlhcyBzb24gcHJlY2lwaXRhY2lvbmVzIGFsIGHDsW8KUHJlY2lwOiBwcmVjaXBpdGFjb24gbWVkaWEgYW51YWwgZW4gcHVsZ2FkYXMKCldpbmQ6IHZlbG9jaWRhZAoKTWFudWY6IGNhbml0ZGFkIGRlIGVtcHJlc2FzClBvcDogUG9wdWxhdGlvbgoKCmBgYHtyfQoKcmVzdWx0YWRvIDwtIHByY29tcChwb2x1Y2lvbiwgY2VudGVyID0gVFJVRSwgc2NhbGUuID0gVFJVRSkKcmVzdWx0YWRvIApgYGAKYGBge3J9CmZ2aXpfZWlnKHJlc3VsdGFkbyxjaG9pY2U9InZhcmlhbmNlIikgCgpgYGAKYGBge3J9CmZ2aXpfcGNhX3ZhcihyZXN1bHRhZG8sIGNvbC52YXIgPSAic3RlZWxibHVlIikKCmBgYAoKClBhcmVjaWVyYSBxdWUgZW4gZXN0ZSBjYXNvIG5lY2VzaXRvIGxhIHRlcmNlciBjb21wb25lbnRlLApgYGB7cn0KY3Vtc3VtKHJlc3VsdGFkbyRzZGV2KSAvIHN1bSAocmVzdWx0YWRvJHNkZXYpCmBgYAoKT3NlYSBuZWNlc2l0byAzIGNvbXBvbmVudHMgcGFyYSBlbCA3MCUgeSA0MCBwYXJhIGVsIDkwJS4KCkVsIGVqZXJjaWNpbyBwcmV0ZW5kZSBxdWUgcGVuc2Vtb3Mgc2kgaGFjZXIgUENBIHNvYnJlIGxhIG1hdHJpeiBkZSBjb3ZhcmlhbnphIG8gbGEgZGUgY29ycmVsYWNpb24sIGVuIHJlYWxpZGFkIGFsIHN0YW5kYXJpemFyIGVzIGxvIG1pc21vLiBFbCB1bmljbyBjYXNvIGRvbmRlIHBvZGVtb3Mgbm8gZXN0YW5kYXJpemFyIGVzIHNpIGxhcyB2YXJpYWJsZXMgZXN0YW4gZW4gbGEgbWlzbWEgZXNjYWxhIHkgbm9zIGltcG9ydGFuIGxhcyB2YXJpYW56YXMuIEVzIGRlY2lyLCBxdWUgbWFzIHZhcmlhbnphIHB1ZWRhIGFmZWN0YXIgbWFzIGVsIHJlc3VsdGFkby4KCkNvbXBvbmVudGVzIHByaW5jaXBhbGVzOiBtaXJvIHN1IGNvdmFyaWFuemEgY29uIGxhcyB2YXJpYWJsZXMgb3JpZ2luYWxlcyAocmVjb3JkZW1vcwpjb21wb25lbnRlIGRpc3RpbnRvIGRlIGRpcmVjY2lvbiBwcmluY2lwYWwpLiBDb21wb25lbnRlIGVzIHVuYSB2ZXogcHJveWVjdGFkbwpgYGB7cn0KCmNvcnJwbG90Ojpjb3JycGxvdChjb3IocmVzdWx0YWRvJHgscG9sdWNpb24pKQoKYGBgCgpMYSBwcmltZXIgY29tcG9uZW50ZSBjb250cmFwb25lIFRlbXBlcmF0dXJhIGNvbiBNYW51ZiwgUG9wIHkgV2luZApMYSBzZWd1bmRhIHRpZW5lIHVuYSBpbmZsdWVuY2lhIHBvc2l0aXZhIGRlIGxhcyB2YXJpYWJsZXMgZGUgcHJlY2lwaXRhY2lvbiB5IG5lZ2F0aXZhIGRlIHRvZG8gbG8gb3Ryby4KTGEgdGVyY2VyYSBzZSB2ZSBpbmZsdWVuY2lhZGEgbmVnYXRpdmFtZW50ZSBwb3IgcHJlY2lwaXRhY2lvbiB5IHRlbXBlcmF0dXJhIHkgcG9zaXRpdmFtZW50ZSBwb3IgZWwgdmllbnRvLgoKU2llbXByZSByZWNvcmRlbW9zIGVzdGEgaW50ZXByZXRhY2lvbiBlcyBzaWVtcHJlIHJlbGF0aXZhIGFsIHByb21lZGlvIGRlIGxhcyB2YXJpYWJsZXMuCgoKYGBge3J9CmxpYnJhcnkoZmFjdG9leHRyYSkKZnZpel9wY2FfYmlwbG90KAogIHJlc3VsdGFkbywKIGF4ZXMgPSBjKDEsMiksCiAgcmVwZWwgICAgPSBUUlVFLCAgICAgICAgICAjIGV2aXRhIHNvbGFwYW1pZW50byBkZSBldGlxdWV0YXMKICBsZWdlbmQudGl0bGUgPSBsaXN0KGZpbGwgPSAiT2JzZXJ2Li9WYXIuIikKKSArCiAgZ2d0aXRsZSgiQmlwbG90IikgKwogIHRoZW1lX21pbmltYWwoKQpgYGAKCgpgYGB7cn0KbGlicmFyeShmYWN0b2V4dHJhKQpmdml6X3BjYV9iaXBsb3QoCiAgcmVzdWx0YWRvLAogYXhlcyA9IGMoMiwgMyksCiAgcmVwZWwgICAgPSBUUlVFLCAgICAgICAgICAjIGV2aXRhIHNvbGFwYW1pZW50byBkZSBldGlxdWV0YXMKICBsZWdlbmQudGl0bGUgPSBsaXN0KGZpbGwgPSAiT2JzZXJ2Li9WYXIuIikKKSArCiAgZ2d0aXRsZSgiQmlwbG90IikgKwogIHRoZW1lX21pbmltYWwoKQpgYGAKUmVjb25zdHJ1Y2Npb24gZGUgbGFzIHZhcmlhYmxlcyBvcmlnaW5hbGVzCgpgYGB7cn0KCnByb3llY3RhciA8LSBmdW5jdGlvbihyZXN1bHRhZG8sIGssIGNpdWRhZCkgewogIGEgPC0gdChyZXN1bHRhZG8kcm90YXRpb25bLDE6a10pCiAgYiA8LSB0KGFzLm1hdHJpeChwb2x1Y2lvbltjaXVkYWQsXSkpCiAgYSUqJSBiICAKfQoKCnByIDwtIHByb3llY3RhcihyZXN1bHRhZG8sIDIsICJCdWZmYWxvIikKcmVjb25zdHJ1aXIgPC0gZnVuY3Rpb24ocmVzdWx0YWRvLCBwcm95ZWN0YWRvLCBrKSB7CiAgcmVzdWx0YWRvJHJvdGF0aW9uWywxOmtdICUqJSBwcm95ZWN0YWRvIAp9CmBgYAoKYGBge3J9CmVycm9yX3JlY29uc3RydWNjaW9uIDwtIGZ1bmN0aW9uKHJlc3VsdGFkbywgaywgY2l1ZGFkKSB7CiAgbm9ybShyZWNvbnN0cnVpcihyZXN1bHRhZG8sIHByb3llY3RhcihyZXN1bHRhZG8sIGssIGNpdWRhZCksIGspIC0gdCggYXMubWF0cml4KHBvbHVjaW9uW2NpdWRhZCxdKSkpICAKfQoKZXJyb3JfcmVjb25zdHJ1Y2Npb24ocmVzdWx0YWRvLCAyLCAiQnVmZmFsbyIpCmVycm9yX3JlY29uc3RydWNjaW9uKHJlc3VsdGFkbywgMywgIkJ1ZmZhbG8iKQplcnJvcl9yZWNvbnN0cnVjY2lvbihyZXN1bHRhZG8sIDQsICJCdWZmYWxvIikKZXJyb3JfcmVjb25zdHJ1Y2Npb24ocmVzdWx0YWRvLCA1LCAiQnVmZmFsbyIpCgpgYGAKVW5hIGV4dHJlbWE6CmBgYHtyfQpjaXVkYWQgPC0gIlBob2VuaXgiCmVycm9yX3JlY29uc3RydWNjaW9uKHJlc3VsdGFkbywgMiwgIGNpdWRhZCkKZXJyb3JfcmVjb25zdHJ1Y2Npb24ocmVzdWx0YWRvLCAzLCAgY2l1ZGFkKQplcnJvcl9yZWNvbnN0cnVjY2lvbihyZXN1bHRhZG8sIDQsICBjaXVkYWQpCmVycm9yX3JlY29uc3RydWNjaW9uKHJlc3VsdGFkbywgNSwgIGNpdWRhZCkKYGBgClVuYSBwcm9tZWRpbwpgYGB7cn0KY2l1ZGFkIDwtICJDaW5jaW5uYXRpIgplcnJvcl9yZWNvbnN0cnVjY2lvbihyZXN1bHRhZG8sIDIsICBjaXVkYWQpCmVycm9yX3JlY29uc3RydWNjaW9uKHJlc3VsdGFkbywgMywgIGNpdWRhZCkKZXJyb3JfcmVjb25zdHJ1Y2Npb24ocmVzdWx0YWRvLCA0LCAgY2l1ZGFkKQplcnJvcl9yZWNvbnN0cnVjY2lvbihyZXN1bHRhZG8sIDUsICBjaXVkYWQpCmBgYApgYGB7cn0Kcm93bmFtZXMocG9sdWNpb24pICU+JSBwdXJycjo6bWFwX3ZlYyhmdW5jdGlvbihjaXVkYWQpIGVycm9yX3JlY29uc3RydWNjaW9uKHJlc3VsdGFkbywgMiwgIGNpdWRhZCkpICU+JSB2YXIoKQpgYGAKYGBge3J9CnJvd25hbWVzKHBvbHVjaW9uKSAlPiUgcHVycnI6Om1hcF92ZWMoZnVuY3Rpb24oY2l1ZGFkKSBlcnJvcl9yZWNvbnN0cnVjY2lvbihyZXN1bHRhZG8sIDIsICBjaXVkYWQpKSAlPiUgaGlzdCgpCmBgYAoKYGBge3J9CnJvd25hbWVzKHBvbHVjaW9uKSAlPiUgcHVycnI6Om1hcF92ZWMoZnVuY3Rpb24oY2l1ZGFkKSBlcnJvcl9yZWNvbnN0cnVjY2lvbihyZXN1bHRhZG8sIDMsICBjaXVkYWQpKSAlPiUgdmFyKCkKYGBgCmBgYHtyfQpyb3duYW1lcyhwb2x1Y2lvbikgJT4lIHB1cnJyOjptYXBfdmVjKGZ1bmN0aW9uKGNpdWRhZCkgZXJyb3JfcmVjb25zdHJ1Y2Npb24ocmVzdWx0YWRvLCAzLCAgY2l1ZGFkKSkgJT4lIGhpc3QoKQpgYGAKCmBgYHtyfQpyb3duYW1lcyhwb2x1Y2lvbikgJT4lIHB1cnJyOjptYXBfdmVjKGZ1bmN0aW9uKGNpdWRhZCkgZXJyb3JfcmVjb25zdHJ1Y2Npb24ocmVzdWx0YWRvLCA0LCAgY2l1ZGFkKSkgJT4lIHZhcigpCmBgYApgYGB7cn0Kcm93bmFtZXMocG9sdWNpb24pICU+JSBwdXJycjo6bWFwX3ZlYyhmdW5jdGlvbihjaXVkYWQpIGVycm9yX3JlY29uc3RydWNjaW9uKHJlc3VsdGFkbywgNCwgIGNpdWRhZCkpICU+JSBoaXN0KCkKCmBgYAoKCgo=