* Exercício 1 * a ) * Use o comendo cd para mudar o diretório de trabalho. Abaixo está um exemplo. * Mude para o diretório onde estão os dados cd "C:\Users\dcplab\Desktop\Murilo\Lab 8" * Abre o banco use "Coxappend_clean.dta", clear * Regressão reg enps c.lnml##c.eneth * b ) * Checa estatísticas descritivas das variáveis sum enps lnml eneth * Efeitos marginais de lnml em diferentes valores de eneth quietly margins, dydx(lnml) at(eneth=(1(.1)3.5)) marginsplot * Efeitos marginais de eneth em diferentes valores de lnml quietly margins, dydx(eneth) at(lnml=(1(.1)5)) marginsplot * Exercício 2 * Método para deletar aleatoriamente variáveis do banco * Determine a semente usada, para que os resultados sejam comparáveis na classe toda set seed 45678 * Gera uma variável aleatória gen rn = runiform() * Observa detales dela sum rn, detail * Grava o 3o. quartil scalar x= r(p75) * O valor do 3o. quartil, apenas por curiosidade scalar list x * Deleta aleatoriamente 25% das variáveis replace enps=. if rn >= x * Deleta a variável não usada capture drop rn reg enps c.lnml##c.eneth * Salva o banco * Temos que usar o "saveold", pois o Amélia não lê o formato novo do STATA saveold "Coxappend_new.dta", replace * Efeitos marginais de lnml em diferentes valores de eneth quietly margins, dydx(lnml) at(eneth=(1(.1)3.5)) marginsplot * Efeitos marginais de eneth em diferentes valores de lnml quietly margins, dydx(eneth) at(lnml=(1(.1)5)) marginsplot * Exercício 4 * Importa o banco gerado pelo Amelia import delimited "Coxappend_new-imp1.csv", clear * Mantem apenas a variável ID e a variável de interesse keep enps country * Muda o nome da variável, para evitar problemas de compatibilidade rename enps enpsImputed * Salva como dta save "Coxappend_new-imp1.dta", replace * Importa o banco de dados original use "Coxappend_clean.dta", clear * insere o dado imputado no banco merge 1:1 country using "Coxappend_new-imp1.dta" * Compara as variáveis sum enps enpsImputed list country enps enpsImputed if enps != enpsImputed * Exercício 5 reg enpsImputed c.lnml##c.eneth * Efeitos marginais de lnml em diferentes valores de eneth quietly margins, dydx(lnml) at(eneth=(1(.1)3.5)) marginsplot * Efeitos marginais de eneth em diferentes valores de lnml quietly margins, dydx(eneth) at(lnml=(1(.1)5)) marginsplot * Exercício 6 clear all * Cria um array com os nomes dos arquivos que serão importados .arquivos=.object.new .arquivos.Declare array list .arquivos.list[1]="Coxappend_new-imp1.csv" .arquivos.list[2]="Coxappend_new-imp2.csv" .arquivos.list[3]="Coxappend_new-imp3.csv" .arquivos.list[4]="Coxappend_new-imp4.csv" .arquivos.list[5]="Coxappend_new-imp5.csv" * Cria as matrizes que serão usadas para guardar os valores do loop matrix coefs = (1,2,3,4) matrix Vars = (1,2,3,4) * Faz um loop em todos os arquivos, guardando as variáveis de interesse forval f=1/`=`.arquivos.list.arrnels'' { * Mostra o Arquivo do loop display `"`.arquivos.list[`f']'"' * Importa o arquivo do loop import delimited `"`.arquivos.list[`f']'"', clear * Renomeia a variável enps, para evitar confusão rename enps enpsImputed * Gera a variável de interação gen lnml_eneth = lnml * eneth * Roda a regressão no background quietly reg enpsImputed c.lnml##c.eneth * Guarda os coeficientes da regressão em uma matriz matrix coefsNew=e(b) matrix coefs= coefs\coefsNew * Guarda a variância dos parâmetros em uma matriz ** Matriz de variância e covariância matrix Var=e(V) ** Guarda a variância dos parâmetros scalar Var1 = Var[1,1] scalar Var2 = Var[2,2] scalar Var3 = Var[3,3] scalar Var4 = Var[4,4] ** Guarda a variância dos parâmetros na matrix Vars matrix Var_Model = (Var1, Var2, Var3, Var4) matrix Vars= Vars\Var_Model * Salva o arquivo em formato dta antigo local j =substr(`"`.arquivos.list[`f']'"',15,4) display "`j'" saveold `j', replace } * * Retira a primeira linha das matrizes matrix coefs = coefs[2...,1...] matrix Vars = Vars[2...,1...] * Para ficar mais claro, vamos colocar nomes nas colunas matrix colnames coefs = lnml eneth c.lnml#c.eneth _cons matrix colnames Vars = lnml eneth c.lnml#c.eneth _cons * Mostra as matrizes criadas matrix list coefs // matrix dos coeficients beta matrix list Vars // matrix da variância dos coeficients beta * Exercício 7 * Cria uma matrix de uma coluna, com o número de linhas de coefs, com valores 1 ** O comando "rowsof" (rows of...) mostra número de linhas de uma coluna ** O comando J, cria uma matrix com os seguintes parâmetros: *** J(Número de linhas, Número de Colunas, Valores) matrix U = J(rowsof(coefs),1,1) // 5 linhas, 1 coluna, valores iguais a 1 * Visualiza a matrix U matrix list U * Multiplicando U' (U transposto) por coefs, temos a soma das colunas de coef matrix SumCoefs = U'*coefs matrix list SumCoefs * Dividindo a soma das colunas pelo número de linhas, temos a média aritmética matrix MeanCoefs = SumCoefs/rowsof(coefs) * Aqui temos a média dos coeficientes matrix list MeanCoefs * Exercício 8 * Usando o procedimentos do exercício anterior, encontramos a média das * variâncias matrix U = J(rowsof(Vars),1,1) matrix SumVars = U'*Vars matrix MeanVars = SumVars/rowsof(Vars) * Aqui temos a média das variâncias matrix list MeanVars * Vamos encontrar a variação entre os coeficientes ** Usaremos o comando matricial J para criar uma matriz com uma coluna, m linhas. ** e valores iguais à média de dos parâmetros (obtida no exercício anterior). *** Exemplo matrix meanBeta1 = J(rowsof(coefs),1,MeanCoefs[1,1]) matrix list meanBeta1 * Agora iremos substrair as colunas da matrix coef pela respectiva média * Ou sea, calcularemos (q - qbar) matrix VarBetaCol1 = coefs[1...,1] - J(rowsof(coefs),1,MeanCoefs[1,1]) matrix VarBetaCol2 = coefs[1...,2] - J(rowsof(coefs),1,MeanCoefs[1,2]) matrix VarBetaCol3 = coefs[1...,3] - J(rowsof(coefs),1,MeanCoefs[1,3]) matrix VarBetaCol4 = coefs[1...,4] - J(rowsof(coefs),1,MeanCoefs[1,4]) ** Observa os valores criados matrix list VarBetaCol1 matrix list VarBetaCol2 matrix list VarBetaCol3 matrix list VarBetaCol4 * Agora vamos calcular (qbar - qbar)^2 ** Cria uma matrix com os valores (q - qbar) matrix VarBetaCol = (VarBetaCol1, VarBetaCol2, VarBetaCol3, VarBetaCol4) matrix list VarBetaCol * Valor de m * lembrando que rowsof(Vars) é "rows of matrix Vars" scalar m = rowsof(VarBetaCol) scalar list m // Observa o valor de m * Número de colunas da matriz scalar c = colsof(VarBetaCol) * Cria uma matriz igual a (q - qbar)^2 ** Infelizmente, não há como fazer isso sem um loop que eleva ao quadrado ** cada elemento da matrix VarBetaCol, um elemento por vez. matrix VarBetaColSq = VarBetaCol forval i = 1/`= rowsof(Vars)' { forval j = 1/`= colsof(Vars)' { matrix VarBetaColSq[`i', `j'] = VarBetaCol[`i', `j']^2 } } * * Matrix com os valores (q - qbar)^2 matrix list VarBetaColSq * Somatória de (q - qbar)^2 ** Usaremos o mesmo métodos do exercício 7 matrix SumVarBetaColSq = U'*VarBetaColSq matrix list SumVarBetaColSq ** S = (qbar - qbar)^2 / m - 1 matrix VarBeta = SumVarBetaColSq / (m - 1) matrix list VarBeta * Agora podemos calcular a variância conjunta dos valores beta. ** Var Beta imputado = média Var interna + Var entre betas * (1 + 1/m) scalar VarImputation1 = MeanVars[1,1] + VarBeta[1,1] * (1 + 1/m) scalar VarImputation2 = MeanVars[1,2] + VarBeta[1,2] * (1 + 1/m) scalar VarImputation3 = MeanVars[1,3] + VarBeta[1,3] * (1 + 1/m) scalar VarImputation4 = MeanVars[1,4] + VarBeta[1,4] * (1 + 1/m) * A lista das variâncias dos parâmetros dos valores imputados scalar list VarImputation1 VarImputation2 VarImputation3 VarImputation4 * O erro padrão é a raiz da variância scalar SEImputation1 = sqrt(VarImputation1) scalar SEImputation2 = sqrt(VarImputation2) scalar SEImputation3 = sqrt(VarImputation3) scalar SEImputation4 = sqrt(VarImputation4) * Erro padrão dos betas de multiple imputation scalar list SEImputation1 SEImputation2 SEImputation3 SEImputation4 * Só para lembrar, aqui estão os valores médios dos betas matrix list MeanCoefs * Exercício 10 miest imp regress enpsImputed lnml eneth lnml_eneth