Está en la página 1de 3

ACP con Regresin.

Longley.dat
>long=read.table('Longley.dat',header=T)
> summary(long)
Hay distintos rangos de magnitud
Veamos como se comporta la varianza:
2 formas:
diag(cov(long))
sqrt(diag(cov(long)))
las unidades son distintas, la solucin es estandarizar.
Se hace:
longs=data.frame(scale(long)) (tiene la estructura que queremos)
boxplot(longs) (tienen mas o menos la misma varianza, variables que ahora
son ms comparables)
para analizar la correlacin:
pairs(longs) (x1 y x6 estn correlacionados, x1 con x2 tenemos correlacin con
la variable independiente y, entonces tiene sentido hacer el anlisis de
regresin)
cor(longs) (x3 y x4 correlacin moderada, problemas de multicolinearidad de
los datos, hay correlacin muy fuerte entre las variables).
Ahora, vamos a correr un modelo lineal, una regresin, el modelo:
y=a0+a1x1+a2x2++a6x6+error
modelo1=lm(y~x1+x2+x3+x4+x5+x6,data=longs)
summary(modelo1) (los estimadores son bastante bajos, se espera que el
estimador de la intercepcin sea cero. La que est teniendo mayor peso es x6,
es la que ms influye en el modelo. Mayor peso en la regresin es x6. Bajo la
prueba t, x6 es significativo, los que son significativos son: x3,x4,x6. La desv.
Estndar de x1 es muy alta comparada con su estimacin: la variabilidad de los
estimadores es muy alta debido a la correlacin entre x.

R^2 es casi del 100%, el ajuste es muy bueno.. es muy bueno, lo que indica
que debe de haber algn problema con la correlacin. El valor p es muy bajo,
el modelo es significativo pero tenemos problemas de correlacin entre las
variables.

ACP!!!
attach(longs)
Xc=cbind(x1,x2,x3,x4,x5,x6)
ACP1=prcomp(Xc)
plot(ACP1) (las ltimas tienen varianza muy pequea, es suf. Trabajar con las 2
primeras variables)
summary(ACP1) podemos considerar slo 2 componentes principales.
biplot(ACP1) las variables se clasifican en 3 grupos, x1,x2,x6 y x5, x3 y x4. El
primer y segundo componente principal hace una clasificacin de las variables
en grupos. (1,2,3,4 tienen proyecciones muy altas).
Programar: recibe X(matriz), y (variable independiente), # componentes
principales(en este caso son 2)
Salida: es una tabla:
Variable

Estimador

Desv.
Estandar

Valor t

Valor p

X1
X2
X3
X4
X5
X6
Names(ACP1)
ACP1$sdev
ACP1$rotation (matriz A, matriz de rotacin)
Para construir Am, extraemos las primeras 2 columnas puesto que son los
componentes principales. Beta(techo) son los estimadores.

Programacin
ACP = function(y,X,m){

ACP=prcomp(X)
Zm=ACP$x[,1:m]#numero de componentes principales
Am=ACP$rotation[,1:m]
n=nrow(X)
p=ncol(X)
modelo=lm(y~Zm)
deltam=summary(modelo)$coefficients[-1,1]
beta1Techo=Am%*%deltam
Dm=(n-1)*diag(ACPsdev[1:2]^2) #hay que multiplicarlo por n para
obtener los valores propios de la matriz de datos.
s=summary(modelo)$sigma^2 (sigma es la desviacin estndar)
s2=s^2
mcov=s2*Am%*%solve(Dm)%*%t(Am)
desviaciones=sqrt(diag(mcov))
estadistico=beta1Techo/desviaciones
valorp=pt(abs(estadstico), df=n-p-1, lower.tail=F )
resumen=cbind(1:p,beta1,desviaciones, estadstico, valorp)
show(resumen)
}
Correr: ACP(y,Xc,2) (cambiar 2 por 3, 6)
Un modelo enm el que todas las variables son significativas.
y es la primera columna de X, las desviaciones son ms grandes.
Si colocamos 5, todas las variables son significativas.

También podría gustarte