########################################################################################## ## Aula 2 - Análise exploratória para dados longitudinais ################################ ########################################################################################## ## Carregando o pacote require(faraway) ## Carregando os dados data(psid) ## Mostrando os dados head(psid) ## Gráfico descritivo require(lattice) xyplot( income ~year | person, data = psid, type="l", subset=(person < 21), strip = FALSE) ## Renda variando entre os sexos xyplot(log(income+100) ~ year | sex, psid, type="l", groups=person) ## Vamos ajustar um modelo de regressão para cada sujeito lmod <- lm(log(income) ~ I(year-78), subset=(person==1), psid) coef(lmod) ## Vamos ajustar um modelo separado para cada individuo e plotar os resultados slopes <- numeric(85);intercepts <- numeric(85) for(i in 1:85){ lmod <- lm(log(income) ~I(year-78), subset=(person == i), psid) intercepts[i] <- coef(lmod)[1] slopes[i] <- coef(lmod)[2] } ## Plotando os interceptos vs os slopes plot(intercepts ~slopes, xlab="Intercepto", ylab="Slope") ## Taxa de crescimento da renda por sexo psex <- psid$sex[match(1:85,psid$person)] boxplot(split(slopes,psex)) ## Comparando as taxas de crescimento t.test(slopes[psex == "M"], slopes[psex == "F"]) ## Comparando o recebimento mediano t.test(intercepts[psex == "M"], intercepts[psex == "F"]) ## Explorando relações com covariáveis de interesse bwplot(log(income+100) ~ as.factor(age), data=psid) ## Idade e Sexo bwplot(log(income+100) ~ as.factor(age) | sex, data=psid) ## Anos de estudo bwplot(log(income+100) ~ as.factor(educ) | sex, data=psid) ## Anos de estudo bwplot(log(income+100) ~ as.factor(year) | sex, data=psid) ## Perfil de cada individuo xyplot(log(income+100) ~ year | sex, groups=person, data=psid,subset=(person==1), type="l") ## Explorando a estrutura de autocorrelação dentro de cada indivíduo acf(log(subset(psid,person ==1)$income)) pacf(log(subset(psid,person ==1)$income)) acf(log(subset(psid,person ==2)$income)) pacf(log(subset(psid,person ==2)$income)) acf(log(subset(psid,person ==3)$income)) pacf(log(subset(psid,person ==3)$income)) ## Ajustando um ar(1) para cada indivíduo autoregres <- c() for(i in 1:85){ ajuste <- arima(log(subset(psid, person == 40)$income),order=c(1,0,0)) autoregres[i] <- coef(ajuste)[1] } for(i in 41:85){ ajuste <- arima(log(subset(psid, person == i)$income),order=c(1,0,0)) autoregres[i] <- coef(ajuste)[1] } psex <- psid$sex[match(1:85,psid$person)] boxplot(split(autoregres,psex)) t.test(autoregres[psex == "M"], autoregres[psex == "F"]) plot(autoregres) abline(h = 0)