###################################### ###### AULA CAP. 7 - WOOLDRIGDE ###### ###### Variáveis Dummies ###### ###################################### # 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/Dummy") # 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 ########## ####################### # A variável binária (também conhecidas como dummy ou zero-um) são variáveis qualitativas. # Exemplos de variáveis qualitativas: Sexo, região, cor # 1) Exemplo da base de dados >>> Salários Sal_mulher = read.dta("WAGE1OLD.dta") View(Sal_mulher) # Nesta base female (feminino) assume valor 1, logo homens são caracterizados # pelo número zero. Da mesma forma married (casados) são caracterizados pelo # número 1, enquanto que solteiros pelo número 0. # Os valores 0 e 1 são arbitrários, poderíamos usar quaisquer dois valores # diferentes. Usamos 0 e 1 porque nos ajudará na interpretação dos resultados # Rodamos a seguinte regressão com a inclusao de uma variável binaria "female" regsal_mulher = lm(Sal_mulher$wage ~ Sal_mulher$female + Sal_mulher$educ + Sal_mulher$exper + Sal_mulher$tenure, data=Sal_mulher) summary(regsal_mulher) # O coeficiente feminino registra a diferença da média salarial # por hora entre homens e mulheres, dado o mesmo nível de educação # experiência e permanência no cargo. # Em média, nessa base, as mulheres ganham 1,81 dolares a menos # que homens por hora, considerando as outras variáveis fixas. # Se a estimativa fosse sem nenhum controle, por exemplo regsal_mulher1 = lm(Sal_mulher$wage ~ Sal_mulher$female, data=Sal_mulher) summary(regsal_mulher1) # O intercepto é o salário hora do homem, que no caso é # cerca de 7,10 centavos hora. O coeficiente feminino # é a diferença no salário médio entre homens e mulheres # (2,51 dólares a hora). Assim, o salário médio na amostra das mulheres é: sal_medio_mulher = 7.0995 - (2.5118*1) sal_medio_mulher # 4,5877 doláres por hora # Por que o coeficiente de comparação de salários entre sexo reduziu? # A razao é que nessa base os fatores como experiencia, permanencia e educacao # sao mais baixos, em media, para mulheres do que para homens. ####### vARIÁVEL DEPENDENTE COMO LOG ####### # Qual seria a interpretacao da variável binaria se a variavel dependente # fosse expressa em log? # Os coeficientes terao uma interpretação percentual # Usamos a base de dados de preço de imóveis. Preco_Imo = read.dta("HPRICE1OLD.dta") # Usamos uma variável binária: colonial regpreco = lm( log(Preco_Imo$price) ~ log(Preco_Imo$lotsize) + log(Preco_Imo$sqrft) + Preco_Imo$bdrms + Preco_Imo$colonial, data=Preco_Imo) summary(regpreco) # Dada as outras variáveis a diferença em logpreco entre um movel estilo # colonial e outro de outro estilho e de 0,054. Isso significa prever que # um movel de estilo colonial seja vendido por cerca de 5,4% a mais, mantendo-se # todos os outros fatores fixos. # Quando o coeficiente de uma variavel binaria sugere grande mudanca proporcional em # y, a diferença percentual exata pode ser obtida exatamente como no calculo da # semi-elasticidade >>> 100*(exp(â) - 1), onde â é o coeficiente da variável binária. # Reestimando a regressão de salário, com a var. dependente em # formato log, entre homens e mulheres regsal_mulher2 = lm(Sal_mulher$lwage ~ Sal_mulher$female + Sal_mulher$educ + Sal_mulher$exper + Sal_mulher$expersq + Sal_mulher$tenure + Sal_mulher$tenursq , data=Sal_mulher) summary(regsal_mulher2) # Agora com log do salario, usando a mesma aproximacao como no exemplo # anterior, mantendo as outras covariadas fixas, as mulheres ganham em torno # 100(0,2965) = 29,7% a menos que os homens. Ou fazendo uma aproximação mais exata sal_dif_mulher = 100*(exp(-0.2965) - 1) sal_dif_mulher # Que nos dá um valor de 25,67% de diferença. ####### CATEGORIAS MÚLTIPLAS ####### # Primeiro criamos as variáveis binárias homens e solteiros male = as.numeric( with ( Sal_mulher, ifelse ( ( female == 1 ), 0 , 1 ) ) ) single = as.numeric( with ( Sal_mulher, ifelse ( ( married == 1 ), 0 , 1 ) ) ) # Apos, criamos as variáveis de interacao marrmale = Sal_mulher$married*male marrfemale = Sal_mulher$married*Sal_mulher$female singmale = single*male singfemale = single*Sal_mulher$female # Agora rodamos a regressao com as variaveis de interacao # Considerando diferenca salariais entre quatro grupos: # homens casados, mulheres casadas, homens solteiros e mulheres solteiras. # Em que o grupo base é "homens solteiros" regsal_inter = lm(Sal_mulher$lwage ~ marrmale + marrfemale + singfemale + Sal_mulher$educ + Sal_mulher$exper + Sal_mulher$expersq + Sal_mulher$tenure + Sal_mulher$tenursq , data=Sal_mulher) summary(regsal_inter) # Lembrando que o grupo base é "homens solteiros", entao # os coeficientes das interacoes medem a diferenca proporcional # nos salários relativamente aos homens solteiros # Por exemplo, homens casados ganham cerca de 21,3% mais do que # homens solteiros, mantendo fixas educação, experiencia e # permanencia. ### AMARDILHA DA VARIAVEL BINARIA ## # se no caso, colassemos todas as variaveis de interacao. regsal_inter1 = lm(Sal_mulher$lwage ~ marrmale + marrfemale + singfemale + singmale + Sal_mulher$educ + Sal_mulher$exper + Sal_mulher$expersq + Sal_mulher$tenure + Sal_mulher$tenursq , data=Sal_mulher) summary(regsal_inter1) # geraria a armadilha da variavel binaria, introduzida colinearidade perfeita. # Isso serve para varios exemplos que a soma da binaria resulta em 1. Por exemplo # Colocar na regressao duas binarias de sexo, homem e mulher # cinco binarias de regioes, sul, sudeste, centroeste, nordeste, nordeste. E assim # por diante. # Se ao inves de se buscar a diferenca salarial entre homens solteiros e as outras binarias # buscassemos comparar a diferenca salarial entre mulheres casadas e solteiras # simplesmente subtraimos os coeficientes das duas binarias. dif_mulhercasa_mulhersolt = -0.1982676 - (-0.1103502) dif_mulhercasa_mulhersolt # O que significa que mulheres casadas ganham menos que mulheres solteiras # cerca de 9%. # O que pode ser visto se mudarmos a variavel base para "mulheres casadas" regsal_inter2 = lm(Sal_mulher$lwage ~ marrmale + singfemale + singmale + Sal_mulher$educ + Sal_mulher$exper + Sal_mulher$expersq + Sal_mulher$tenure + Sal_mulher$tenursq , data=Sal_mulher) summary(regsal_inter2) ##### Interacao binarias e variaveis continuas ### # Por exemplo, criando um variavel de interacao "feminino" e "educacao". female_educ = Sal_mulher$female*Sal_mulher$educ # Rodando uma regressao com a variavel de interacao regsal_inter3 = lm(Sal_mulher$lwage ~ Sal_mulher$female + Sal_mulher$educ + female_educ + Sal_mulher$exper + Sal_mulher$expersq + Sal_mulher$tenure + Sal_mulher$tenursq , data=Sal_mulher) summary(regsal_inter3) # O retorno da educacao para homens e de 0,082 ou 8,2%. # Para mulheres no entando o retorno é de retor_mulher_educ = 0.0823692 + (-0.0055645) retor_mulher_educ # Isto e, 7,6%. Uma diferenca de 0,56% que nao # e estatisticamente significativa. ### VARIAVEL DEPENDENTE BINARIA ## # O que acontece se queremos explicar um evento qualitativo # No caso simples queremos explicar um resultado binário # (assume apenas dois valores: zero ou um) # MUDANCA DE INTERPRETACAO: como y só assume dois valores, o coeficiente # estimado nao pode ser interpretado como mundaca em y devido # a aumento de um unidade em x, mantendo todos os outros # fatores # NO MODELO DE PROBABILIDADE LINEAR (MPL), o coeficiente mede a mudanca # na probabilidade de sucesso quando x muda, mantendo os outros fatores # fixos # EXEMPLO : MROZ(1987) forc_trab_mulh = read.dta("MROZOLD.dta") # Queremos medir a probabilidade da mulher estar na forca de # trabalho dada suas caracteristicas regforc = lm(forc_trab_mulh$inlf ~ forc_trab_mulh$nwifeinc + forc_trab_mulh$educ + forc_trab_mulh$exper + forc_trab_mulh$expersq + forc_trab_mulh$age + forc_trab_mulh$kidslt6 + forc_trab_mulh$kidsge6, data =forc_trab_mulh ) summary(regforc) # Todas as covariadas são estatisticamente significantes, execeto ter criança maior de 6 anos. # Um ano adicional de educacao nessa regressao (mantendo os outros fatores fixos), nos indica # que aumenta a probabilidade de participacao na forca de trabalho em 0,038. Ou seja, 10 anos # de educacao aumenta a probabilidade de estar na forca de trabalho em 0,38. # A experiencia aumenta a chance de estar na forca de trabalho, mas o termo ao quadrado nos diz # que esses aumentos são decrescentes. Limite = (0.0394924)/(2*(-0.0005963)) Limite # Com cerca de 33 anos de experiencia, aumentos nos anos de experiencia reduz a probabilidade # de se estar na forca de trabalho. # O problema com esse modelo é que podemos encontrar previsoes menores do que zero # ou maiores do que um. valor_previs = predict(regforc) negativo = subset(valor_previs, valor_previs <=0) negativo maior_1 = subset(valor_previs, valor_previs >1) maior_1 plot(forc_trab_mulh$educ, valor_previs) # Apesar desse e alguns outros problemas, essa forma de obter o efeito # sobre a probabilidade é bastante util ### Vamos Fazer Um Exemplo Juntos ### # Usando a base de dados "CRIME1OLD.dta" pag.250 book e pg. 256 Livro