dados2<-read.csv2('Total.csv',h=T,check.names=F) hist(dados2$PP,prob=T) lines(density(dados2$PP)) =========== Função para criar variáveis dummies ==================================== factor2dummy = function(x) { # x é uma variável tipo fator n = length(x) categ = sort(unique(x)) k = length(categ) z = matrix(0, n, (k-1)) for (i in 1:n) { for (j in 1:(k-1)) { if (x[i] == categ[j]) z[i,j] = 1 } } z } ========= Função para calcular o VIF - Fator de Inflação da Variância vif<-function (obj, digits = 5) { Qr <- obj$qr if (is.null(obj$terms) || is.null(Qr)) stop("invalid 'lm' object: no terms or qr component") tt <- terms(obj) hasintercept <- attr(tt, "intercept") > 0 p <- Qr$rank if (hasintercept) p1 <- 2:p else p1 <- 1:p R <- Qr$qr[p1, p1, drop = FALSE] if (length(p1) > 1) R[row(R) > col(R)] <- 0 Rinv <- qr.solve(R) vv <- apply(Rinv, 1, function(x) sum(x^2)) ss <- apply(R, 2, function(x) sum(x^2)) vif <- ss * vv signif(vif, digits) } m.salarial<-factor2dummy(dados2$media_salarial) locus<-factor2dummy(dados2$Grupo) situ.conj<-factor2dummy(dados2$situacao_conjugal) ========== Ajustando o primeiro Modelo mod.lm<-lm(dados2$PP~dados2$CP+dados2$PSI+dados2$FACES_IV+dados2$sexo+dados2$Idade_da_crianca+m.salarial+situ.conj+dados2$Numero_de_filhos+ dados2$ocupacao_do_pai_Trabalha+dados2$ocupacao_da_mae_Trabalha+dados2$idade_da_mae+dados2$idade_do_pai+ dados2$Moradia_Alugada+dados2$Moradia_Propria,weights=dados2$Grupo) summary(mod.lm) step<-step(mod.lm,direction='both',trace=F) summary(step) vif(step) ================Ajustando o segundo modelo summary(mod.lm<- update(mod.lm, . ~ . - dados2$Moradia_Alugada)) summary(mod.lm<- update(mod.lm, . ~ . - dados2$sexo)) summary(mod.lm<- update(mod.lm, . ~ . - situ.conj)) summary(mod.lm<- update(mod.lm, . ~ . - dados2$Numero_de_filhos)) summary(mod.lm<- update(mod.lm, . ~ . - dados2$Idade_da_crianca)) summary(mod.lm<- update(mod.lm, . ~ . - dados2$idade_do_pai)) summary(mod.lm<- update(mod.lm, . ~ . - dados2$ocupacao_da_mae_Trabalha)) summary(mod.lm<- update(mod.lm, . ~ . - dados2$Moradia_Propria)) summary(mod.lm<- update(mod.lm, . ~ . - dados2$ocupacao_do_pai_Trabalha)) summary(mod.lm<- update(mod.lm, . ~ . - dados2$idade_da_mae)) summary(mod.lm<- update(mod.lm, . ~ . - dados2$FACES_IV)) vif(mod.lm) ====== ajustando o terceiro modelo step2<-lm(dados2$PP~dados2$PSI+dados2$FACES_IV+dados2$CP+m.salarial[,1]+m.salarial[,2]+m.salarial[,3]+m.salarial[,4]+m.salarial[,5],data=dados2) summary(step2) vif(step2) ======== VERIFICANDO IMPORTÂNCIA RELATIVA DAS VARIÀVEIS require(relaimpo) i<-calc.relimp(step2,type=c('lmg'),value='var.y') i ### lmg is the R^2 contribution averaged over orderings among regressors. ====== Análise de resíduos par(mfrow=c(3,2)) plot(step2,which=1:6) ### outros gráficos para análise de resíduos .res <- resid(step2) respad <- .res/sqrt(sum(.res^2)/step2$df.res) par(mfrow=c(2,2)) plot(fitted(step2), respad, xlab = "valores ajustados", ylab = "resíduos") title("Resíduos Padronizados vs \n Valores Preditos") boxplot(respad) title("Resíduos Padronizados") hist(respad, main = "Histograma dos resíduos padronizados") qqnorm(.res, ylab = "Residuos", main = NULL,xlab='') qqline(.res) title("Gráfico Normal de \n Probabilidade dos Resíduos") shapiro.test(step2$res) boxcox(step2,lambda = seq(-2, 10, l = 101))