Advertisement
kukis03

Multi taller 1

Nov 11th, 2023
221
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
R 12.35 KB | None | 0 0
  1. ---
  2. title: "R Notebook"
  3. output: html_notebook
  4. ---
  5.  
  6. # Problemas de práctica para PCA con respuestas parciales
  7.  
  8. 1.  El propósito de este problema es examinar el efecto que tienen diferentes correlaciones en el resultado del `PDA`. Para hacerlo más fácil, suponga que `X` tiene una distribucion normal bivariante con $\mu=(0,0)',\sigma_{11}=1$ y $\sigma_{22}=1$. Para $\sigma_{12}=-0.99,-0.9,-0.5,0,0.5,0.9,0.99$ (recuerde que $\sigma_{12}=\rho_{21}$ porque las varianzas son iguales a 1), complete lo siguiente:
  9.  
  10. a.  Simule `1000` observaciones de la normal bivariante donde se establece un número de semilla de `8128` justo antes de cada simulación de datos.
  11.  
  12. Examine parte de este problema empleando solo $\rho_{12}=0.99$
  13.  
  14. ```{r}
  15. suppressWarnings(library(mvtnorm))
  16.  
  17. #Parámetros para una distribución normal bivariante
  18. mu99=c(0,0)
  19. rho1299=0.99
  20. sigma99=matrix(data=c(1,rho1299,rho1299,1),nrow=2,byrow=TRUE) #Matriz de covarianzas
  21. (P99= cov2cor(V=sigma99))
  22. N99=1000
  23. set.seed(8128)
  24. X99=rmvnorm(N99,mu99,sigma99)
  25. head(X99)
  26. ```
  27.  
  28. b.  Utilice `princomp()` con `cor=TRUE` para encontrar los valores propios y vectores propios estimados a partir de la matriz de correlación.
  29.  
  30. ```{r}
  31. pca.save99=princomp(x=X99,cor=TRUE,scores=FALSE)
  32. summary(pca.save99,loadings=TRUE,cutoff=0.0)
  33. ```
  34. c.  Interprete las componentes principales.
  35.  
  36. Podemos apreciar que las variables $Z_1$ y $Z_2$ contribuyen por igual a las dos componentes principales. Sin embargo, por lo resultados obtenidos notamos que la primera componente principal tiene mucha más variabilidad que la segunda, y siendo $Y_1$ la que acumule la mayor proporción de variabilidad con un 99.5%.
  37.  
  38. Además, las cargas representan que las variables están fuertemente correlacionadas, en el caso de $Y_{1}$, positivamente, y en $Y_{2}$ de forma negativa.
  39.  
  40. Se hará lo mismo para los demás valores de $\rho_{1,2}$. Para $\rho_{1,2}=0.9$:
  41.  
  42. ```{r,echo=F}
  43. #Parámetros para una distribución normal bivariante
  44. mu9=c(0,0)
  45. rho129=0.9
  46. sigma9=matrix(data=c(1,rho129,rho129,1),nrow=2,byrow=TRUE) #Matriz de covarianzas
  47. P9= cov2cor(V=sigma9)
  48. N9=1000
  49. set.seed(8128)
  50. X9=rmvnorm(N9,mu9,sigma9)
  51. pca.save9=princomp(x=X9,cor=TRUE,scores=FALSE)
  52. summary(pca.save9,loadings=TRUE,cutoff=0.0)
  53. ```
  54.  
  55. De misma forma que con $\rho_{12}=0.99$, la primera componente acumula una gran cantidad de varianza, sin embargo, es ligeramente menor.
  56.  
  57. Salvo ese detalle, las componentes principales son idénticas, por lo que vuelve a haber fuerte correlación positiva entre las variables en la primera y fuerte correlación negativa en la segunda.
  58.  
  59. Para $\rho_{12}=0.5$
  60.  
  61. ```{r,echo=F}
  62. #Parámetros para una distribución normal bivariante
  63. mu5=c(0,0)
  64. rho125=0.5
  65. sigma5=matrix(data=c(1,rho125,rho125,1),nrow=2,byrow=TRUE) #Matriz de covarianzas
  66. P5= cov2cor(V=sigma5)
  67. N5=1000
  68. set.seed(8128)
  69. X5=rmvnorm(N5,mu5,sigma5)
  70. pca.save5=princomp(x=X5,cor=TRUE,scores=FALSE)
  71. summary(pca.save5,loadings=TRUE,cutoff=0.0)
  72. ```
  73.  
  74. Vemos que la varianza explicada por la primera componente ha disminuido notoriamente, sin embargo, aún puede considerarse suficiente.
  75.  
  76. Por lo demás, las componentes no han cambiado, por lo que su interpretación su mantiene.
  77.  
  78. Para $\rho_{12}=0$:
  79.  
  80. ```{r,echo=F}
  81. #Parámetros para una distribución normal bivariante
  82. mu0=c(0,0)
  83. rho120=0
  84. sigma0=matrix(data=c(1,rho120,rho120,1),nrow=2,byrow=TRUE) #Matriz de covarianzas
  85. P0= cov2cor(V=sigma0)
  86. N0=1000
  87. set.seed(8128)
  88. X0=rmvnorm(N0,mu0,sigma0)
  89. pca.save0=princomp(x=X0,cor=TRUE,scores=FALSE)
  90. summary(pca.save0,loadings=TRUE,cutoff=0.0)
  91. ```
  92. Ahora cada componente explica una cantidad de varianza similar, y, en un análisis, sería importante considerarlas a ambas. Vemos además que la correlación se ha invertido, guardando la primera una fuerte correlación negativa y la segunda una fuerte correlación positiva.
  93.  
  94. Para $\rho_{12}=-0.5$:
  95. ```{r,echo=F}
  96. #Parámetros para una distribución normal bivariante
  97. mun5=c(0,0)
  98. rho12n5=-0.5
  99. sigman5=matrix(data=c(1,rho12n5,rho12n5,1),nrow=2,byrow=TRUE) #Matriz de covarianzas
  100. Pn5= cov2cor(V=sigman5)
  101. Nn5=1000
  102. set.seed(8128)
  103. Xn5=rmvnorm(Nn5,mun5,sigman5)
  104. pca.saven5=princomp(x=Xn5,cor=TRUE,scores=FALSE)
  105. summary(pca.saven5,loadings=TRUE,cutoff=0.0)
  106. ```
  107. Observamos que, nuevamente, la primera componente principal explica una cantidad de varianza importante, con el único cambio de guardar una fuerte correlación negativa entre las variables. La segunda componente mantiene la interpretación dada con $\rho_{12}=0$, pero con menor varianza explicada.
  108.  
  109. Para $\rho_{12}=-0.9$:
  110.  
  111. ```{r,echo=F}
  112. #Parámetros para una distribución normal bivariante
  113. mun9=c(0,0)
  114. rho12n9=-0.9
  115. sigman9=matrix(data=c(1,rho12n9,rho12n9,1),nrow=2,byrow=TRUE) #Matriz de covarianzas
  116. Pn9= cov2cor(V=sigman9)
  117. Nn9=1000
  118. set.seed(8128)
  119. Xn9=rmvnorm(Nn9,mun9,sigman9)
  120. pca.saven9=princomp(x=Xn9,cor=TRUE,scores=FALSE)
  121. summary(pca.saven9,loadings=TRUE,cutoff=0.0)
  122. ```
  123. La primera componente vuelve a explicar mucho la varianza, al igual que con $\rho_{12}=0.9$. Solo ha cambiado la correlación entre las variables para ella, siendo, de nuevo, fuertemente negativa. La segunda componente tiene la misma interpretación que con el $\rho_{12}$ anterior.
  124.  
  125. Para $\rho_{12}=-0.99$:
  126.  
  127. ```{r,echo=F}
  128. #Parámetros para una distribución normal bivariante
  129. mun99=c(0,0)
  130. rho12n99=-0.99
  131. sigman99=matrix(data=c(1,rho12n99,rho12n99,1),nrow=2,byrow=TRUE) #Matriz de covarianzas
  132. Pn99= cov2cor(V=sigman9)
  133. Nn99=1000
  134. set.seed(8128)
  135. Xn99=rmvnorm(Nn99,mun99,sigman99)
  136. pca.saven99=princomp(x=Xn99,cor=TRUE,scores=FALSE)
  137. summary(pca.saven99,loadings=TRUE,cutoff=0.0)
  138. ```
  139. Similar a $\rho_{12}=0.99$, la varianza explicada por la primera componente es la misma. El único cambio es, de nuevo, la correlación, que es idéntica a las de $\rho_{12}=-0.9$.
  140.  
  141. d.  ¿Cuántas PC son necesarias?
  142.  
  143. Solo una: ¡asegúrese de comprender por qué esto tendría sentido en el contexto de PCA!
  144.  
  145. Es necesario solo una en los casos en que $\rho_{12}\neq 0$, pues la primera componente explica una buena cantidad de varianza.
  146.  
  147. En el caso de $\rho_{12}=0$, ambas componentes son necesarias para explicar una cantidad de varianza.
  148.  
  149. e.  Cree diagramas de dispresión separados de los datos y las puntuaciones de PC, pero utilice un conjunto de límites generales para los ejes X y Y. Describe la relación entre estos gráficos para cada $\rho_{12}$.
  150.  
  151. Para $\rho_{12}=0.99$:
  152.  
  153. ```{r}
  154. pca.save99$scale=apply(X=X99,MARGIN=2,FUN=sd)
  155. score.save99=predict(pca.save99,newdata=X99)
  156. head(score.save99)
  157. #dev.new(width=12)
  158. par(mfrow=c(1,2)) #una fila dos columnas
  159. par(pty="s")
  160. common.limits99=c(min(score.save99,X99),max(score.save99,X99))
  161. plot(x=X99[,1],y=X99[,2],xlab=expression(x[1]),ylab=expression(x[2]),main="Datos Originales",xlim=common.limits99,ylim=common.limits99,panel.first=grid(col="lightgreen"))
  162. abline(h=0)
  163. abline(v=0)
  164.  
  165. plot(x=score.save99[,1],y=score.save99[,2],xlab="PC #1",ylab="PC #2",main="Componentes Principales",xlim=common.limits99,ylim=common.limits99,panel.first=grid(col="lightgreen"))
  166. abline(h=0)
  167. abline(v=0)
  168. ```
  169.  
  170.  
  171. ¡Parece que los ejes `X` y `Y` se han rotado para que toda la variabilidad de los datos esté representada en una sola dimensión!
  172.  
  173. Para $\rho_{12}=0.9$:
  174.  
  175. ```{r,echo=F}
  176. pca.save9$scale=apply(X=X9,MARGIN=2,FUN=sd)
  177. score.save9=predict(pca.save9,newdata=X9)
  178. head(score.save9)
  179. #dev.new(width=12)
  180. par(mfrow=c(1,2)) #una fila dos columnas
  181. par(pty="s")
  182. common.limits9=c(min(score.save9,X9),max(score.save9,X9))
  183. plot(x=X9[,1],y=X9[,2],xlab=expression(x[1]),ylab=expression(x[2]),main="Datos Originales",xlim=common.limits9,ylim=common.limits9,panel.first=grid(col="lightgreen"))
  184. abline(h=0)
  185. abline(v=0)
  186.  
  187. plot(x=score.save9[,1],y=score.save9[,2],xlab="PC #1",ylab="PC #2",main="Componentes Principales",xlim=common.limits9,ylim=common.limits9,panel.first=grid(col="lightgreen"))
  188. abline(h=0)
  189. abline(v=0)
  190. ```
  191.  
  192. Para $\rho_{12}=0.5$:
  193.  
  194. ```{r,echo=F}
  195. pca.save5$scale=apply(X=X5,MARGIN=2,FUN=sd)
  196. score.save5=predict(pca.save5,newdata=X5)
  197. head(score.save5)
  198. #dev.new(width=12)
  199. par(mfrow=c(1,2)) #una fila dos columnas
  200. par(pty="s")
  201. common.limits5=c(min(score.save5,X5),max(score.save5,X5))
  202. plot(x=X5[,1],y=X5[,2],xlab=expression(x[1]),ylab=expression(x[2]),main="Datos Originales",xlim=common.limits5,ylim=common.limits5,panel.first=grid(col="lightgreen"))
  203. abline(h=0)
  204. abline(v=0)
  205.  
  206. plot(x=score.save5[,1],y=score.save5[,2],xlab="PC #1",ylab="PC #2",main="Componentes Principales",xlim=common.limits5,ylim=common.limits5,panel.first=grid(col="lightgreen"))
  207. abline(h=0)
  208. abline(v=0)
  209. ```
  210. Para $\rho_{12}=0$:
  211.  
  212. ```{r,echo=F}
  213. pca.save0$scale=apply(X=X0,MARGIN=2,FUN=sd)
  214. score.save0=predict(pca.save0,newdata=X0)
  215. head(score.save0)
  216. #dev.new(width=12)
  217. par(mfrow=c(1,2)) #una fila dos columnas
  218. par(pty="s")
  219. common.limits0=c(min(score.save0,X0),max(score.save0,X0))
  220. plot(x=X0[,1],y=X0[,2],xlab=expression(x[1]),ylab=expression(x[2]),main="Datos Originales",xlim=common.limits0,ylim=common.limits0,panel.first=grid(col="lightgreen"))
  221. abline(h=0)
  222. abline(v=0)
  223.  
  224. plot(x=score.save0[,1],y=score.save0[,2],xlab="PC #1",ylab="PC #2",main="Componentes Principales",xlim=common.limits0,ylim=common.limits0,panel.first=grid(col="lightgreen"))
  225. abline(h=0)
  226. abline(v=0)
  227. ```
  228.  
  229. Para $\rho_{12}=-0.5$:
  230.  
  231. ```{r,echo=F}
  232. pca.saven5$scale=apply(X=Xn5,MARGIN=2,FUN=sd)
  233. score.saven5=predict(pca.saven5,newdata=Xn5)
  234. head(score.saven5)
  235. #dev.new(width=12)
  236. par(mfrow=c(1,2)) #una fila dos columnas
  237. par(pty="s")
  238. common.limitsn5=c(min(score.saven5,Xn5),max(score.saven5,Xn5))
  239. plot(x=Xn5[,1],y=Xn5[,2],xlab=expression(x[1]),ylab=expression(x[2]),main="Datos Originales",xlim=common.limitsn5,ylim=common.limitsn5,panel.first=grid(col="lightgreen"))
  240. abline(h=0)
  241. abline(v=0)
  242.  
  243. plot(x=score.saven5[,1],y=score.saven5[,2],xlab="PC #1",ylab="PC #2",main="Componentes Principales",xlim=common.limitsn5,ylim=common.limitsn5,panel.first=grid(col="lightgreen"))
  244. abline(h=0)
  245. abline(v=0)
  246. ```
  247. Para $\rho_{12}=-0.9$:
  248.  
  249. ```{r,echo=F}
  250. pca.saven9$scale=apply(X=Xn9,MARGIN=2,FUN=sd)
  251. score.saven9=predict(pca.saven9,newdata=Xn9)
  252. head(score.saven9)
  253. #dev.new(width=12)
  254. par(mfrow=c(1,2)) #una fila dos columnas
  255. par(pty="s")
  256. common.limitsn9=c(min(score.saven9,Xn9),max(score.saven9,Xn9))
  257. plot(x=Xn9[,1],y=Xn9[,2],xlab=expression(x[1]),ylab=expression(x[2]),main="Datos Originales",xlim=common.limitsn9,ylim=common.limitsn9,panel.first=grid(col="lightgreen"))
  258. abline(h=0)
  259. abline(v=0)
  260.  
  261. plot(x=score.saven9[,1],y=score.saven9[,2],xlab="PC #1",ylab="PC #2",main="Componentes Principales",xlim=common.limitsn9,ylim=common.limitsn9,panel.first=grid(col="lightgreen"))
  262. abline(h=0)
  263. abline(v=0)
  264. ```
  265.  
  266. Para $\rho_{12}=-0.99$:
  267.  
  268. ```{r,echo=F}
  269. pca.saven99$scale=apply(X=Xn99,MARGIN=2,FUN=sd)
  270. score.saven99=predict(pca.saven99,newdata=Xn99)
  271. head(score.saven99)
  272. #dev.new(width=12)
  273. par(mfrow=c(1,2)) #una fila dos columnas
  274. par(pty="s")
  275. common.limitsn99=c(min(score.saven99,Xn99),max(score.saven99,Xn99))
  276. plot(x=Xn99[,1],y=Xn99[,2],xlab=expression(x[1]),ylab=expression(x[2]),main="Datos Originales",xlim=common.limitsn99,ylim=common.limitsn99,panel.first=grid(col="lightgreen"))
  277. abline(h=0)
  278. abline(v=0)
  279.  
  280. plot(x=score.saven99[,1],y=score.saven99[,2],xlab="PC #1",ylab="PC #2",main="Componentes Principales",xlim=common.limitsn99,ylim=common.limitsn99,panel.first=grid(col="lightgreen"))
  281. abline(h=0)
  282. abline(v=0)
  283. ```
  284.  
  285. f.  Relacione sus respuestas en `c-e` con el valor de $\rho_{12}$
  286.  
  287. Para $\rho_{12}=0.9$ y $\rho_{12}=0.99$, es más que suficiente solo una componente principal por la varianza explicada. Adicionalmente, se puede ver claramente la correlación positiva en el gráfico.
  288.  
  289. En el caso de $\rho_{12}=0.5$, es posible argumentar que se necesita una sola componente principal, porque explica una cantidad de varianza suficiente. Aunque la correlación positiva es visible, no es tan notoria como en el caso anterior, como es de esperarse.
  290.  
  291. Para $\rho_{12}=0$, la varianza explicada por una componente no es suficiente. En el gráfico, también es notorio como no hay ninguna relación aparente, e, incluso tras aplicar el cambio de ejes, la diferencia es poco apreciable.
  292.  
  293. Con $\rho_{12}=-0.5$, se aplica el mismo análisis que para $\rho_{12}=0.5$, con la obvia diferencia que la correlación es negativa en este caso. Nuevamente, la relación está presente en el gráfico de una forma sutil.
  294.  
  295. Finalmente, para $\rho_{12}=-0.9$ y $\rho_{12}=-0.99$, la varianza explicada por una componente es suficiente. En los gráficos, además, es evidente la correlación negativa entre las variables.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement