###################################### ###### AULA CAP. 6 - WOOLDRIGDE ###### ###### PROBLEMAS ADICIONAIS ###### ###################################### # Para deletar tudo que está aberto no programa rm(list=ls()) # Definir diretório. Mudar para o seu diretório getwd() setwd("C:/Users/Wander Plassa/Desktop/Pos_Graduacao/Doutorado/R/Aula/Formas") # chamar o comando "foreign" para obter bases de dados de outros programas, por exemplo Stata install.packages(foreign) library(foreign) # chamar a base em formato dta pelo comando read.dta ou TXT (formato raw) ####################### # Introdução ########## ####################### # O efeito do redimensionamento das variáveis dependente ou # independente sobre os erros-padrão, estatística t, estatística F e intervalos de confiança. # 1) Exemplo da base de dados >>> gravidez e cigarros # carregamos a base de dados no formato dta. Peso_bebe = read.dta("BWGHTOLD.dta") View(Peso_bebe) # Vamos rodar uma regressão de peso do bebe em onças (bwght) e número médio de cigarros # que a mãe fumou por dia durante a gravidez (cigs) e renda anual familiar # (faminc) em milhares de dolares regpeso = lm( Peso_bebe$bwght ~ Peso_bebe$cigs + Peso_bebe$faminc, data=Peso_bebe) summary(regpeso) # O resultado mostra que a mulher que fumou em média 5 cigarros por dia # 0.46341(5) teria um filho 2.317 onças a menos. # A estatística t para a variável "cigs" tcalcigs = (-0.46341 - 0)/(0.09158) tcalcigs ###### mudando a unidade de medida da variável dependente ###### # Agora suponha que desejamos mudar a escala do peso da criança. # Ao inves de ONÇAS colocamos LIBRAS (Devemos divir por 16 # para obter a escala correta) # Criamos uma variável que represente o peso do beber ao nascer # em libras bwght_lbs = Peso_bebe$bwght/16 # Agora rodamos uma regressão com essa variável dependente alterada regpesolbs = lm( bwght_lbs ~ Peso_bebe$cigs + Peso_bebe$faminc, data=Peso_bebe) summary(regpesolbs) # Observamos que todos os coeficientes corresponde a antiga regressão divido por 16 # Por exemplo, se a média de cigarros fosse de 5 agora teríamos # -0.028963(5) = 0.1445 libras a menos. O que corresponde a # 0.1445(16) = 2.312 ONÇAS (resultado bem próximo a antes). # O teste de t da variável antes analisada, como fica? tcalcigs_lbs = (-0.028963 - 0)/(0.005724) tcalcigs_lbs # Que é o mesmo valor de antes, em que o erro padrão # é 16 vezes menor. # Os intervalos de confiança com 95% de confiança confint(regpeso, level = 0.95) confint(regpesolbs, level = 0.95) # foram modificados em que o segundo é dividido por # 16 (Lembre que ele é calculado >>> â +/- 1.96 ep(â) # No caso de 95% de confiança) # O R² não se altera nas duas regressões, como esperado. ###### mudando a unidade de medida da variável independente ###### # Vamos altera a unidade de medida da variável "cigs", para maços (contem 20 cigarros) # fumados por dia. Definimos maços como sendo a quantidade de maços # de cigarros fumados por dia. Assim maços = Peso_bebe$cigs/20 # Rodando a regressão com a inclusão de "maços" regpeso_maço = lm(Peso_bebe$bwght ~ Peso_bebe$cigs + Peso_bebe$faminc + maços, data=Peso_bebe) summary(regpeso_maço) # Qual o problema de fazer uma regressão como essa? Onde inclui tanto maço como cigs? regpeso_maço1 = lm(Peso_bebe$bwght ~ maços + Peso_bebe$faminc, data=Peso_bebe) summary(regpeso_maço1) summary(regpeso) # Agora temos que o aumento de 1 maço consumido por dia # reduz o peso em 9.26 ONÇAS. -9.26815/20 = -0.4634075 # Que é o coeficiente do cigs, na regressão original. -9.26815/20 # Outros coeficientes não se alteram # O erro padrão da variável maço é 20 vezes maior (1.83154 ) # Quando comparado a variável cigs (0.09158), o que não # altera a estatística t. # 2) Exemplo da base de dados >>>> Poluição e Preços de Imóveis Preco_Imo = read.dta("HPRICE2OLD.dta") regpreco = lm(Preco_Imo$price ~ Preco_Imo$nox + Preco_Imo$crime + Preco_Imo$rooms + Preco_Imo$dist + Preco_Imo$stratio, data=Preco_Imo) summary(regpreco) # Podemos pensar em transformações que nos dão resultados em desvio padrão. # O que acontece com uma variável dependente quando uma variável independente # aumenta certo números de desvios-padrão. # Em uma equação MQO padrão, não é possível simplesmente verificar o tamanho # dos diferentes coeficientes e concluir que a variável explicativa com o maior # coeficiente é "mais importante". Mas quando x é padronizado, a comparação das # magnitudes dos coeficientes beta resultante é mais convincente. # Os coeficientes desse tipo de transformação são conhecidos como # coeficientes padronizados ou coeficientes betas # INTERPRETAÇÃO: Se x aumentar em um desvio-padrão, y, será alterado em # â desvios-padrão. # Essa transformação torna a dimensão do regressor irrelevante # para realizar essa transformação devemos em primeiro lugar # instalar um pacote, o QuantPsyc: install.packages("QuantPsyc") library(QuantPsyc) # Instalado, chamamos o pacote na library e usamos a função # lm.beta no r. lm.beta(regpreco) # Essa regressão nos mostra que o aumento de um desvio padrão em nox # reduz o preço em 0.34 desvio-padrão. O aumento de um desvio padrão # em crime reduz o preço em 0.14 desvio-padrão. Assim, a poluição na sociedade # tem maior efeito sobre preço de imóveis do que a criminalidade. # O uso de variáveis padronizadas ou não padronizadas não afetará a significância estatística: # a estatísticas t serão as mesmas em ambos os casos ####### TRANSFORMAÇÃO LOG ################### # Considerando a mesma base de Preços de Imóveis, vamos # rodar uma regressão da seguinte forma: regpreco_log = lm( log(Preco_Imo$price) ~ log(Preco_Imo$nox) + Preco_Imo$rooms, data=Preco_Imo) summary(regpreco_log) # Qual era a interpretação que dávamos? Se olharmos para a variável "nox" quando ela # aumenta em 1%, o preço do imóvel cairá em 0.71%, mantendo as outras variáveis fixas. # Quando o número de cômodos aumenta em 1, o preço aumentaria cerca de 100(0,306) = 30,6% # O livro fala que essa aproximação de número de cômodos acaba por ser imprecisa. # O cálculo mais correto deve ser: comodos_logy = 100*(exp(0.30592) - 1) comodos_logy # Isto é, o efeito sobre o preço do imóvel seria em cerca de 35% para cada aumento de cômodo. # Essa correção não é tão relevante para pequenas mudanças percentuais. Por exemplo # Ao se incluir a variável "stratio" na regressão. regpreco_log1 = lm( log(Preco_Imo$price) ~ log(Preco_Imo$nox) + Preco_Imo$rooms + Preco_Imo$stratio, data=Preco_Imo) summary(regpreco_log1) # Seu coeficiente foi de -0.0509. O que significa que se "stratio" aumentar em um, # o preço do imóvel reduz em 100(0.0509) = 5,09%. A mudança proporcional seria de stratio_logy = 100*(exp(0.0509) - 1) stratio_logy # Isto é, de 5,22% ############### TRANSFORMAÇÕES QUADRÁTICAS ########### # Usadas para capturar efeitos marginais crescentes e decrescentes # Vamos trabalhar com a base de dados >>>> Salário e Experiência Salario = read.dta("WAGE1OLD.dta") View(Salario) # Rodaremos uma regressão de salário hora contra experiência e experiência ao quadrado regsalario = lm( Salario$wage ~ Salario$exper + Salario$expersq, data=Salario) summary(regsalario) # O primerio ano de experiência equivale a um aumento em aproximadamente 30 centavos # na hora salário. O segundo vale menos. Cerca de 28,6 centavos >> 0.298 - 2(0.0061). # Graficamente, percebemos que com cerca de 25 anos o salário hora começa # a diminuir com a experiência plot(Salario$exper, Salario$wage, pch=16, xlab = "Experiência", ylab = "Salário", cex.lab = 1.3, col = "blue", lwd = 1 ) points(Salario$exper, predict(regsalario), col = "darkgreen", lwd = 10) # FIM