REGRESSÃO LINEAR SIMPLES Noções preliminares

Documentos relacionados
Análise de Resíduos. investigar características que comprometem a validade do MRLS:

Métodos Quantitativos para Avaliação de Políticas Públicas

Modelos de Regressão Linear Simples - Análise de Resíduos

Modelos de Regressão Linear Simples - Análise de Resíduos

Correlação e Regressão

UNIVERSIDADE FEDERAL DO PARANÁ CURSO DE ESTATÍSTICA. Jayme Gomes dos Santos Junior Luciana Helena Kowalski

Exemplo de Regressão Linear Simples

Falha(s) nas pressuposições da ANOVA

Regressão linear simples

Mais Informações sobre Itens do Relatório

Modelos de Regressão Múltipla - Parte VIII

UNIVERSIDADE FEDERAL DO PARANÁ CURSO ESTATÍSTICA CALEB SOUZA GRR DENNIS LEÃO GRR LUAN FIORENTIN GRR

MAE Estatística Descritiva - 1 o semestre de 2017 Professora: Márcia D Elia Branco Monitora PAE: Simone Harnik Gabarito - Lista 4

AULA 09 Regressão. Ernesto F. L. Amaral. 17 de setembro de 2012

Regressão. PRE-01 Probabilidade e Estatística Prof. Marcelo P. Corrêa IRN/Unifei

Associação entre duas variáveis

Caros Alunos, segue a resolução das questões de Estatística aplicadas na prova para o cargo de Auditor Fiscal da Receita Municipal de Teresina.

A UTILIZAÇÃO DE MÉTODOS ESTATÍSTICOS NO PLANEJAMENTO E ANÁLISE DE ESTUDOS EXPERIMENTAIS EM ENGENHARIA DE SOFTWARE (FONTE:

ANÁLISE DOS RESÍDUOS. Na análise de regressão linear, assumimos que os erros E 1, E 2,, E n satisfazem os seguintes pressupostos:

Análise de Regressão Prof. MSc. Danilo Scorzoni Ré FMU Estatística Aplicada

BIE5782. Unidade 7: INTRODUÇÃO AOS MODELOS LINEARES

9 Correlação e Regressão. 9-1 Aspectos Gerais 9-2 Correlação 9-3 Regressão 9-4 Intervalos de Variação e Predição 9-5 Regressão Múltipla

Aula 2 Uma breve revisão sobre modelos lineares

Capítulo 9 - Regressão Linear Simples (RLS): Notas breves

ME613 - Análise de Regressão

Notas de Aulas Econometria I ** Eduardo P. Ribeiro, 2010 PARTE II

aula ANÁLISE DO DESEMPENHO DO MODELO EM REGRESSÕES

Lucas Santana da Cunha de julho de 2018 Londrina

Aula Prática 1. Uso do R com exemplos Adaptação: Flávia Landim/UFRJ

Métodos Estatísticos Avançados em Epidemiologia

Na aula do dia 24 de outubro analisamos duas variáveis quantitativas conjuntamente com o objetivo de verificar se existe alguma relação entre elas.

Universidade Federal do Paraná (UFPR) Bacharelado em Informática Biomédica. Regressão. David Menotti.

Análise Multivariada Aplicada à Contabilidade

Análise de Regressão EST036

Análise de Regressão Linear Simples e

Os Mínimos Quadrados Ordinários Assintóticos

Esse material foi extraído de Barbetta (2007 cap 13)

Modelos de Regressão Linear Simples - parte III

Planejamento de Experimentos

Métodos Quantitativos Aplicados

RELATÓRIO DA ANÁLISE DE REGRESSÃO (Ex1 - Reg. Linear Simples) ****************************** PASSO 1 *******************************

VERIFICAÇÃO DA ADEQUAÇÃO DO MODELO DE ANÁLISE DE VARIÂNCIA ANÁLISE DE RESÍDUOS

Testes de Hipóteses. Ricardo Ehlers Departamento de Matemática Aplicada e Estatística Universidade de São Paulo

REGRESSÃO LINEAR Parte I. Flávia F. Feitosa

Introdução ao modelo de Regressão Linear

b) Variáveis Aleatórias Contínuas

Homocedasticidade? Exemplo: consumo vs peso de automóveis

Resolução da Prova de Matemática Financeira e Estatística do ISS Teresina, aplicada em 28/08/2016.

1 z 1 1 z 2. Z =. 1 z n

Aula 03 Estatística, Correlação e Regressão

Coleta e Modelagem dos Dados de Entrada

Modelos de Regressão Linear Simples - Erro Puro e Falta de Ajuste

b) Variáveis Aleatórias Contínuas

Prova de Estatística

UNIVERSIDADE FEDERAL DA FRONTEIRA SUL Campus CERRO LARGO. PROJETO DE EXTENSÃO Software R: de dados utilizando um software livre.

EXPERIMENTAÇÃO AGRÍCOLA. Profa. Dra. Amanda Liz Pacífico Manfrim Perticarrari

Quiz Econometria I versão 1

Coleta e Modelagem dos Dados de Entrada

UNIVERSIDADE FEDERAL DO PARANÁ. Adriane Machado (GRR ), Cinthia Zamin Cavassola(GRR ) e Luiza Hoffelder da Costa(GRR )

Gabarito e resolução da prova de seleção PPGE FURG Estatística

Estatística. Correlação e Regressão

Hoje vamos analisar duas variáveis quantitativas conjuntamente com o objetivo de verificar se existe alguma relação entre elas.

Métodos Numéricos e Estatísticos Parte II-Métodos Estatísticos

ECONOMETRIA. Prof. Patricia Maria Bortolon, D. Sc.

Princípios em Planejamento e Análise de Dados Ecológicos. Regressão linear. Camila de Toledo Castanho

CE062c José Luiz Padilha da Silva e Cesar Augusto Taconeli 06 de novembro de 2018

Modelos de Regressão Linear Simples parte I

Modelos Lineares Generalizados - Verificação do Ajuste do Modelo

CE062c José Luiz Padilha da Silva e Cesar Augusto Taconeli 13 de setembro de 2018

Modelos de Regressão Linear Simples - parte I

1 semestre de 2014 Gabarito Lista de exercícios 3 - Estatística Descritiva III C A S A

AULA 4 - MQO Simples: Propriedades algébricas e Estatísticas

O objetivo dessa apostila é apresentar os comandos básicos do software R, especialmente os voltados para a estimação de modelos econométricos.

Análise da Regressão. Prof. Dr. Alberto Franke (48)

Cálculo das Probabilidades e Estatística I

MÓDULO V: Análise Bidimensional: Correlação, Regressão e Teste Qui-quadrado de Independência

Métodos Estatísticos Avançados em Epidemiologia

ANÁLISE DE REGRESSÃO

EXPERIMENTAÇÃO ZOOTÉCNICA. Profa. Dra. Amanda Liz Pacífico Manfrim Perticarrari

x n 3.3. Medidas descritiva de variáveis quantitativas: Medidas de Posição: Considere uma amostra com n observações: x 1, x 2,..., x n.

Estatística Aplicada ao Serviço Social

CAPÍTULO 4 DESCRIÇÃO E EXPLORAÇÃO DOS DADOS 2ª parte

AULA 06 Correlação. Ernesto F. L. Amaral. 04 de outubro de 2013

Transcrição:

Pàg 1 de 66

Quando temos duas variáveis numéricas podemos ter: Relação funcional entre as duas variáveis Y = f(x) Relação estatística entre as duas variáveis A relação entre X e Y não é perfeita Exemplo de relação funcional e relação estatística Pàg 2 de 66

Pàg 3 de 66

Pàg 4 de 66

Pàg 5 de 66

Pàg 6 de 66

Pàg 7 de 66

Pàg 8 de 66

Pàg 9 de 66

Pàg 10 de 66

Pàg 11 de 66

Após executar o script acima obtemos, dentre outros, o seguinte resultado: A equação de regressão acima nos diz que: Se não aplicarmos dose alguma de fertilizante (isto é X = 0) então esperamos que o talhão de 1 ha produza 69.867 kg da cultura plantada. A cada aumento de uma unidade de dose de fertilizante, isto é a cada kg de fertilizante aplicado, espera-se que, além da produção de 69.867 kg, seja produzido adicionalmente 8.442 kg da cultura plantada. Pàg 12 de 66

E este outro resultado apresentado abaixo, o que significa? Bem, estamos lidando com uma amostra (no caso n = 28 talhões). Foi com base nesta amostra que estimamos β 0 e β 1 através do algoritmo de mínimos quadrados. Este procedimento matemático foi feito via comando lm do R. Ok, mas por se tratar de uma amostra, devemos realizar um teste estatístico de hipótese, ou simplesmente um teste de hipótese. Aliás, o procedimento lm já realiza dois testes de hipótese. Um teste para β 0 e outro para β 1. Pàg 13 de 66

O teste de hipótese é para nós uma caixa preta. Mas vamos tentar entender o resultado que ele nos indica. Isto é importante para considerarmos se a reta de regressão obtida pode ser, de fato, representativa para o nosso problema. O primeiro teste de hipótese testa a seguinte hipótese denominada H 0 (hipótese nula) contra a hipótese alternativa H a : H 0 : β 1 = 0 X H a : β 1 0 Em essência, queremos saber se existe uma reta de regressão ou, em outras palavras, se a variável preditora X (em nosso exemplo, DOSE de fertilizante) tem relação estatística com a produção da cultura (Y), aumentando ou diminuindo conforme o valor de X. Se X tem relação estatística Y, então vai existir um valor não nulo para β 1. Então o teste tende a apontar a hipótese alternativa H a. Lembre-se que β 1 é o coeficiente angular da reta!!!! Mas se X não tem relação estatística com Y, então β 1 é nulo, ou seja, β 1 = 0. Pàg 14 de 66

Como interpretar o resultado do teste de hipótese para β 1 sem entender a lógica do mesmo? Passo 1 Com base no valor estimado de β 1, que é o coeficiente da variável preditora X (em nosso exemplo, DOSE) é calculado um t valor (t value). Passo 2 O t valor (t value) é uma espécie de representante do valor estimado β 1. Então se calcula a probabilidade de se obter este t valor (t value) ou um valor maior (Pr > t ), supondo que H 0 é a hipótese correta!!! Passo 3 Normalmente se decide assim: Se Pr > t for menor ou igual a 5%, então aceitamos a hipótese H a. Caso contrário aceitamos H 0. Pàg 15 de 66

Veja na figura abaixo o resultado que obtivemos: Passo 1 O valor estimado de β 1 é 8.4415. O t valor correspondente é t = 10.613 Passo 2 Supondo H 0 correta (isto é supondo que β 1 = 0, o que significa que não há relação linear) a probabilidade de se obter t value maior ou igual a 10.613 é de 6.06e-11 = 6.06 x 10-11 = 0.0000000000606 = 0.000000000000606 %. Passo 3 Como Pr(> t ) = 6.06 x 10-11 < 5%, então aceitamos a hipótese H a, isto é, β 1 0, o que significa dizer que há evidências de que ocorre relação linear entre as variáveis PROD e DOSE. Pàg 16 de 66

Uma vez que o modelo de regressão linear seja construído, é possível calcular uma medida de associação linear entre a variável resposta e a variável preditora/explicativa. Esta medida denomina-se coeficiente de determinação e é representada pelo símbolo R 2, onde 0 R 2 1 A interpretação de R 2 é a seguinte: quanto mais próximo de 1 for R 2, significa que a variável preditora explica melhor a variabilidade da variável resposta. Quanto mais próximo R 2 estiver de zero, significa que a variável preditora não é boa para explicar a variabilidade de valores da variável resposta. Em nosso exemplo R 2 = 81,24%. A variável DOSE explica bem a variabilidade de valores da variável resposta PROD Pàg 17 de 66

Pàg 18 de 66

Pàg 19 de 66

Sobre a influência dos pontos no modelo de regressão... Pàg 20 de 66

Pàg 21 de 66

Pàg 22 de 66

Sobre a alvancagem (leverage) dos pontos no modelo de regressão... Pàg 23 de 66

Sobre os pontos discrepantes (outliers) no modelo de regressão... Pàg 24 de 66

Para medir o grau de influência de cada ponto no modelo de regressão podemos usar a distância de Cook D i... REGRESSÃO LINEAR SIMPLES Noções preliminares Pàg 25 de 66

Veja abaixo as distâncias de Cook D i calculadas para o modelo de regressão com os 28 talhões. Note que o gráfico destacou os talhões 7, 14 e 25. Contudo, apresentam baixo valores para D i indicando baixa influência no modelo de regressão ajustado com os 28 pontos. Então podemos considerar que neste grupo de 28 pontos não ocorre ponto influente, se considerarmos, por exemplo, ponto influente com D i >= 0.5. Pàg 26 de 66

Se aos 28 talhões acrescentarmos o talhão 29 com DOSE = 75 kg e PROD = 92 kg obteremos o resultado abaixo. Observa-se que o talhão 29 é realmente um ponto influente (D 29 = 2.25) e é um ponto discrepante (outlier) com alta alavancagem (high leverage). Sua permanência ou retirada produz modelos de regressão consideravelmente diferentes entre si. Pàg 27 de 66

Agora se aos 28 talhões acrescentarmos o talhão 29 com DOSE = 32 kg e PROD = 610 kg obteremos o resultado abaixo. Observa-se que o talhão 29 não é um ponto influente (D 29 = 0.182) apesar de poder ser considerado um ponto discrepante (outlier) porém com baixa alavancagem (low leverage). Sua permanência ou retirada não altera significativamente o modelo de regressão Pàg 28 de 66

Para medir o grau de alavancagem (leverage) de cada ponto no modelo de regressão podemos usar o hat-value h i... h i com valores altos indicam alta alavancagem (high leverage) mas não necessariamente apresentam alta influência no modelo Como regra prática, h i com valor que seja maior que o dobro do valor médio dos h i da amostra deve ser analisado mais detalhadamente. Se a amostra de dados é muito grande, recomenda-se considerar h i com valor que seja maior que o triplo do valor médio dos h i Pàg 29 de 66

Veja abaixo os hat-values h i calculadas para o modelo de regressão com os 28 talhões. Note que o ponto 16 apresentará alta alavancagem (high leverage) se considerarmos que h 16 > 2h medio (h 16 = 0.1588 e h medio = 0.0714) Pàg 30 de 66

Se aos 28 talhões acrescentarmos o talhão 29 com DOSE = 75 kg e PROD = 92 kg obteremos o resultado abaixo. Note que o talhão 29 (h 29 = 0.191) realmente é um ponto de alta alavancagem (e já vimos que é também influente...) Já o ponto/talhão 16 foi considerado de alta alavancagem pelo fato de seu valor ser mais que o dobro do valor médio (h 16 = 0.147 > (2* h medio ). Mas não é influente para o modelo. Pàg 31 de 66

Para medir o grau de discrepância (outlier) de cada ponto no modelo de regressão poderíamos usar os resíduos semiestudentizados (semistudentized residuals) e* i... Note que raiz(mse) refere-se ao grupo de resíduos... Mas cada resíduo e i pode apresentar variância(e consequentemente desvio padrão) diferente de alguns outros e i. Então os resíduos semiestudentizados, embora possam, não são usados para detectar outliers... Pàg 32 de 66

Para medir o grau de discrepância (outlier) de cada ponto no modelo de regressão podemos usar os resíduos padronizados (standardized residuals) r i também denominados resíduos studentizados internamente (internally studentized residuals). Os resíduos padronizados (standardized residuals) dos 28 talhões não apresentam outliers Pàg 33 de 66

Se aos 28 talhões acrescentarmos o talhão 29 com DOSE = 75 kg e PROD = 92 kg obteremos o resultado abaixo. Note que o talhão 29 (r 29 = -4.3657) realmente é um ponto discrepante (outlier) Pàg 34 de 66

Porquê Análise de Resíduos???? Pàg 35 de 66

Mas antes... vamos usar os resíduos para ver outras coisas em nossa massa de dados... Pàg 36 de 66

Vamos verificar a linearidade da função de regressão via gráfico da variável preditora X Resíduos. (No exemplo, a variável preditora é DOSE)... Observe que no gráfico DOSE versus Resíduos não se observa um padrão... os pontos estão espalhados de forma relativamente simétrica em relação ao resíduo 0... Então, a priori a linearidade é boa... Será? Um gráfico de resíduos consegue mostrar eventuais tendências... e queremos não encontrar tendência/padrão para poder considerar o modelo adequado... Pàg 37 de 66

Tem casos que o gráfico variável preditora versus resíduo vai apontar a não linearidade... veja abaixo... Note por exemplo que no gráfico acima Weight X Resíduo, poderíamos passar uma reta com inclinação pelos pontos... Isto é uma tendência (um padrão) que aponta que o modelo não está adequado... Pàg 38 de 66

Olha o exemplo abaixo (http://data.library.virginia.edu/diagnostic-plots/) Pàg 39 de 66

No exemplo abaixo, o gráfico de resíduos X variável resposta predita mostra que a regressão linear simples Y ~ X não é boa para representar a relação estatística entre Y e X, pois pelo gráfico nota-se um padrão de distribuição dos resíduos... Pàg 40 de 66

Veja abaixo a ideia conceitual de homocedasticidade e heterocedasticidade... Pàg 41 de 66

Para verificar a homocedasticidade dos resíduos... Para os 28 talhões temos: Pàg 42 de 66

Para verificar a homocedasticidade observando-se os gráficos devemos esperar que a linha vermelha (lowess curve) seja uniforme horizontalmente. No caso dos 28 talhões há indícios de heterocedasticidade. Assim, o requisito de homocedasticidade não é atendido, o que pode comprometer a validade do modelo de regressão linear construído... Veja abaixo outro exemplo: Pàg 43 de 66

Podemos também realizar testes de hipótese para verificar a ocorrência ou não de homocedasticidade. Neste teste temos: Hipótese nula H 0 : Hipótese alternativa H a : Ocorre homocedasticidade Não ocorre homocedasticidade (ocorre heterocedasticidade) Vamos realizar 3 teste de hipótese para averiguação de homocedasticidade: Teste de Breusch-Pagan NCV teste Tesste de Brown-Forsythe Lembre-se que se o p-valor do teste de hipótese for menor que 5%, adota-se o procedimento de rejeitar a hipótese H 0, aceitando portanto válida a hipótese H a. Em caso contrário, aceita-se H 0. Pàg 44 de 66

Vejamos os resultados dos testes para os dados dos 28 talhões E agora??? Em dois testes o p-valor foi maior que 5% (68,12% e 79,18%) indicando aceitação de H 0 e no teste de Brown- Forsythe foi significativo (1,44%) indicando aceitação de H a. Qual a sua decisão? Os resíduos apresentam ou não homocedasticidade? Pàg 45 de 66

Para verificar a normalidade dos resíduos... Para analisar a normalidade dos resíduos podemos usar (1) box plot; (2) histograma e (3) diagrama ramo-e-folhas dos resíduos. Estes gráficos apresentam maior utilidade quando a amostra de dados é grande. Para os 28 talhões temos: Pàg 46 de 66

Para analisar graficamente a normalidade dos resíduos podemos usa-se também o gráfico Q-Q plot (Quantile-Quantile plot) Veja o gráfico QQ plot para o exemplo dos 28 talhões... E então? Você acha que podemos sustentar a normalidade dos resíduos com base na observação do QQ plot? Pàg 47 de 66

APENDICE - SCRIPT R e Dados 28 talhões TALHAO;DOSE;PROD 1;33.2;476 2;58.8;514 3;30;400 4;52.6;578 5;52.8;512 6;30;284 7;47.4;576 8;30;226 9;30;334 10;41;420 11;61;580 12;19.8;318 13;20.8;248 14;10;244 15;12.6;178 16;5.2;126 17;8;82 18;51.8;430 19;55.8;482 20;24.6;194 21;37.8;280 22;47.6;412 23;46.4;522 24;62.6;652 25;15.8;110 26;41.4;490 27;41.4;358 28;36.6;414 Pàg 48 de 66

SCRIPT R #---> Obs.: para executar este script copie o comando abaixo e execute-o no ambiente do R ##### source("c:/estatistica/cursos/tut002_codr01.r") #--------------------------------------------------------------------------------------------- # Pegar o diretório atual... initial.dir<-getwd() #--------------------------------------------------------------------------------------------- # Mudar para o diretório de trabalho... setwd("c:/estatistica/cursos") #--------------------------------------------------------------------------------------------- # Carregar eventuais bibliotecas necessárias ao processamento... library("lmtest") library("car") library("hh") #--------------------------------------------------------------------------------------------- # Definir o arquivo "log" com resultados do processamento... #sink("result01.out", append = FALSE) #--------------------------------------------------------------------------------------------- # Ler os dados... vdados <- read.csv("tut002_dose_prod.csv", sep=";", dec=".", header=true, stringsasfactors = FALSE) #############vdados <- read.csv("tut002_dose_prod_29outlier.csv", sep=";", dec=".", header=true, stringsasfactors = FALSE) Pàg 49 de 66

cat("\n \n") cat("variáveis disponíveis\n") cat("-------------------- \n") print(names(vdados)) cat("\n \n") #-------------------------------------------------------------------------------------------- cat("\n \n") cat("dados da amostra\n") cat("----------------\n") print(vdados) cat("\n \n") ###sink("result09.txt", append = FALSE) #---------------------------------------------------------- # #---> aqui executa a regressão linear (com o comando lm) #... o resultado fica armazenado na variável vregrlin # vregrlin <- lm(vdados$prod ~ vdados$dose) #-------------------------------------------------------------------------------------------- Pàg 50 de 66

cat("\n \n") cat("estimadores obtidos via regressão linear\n") cat("----------------------------------------\n") print(vregrlin) #-------------------------------------------------------------------------------------------- cat("\n \n") cat("inferências para os estimadores de Beta0 e Beta1\n") cat("------------------------------------------------\n") print(summary(vregrlin)) #------------------------------------------------------------------------------ # Mostrar os resíduos... # vdataframeaux = cbind(vdados,vregrlin$fitted.values, vregrlin$residuals) cat("\n \n") cat("dados completos - mostrando resíduos\n") cat("------------------------------------\n") print(vdataframeaux) #------------------------------------------------------------------------------ # Mostrar variável preditora X resíduos... # vdataframeaux = cbind(vdados$dose, vregrlin$residuals) vdataframeaux = as.data.frame(vdataframeaux) Pàg 51 de 66

names(vdataframeaux)[names(vdataframeaux)=="v1"] <- "DOSE" names(vdataframeaux)[names(vdataframeaux)=="v2"] <- "RESÍDUO" cat("\n \n") cat("variável preditora X Resíduo\n") cat("----------------------------\n") print(vdataframeaux) #-------------------------------------------------------------------------------------------- cat("\n \n") cat("distância de Cook\n") cat("-----------------\n") vdistcook = cooks.distance(vregrlin) vdataframeaux = cbind(vdados$talhao,vdistcook) vdataframeaux = as.data.frame(vdataframeaux) names(vdataframeaux)[1] <- "TALHÃO" names(vdataframeaux)[2] <- "DIST_COOK" print(vdataframeaux) cat("\n \n") #-------------------------------------------------------------------------------------------- cat("\n \n") cat("hat-values\n") cat("----------\n") Pàg 52 de 66

vhatvalues = hatvalues(vregrlin) vmediahatvalues = mean(vhatvalues) cat("\n") cat("valor médio: hmedio = ") cat(vmediahatvalues) cat("\n\n") # #---> Hat values que requerem atenção... maior que o dobro da média... vstatushatvalues = c() for (i in 1:length(vHatValues)) { if (vhatvalues[i] > (2* vmediahatvalues)) { vstatushatvalues[i] = "***" } else { vstatushatvalues[i] = "" } } vdataframeaux = cbind(vdados$talhao,vhatvalues,vstatushatvalues) vdataframeaux = as.data.frame(vdataframeaux) names(vdataframeaux)[1] <- "TALHÃO" names(vdataframeaux)[2] <- "Hat Value (h)" names(vdataframeaux)[3] <- "Obs" print(vdataframeaux) cat("\n \n") #-------------------------------------------------------------------------------------------- Pàg 53 de 66

# f_calcula_mse <- function(avetnumerico) { vsomaquad = sum(avetnumerico * avetnumerico) vmse = vsomaquad /(length(avetnumerico) - 2) # 2 glib #--- return(vmse) } cat("\n \n") cat("resíduos semi-studentizados (semistudentized residuals)\n") cat("-------------------------------------------------------\n") cat("\n") cat("---> Para melhor detectar outliers usa-se os \n") cat(" resíduos padronizados (STANDARDIZED RESIDUALS) conhecidos por \n") cat(" INTERNALLY STUDENTIZED RESIDUALS...\n\n") vresiduos vmse = vregrlin$residuals = f_calcula_mse(vresiduos) vsemistudentizeedresiduals = vresiduos / sqrt(vmse) vdataframeaux = cbind(vdados$talhao, vresiduos, vsemistudentizeedresiduals) vdataframeaux = as.data.frame(vdataframeaux) names(vdataframeaux)[1] <- "TALHAO" names(vdataframeaux)[2] <- "Residuo" names(vdataframeaux)[3] <- "Residuo semistudentizado" print(vdataframeaux) cat("\n \n") Pàg 54 de 66

#-------------------------------------------------------------------------------------------- # # Testes de hipótese para verificação de homocedasticidade # cat("\n \n") cat("testes de hipótese para verificação de homocedasticidade\n") cat("--------------------------------------------------------\n") cat("\n") cat("1) Teste de Breush-Pagan\n") cat(" ---------------------\n") cat("\n") cat(" H0: ocorre homocedasticidade nos resíduos \n") cat(" Ha: não ocorre homocedasticidade nos resíduos \n") vbptest = bptest(vregrlin) print(vbptest) cat("\n") cat("2) NCV Test\n") cat(" --------\n") cat("\n") cat(" H0: ocorre homocedasticidade nos resíduos \n") cat(" Ha: não ocorre homocedasticidade nos resíduos \n") cat("\n") Pàg 55 de 66

vncvtest = ncvtest(vregrlin) print(vncvtest) cat("\n") cat("3) Brown-Forsythe Test \n") cat(" --------------------\n") cat("\n") cat(" H0: ocorre homocedasticidade nos resíduos \n") cat(" Ha: não ocorre homocedasticidade nos resíduos \n") cat("\n") cat(" Obs.: Este teste não depende da normalidade dos erros.\n") cat(" cat(" É um teste robusto quanto à forte não normalidade\n") dos dados. \n") vbrownforsythe = hov(prod ~ DOSE, data=vdados) print(vbrownforsythe) cat("\n") #---------------------------------------------------------------------------------- # Gráfico dos dados com reta de regressão # dev.new() # Or X11() dev.1 <- as.integer(dev.cur()) dev.set(dev.1) plot(vdados$dose, vdados$prod, main="dados com reta de regressão", Pàg 56 de 66

xlab="dose (Kg)", ylab="produção (Kg)", pch=20) abline(vregrlin, col="red", lwd=4) #---------------------------------------------------------------------------------- # Gráficos para verificar a distância de Cook # dev.new() # Or X11() dev.2 <- as.integer(dev.cur()) dev.set(dev.2) par(mfrow=c(1,2)) #---> Grafico 1... plot(vdados$dose, vdados$prod, main="os dados dos 28 talhões", cex.main=0.8, xlab="dose (Kg)", ylab="produção (Kg)", pch=20) abline(vregrlin, col="blue", lwd=4) text(vdados$dose, vdados$prod, labels=vdados$talhao, pos=1, cex=0.7, col="red") #---> Grafico 2... plot(vregrlin, which = 4, xaxt="n", main="distância de Cook \n Regressão com 28 talhões", cex.main=0.8 ) axis(1,vdados$talhao, cex.axis=0.6, xlab="observação (talhão)") #---------------------------------------------------------------------------------- # Gráficos para verificar alavancagem (hat-values) Pàg 57 de 66

# dev.new() # Or X11() dev.3 <- as.integer(dev.cur()) dev.set(dev.3) par(mfrow=c(1,2)) #---> Grafico 1... plot(vdados$dose, vdados$prod, main="os dados dos 28 talhões", cex.main=0.8, xlab="dose (Kg)", ylab="produção (Kg)", pch=20) abline(vregrlin, col="blue", lwd=4) text(vdados$dose, vdados$prod, labels=vdados$talhao, pos=1, cex=0.7, col="red") #---> Grafico 2... plot(vhatvalues, xaxt="n", main="alavancagem (leverage) \n Regressão com 28 talhões", cex.main=0.8, ylab="hat values (h)", type="h", xlab="observação (talhão)" ) axis(1,vdados$talhao, cex.axis=0.6, xlab="observação (talhão)") for (i in 1:length(vHatValues)) { if (vhatvalues[i] > (2* vmediahatvalues)) { #### points(vdados[i,1], vhatvalues[i], col='red', pch=20) text(vdados[i,1], vhatvalues[i], labels=vdados[i,1], pos=3, cex=0.7) } } Pàg 58 de 66

#---------------------------------------------------------------------------------- # Gráficos para verificar linearidade da função de regressão # dev.new() # Or X11() dev.4 <- as.integer(dev.cur()) dev.set(dev.4) par(mfrow=c(1,2)) #---> Grafico 1... vresiduos = resid(vregrlin) plot(vdados$dose, vresiduos, main="verificar linearidade via resíduos", cex.main=0.8, xlab="dose (Kg)", ylab="resíduos", pch=20) abline(0,0, col="blue", lwd=4, lty=2) vx = vdados$dose vy = vresiduos vcurvalowess = loess(vy ~ vx) vxloess_seq = seq(min(vx),max(vx), (max(vx)- min(vx))/1000) lines(vxloess_seq, predict(vcurvalowess,vxloess_seq), col='red', lwd=1) #---> Grafico 2... plot(vdados$dose, vdados$prod, main="gráficos dos dados \n para verificar linearidade", cex.main=0.8, xlab="dose (Kg)", ylab="produção (Kg)", pch=20) abline(vregrlin, col="red", lwd=4) Pàg 59 de 66

#---------------------------------------------------------------------------------- # Gráficos para verificar homocedasticidade (constância da variância) # dev.new() # Or X11() dev.5 <- as.integer(dev.cur()) dev.set(dev.5) par(mfrow=c(1,3)) #---> Grafico 1... vresiduos = resid(vregrlin) plot(vdados$dose, vresiduos, main="serve para \n verificar homocedasticidade", cex.main=0.9, xlab="dose (Kg)", ylab="resíduos", pch=20) abline(0,0, col="blue", lwd=4, lty=2) vx = vdados$dose vy = vresiduos vcurvalowess = loess(vy ~ vx) vxloess_seq = seq(min(vx),max(vx), (max(vx)- min(vx))/1000) lines(vxloess_seq, predict(vcurvalowess,vxloess_seq), col='red', lwd=1) #---> Grafico 2... vresiduos = resid(vregrlin) plot(vregrlin$fitted, vresiduos, main="serve para \n verificar homocedasticidade", cex.main=0.9, xlab="produção ajustada(kg)", ylab="resíduos", pch=20) Pàg 60 de 66

abline(0,0, col="blue", lwd=4, lty=2) vx = vregrlin$fitted vy = vresiduos vcurvalowess = loess(vy ~ vx) vxloess_seq = seq(min(vx),max(vx), (max(vx)- min(vx))/1000) lines(vxloess_seq, predict(vcurvalowess,vxloess_seq), col='red', lwd=1) #---> Grafico 3... # # Gráfico Scale-Location # #------> Padronização dos resíduos... para auxiliar detecção de homo/hetero...cedasticidade!!! vresiduos = resid(vregrlin) # pegar os resíduos... vresiduos = vresiduos / (summary(vregrlin)$sigma) # resíduos (semi)studentizados... vresiduos = abs(vresiduos) vresiduos = sqrt(vresiduos) vdataframeaux = cbind(vregrlin$fitted.values, vresiduos) vdataframeaux = as.data.frame(vdataframeaux) names(vdataframeaux)[1] <- "PROD_ESTIMADA" names(vdataframeaux)[2] <- "RAIZ_RESIDUO_PADRONIZADO" plot(vdataframeaux$prod_estimada, vdataframeaux$raiz_residuo_padronizado, main="gráfico SCALE-LOCATION \n Para verificar homocedasticidade", cex.main=0.9, xlab="produção ajustada (Kg)", ylab="raiz(resíduo-standardized)", pch=20) vy = vdataframeaux$raiz_residuo_padronizado Pàg 61 de 66

vx = vdataframeaux$prod_estimada vcurvalowess = loess(vy ~ vx) vxloess_seq = seq(min(vx),max(vx), (max(vx)- min(vx))/1000) lines(vxloess_seq, predict(vcurvalowess,vxloess_seq), col='red', lwd=1) #---------------------------------------------------------------------------------- # Gráficos para verificar normalidade dos resíduos # dev.new() # Or X11() dev.6 <- as.integer(dev.cur()) dev.set(dev.6) par(mfrow=c(2,2)) #---> Grafico 1... Box plot dos resíduos vresiduos = resid(vregrlin) # pegar os resíduos... boxplot(vresiduos, main="resíduos dos 28 talhões", ylab="resíduo") #---> Grafico 2... Histograma dos resíduos vresiduos = resid(vregrlin) # pegar os resíduos... vnumclassessturges = nclass.sturges(vresiduos) hist(vresiduos, main="histograma dos resíduos (default do R)", cex.main=0.9, xlab="resíduo", ylab="núm. talhões") #---> Grafico 3... Histograma dos resíduos vresiduos = resid(vregrlin) # pegar os resíduos... vnumclassessturges = nclass.sturges(vresiduos) hist(vresiduos, main="histograma dos resíduos com + ou - classes", cex.main=0.9, xlab="resíduo", ylab="núm. talhões", breaks=3) Pàg 62 de 66

#---> Grafico 4... Histograma dos resíduos vresiduos = resid(vregrlin) # pegar os resíduos... vnumclassessturges = nclass.sturges(vresiduos) hist(vresiduos, main="histograma dos resíduos com + ou - classes", cex.main=0.9, xlab="resíduo", ylab="núm. talhões", breaks=10) #---> Grafico 5... Ramo-e-folhas(steam-and-leaf cat("\n") cat("diagrama ramo-e-folhas (steam-and-leafs)\n") cat("----------------------------------------\n") vresiduos = resid(vregrlin) # pegar os resíduos... stem(vresiduos) cat("\n") #---------------------------------------------------------------------------------- # Gráfico QQ-plot para verificar normalidade dos resíduos # dev.new() # Or X11() dev.7 <- as.integer(dev.cur()) dev.set(dev.7) par(mfrow=c(2,2)) vresiduos = resid(vregrlin) # pegar os resíduos... vresiduos = sort(vresiduos) # tem que estar ordenado... N = length(vresiduos) Pàg 63 de 66

n.props = pnorm(vresiduos, mean(vresiduos), sd(vresiduos)) # here I calculate the probabilities associated # w/ these data if they came from a normal # distribution w/ the same mean & SD # I calculate the proportion of x we've gone through at each point props = 1:N /(N+1) n.quantiles = qnorm(props, mean=mean(vresiduos), sd=sd(vresiduos)) # this calculates the quantiles (ie # z-scores) associated w/ the props # here I bundle them together my.data = data.frame(x=vresiduos, props=props, normal.proportions=n.props, normal.quantiles=n.quantiles) vmedia = mean(my.data$normal.quantiles) vdesvpad = sd(my.data$normal.quantiles) vquantisnormaisescorez = (my.data$normal.quantiles - vmedia) / vdesvpad my.data = cbind(my.data,vquantisnormaisescorez) names(my.data)[names(my.data)=="vquantisnormaisescorez"] <- "QuantisTeoricos" vdadosgrafico = round(my.data, digits=3) cat("\n") cat("dados para composição 'manual' do QQ plot \n") cat("----------------------------------------- \n") cat("\n") print(vdadosgrafico) cat("\n") Pàg 64 de 66

#---> Plot PP-plot plot(my.data$props,my.data$normal.props, main="pp plot", xlab="proporção dados %", ylab="proporção normalidade %") #---> Plot QQ-plot plot(my.data$quantisteoricos,my.data$x, main="qq plot", xlab="quantis teóricos", ylab="resíduos") #---> QQ plot do R... qqnorm(vresiduos) qqline(vresiduos,col="red") #--------------------------------------------------------------------------------------------- # Para finalizar... cat("\n") cat("-------------------- \n") cat("fim DE PROCESSAMENTO \n") cat("-------------------- \n") # fechar o arquivo de saida #sink() # descarregar as bibliotecas eventualemnte usadas... detach("package:mass") detach("package:tseries") # volta a apontar ao diretório inicial setwd(initial.dir) Pàg 65 de 66

#====================================== F I M =============================================== Pàg 66 de 66