Ciência da Computação - UFCG
Professor: Gilberto S. Matos
Alunos:
Gabriel de Lacerda Brandão Matrícula: 118210853
Guilherme de Melo Carneiro Matrícula: 118210938
Matheus Silva Medeiros Matrícula: 117110412
Sheila Maria Mendes Paiva Matrícula: 118210186
Para você, qual é ou são os objetivos de uma análise de correlação e de regressão linear? Existe alguma diferença entre estas análises? Exemplifique.
Uma correlação é a relação vigente entre duas variáveis, sendo a primeira tida como dependente e a outra tida como independente. A análise da correlação tem como objetivo atestar se há uma relação de dependência significativa entre duas variáveis, e isso é feito através do coeficiente de correlação, que vai de -1 a 1 e indica desde uma correlação linear negativa, quanto positiva, ou nenhuma correlação.
Como exemplo em que se pode utilizar do princípio de correlação, tem-se um inspetor de segurança que deseja saber se existe ligação entre o número de horas de treinamento de um funcionário que trabalha em redes de energia elétrica, e o número de acidentes envolvendo esse funcionário. Caso haja correlação linear positiva, quer dizer que quanto mais horas de treinamento se gasta com funcionários, mais acidentes eles sofrerão, e caso haja correlação linear negativa, quer dizer que quanto mais horas de treinamento se gasta com funcionários, menos acidentes eles sofrerão, o que faz mais sentido. Nessa situação, a variável independente é a quantidade de horas de treinamento para o funcionário, e a variável dependente é o número de acidentes.
Já a análise de regressão linear pode ser feita com mais acurácia após a testagem e garantia de que haja correlação linear entre as duas variáveis. A regressão linear se trata de encontrar a reta que melhor modela, compensando-se os resíduos, a correlação entre as variáveis envolvidas, e essa reta pode ser utilizada para fazer previsões de valores da variável dependente a partir de valores da variável independente. O mesmo exemplo sobre o treinamento de funcionários que trabalham em redes de energia elétrica e o número de acidentes sofridos por eles valem também para a regressão linear, no qual a diferença para a análise de correlação seria que a “saída” da regressão linear seria uma função que expressaria da melhor maneira a relação entre os valores das variáveis envolvidas.
Para concluir, a análise de correlação junto com a regressão linear têm por objetivo maior inferir se há relação entre duas variáveis com base em um conjunto de dados anterior, e com base nessa inferência, caso positiva para que haja de fato relação, seja possível obter uma função que relaciona uma variável a outra para que se possa prever valores futuros para a variável dependente com base em valores da variável independente. A diferença entre a correlação e regressão linear é que a 2ª obtém uma função da relação que melhor a expressa, enquanto que a 1ª indica se há relação.
A partir dos dados contidos na planilha “preco-de-imoveis.xls” em anexo, desenvolva e des- creva uma an ́alise de correlação e regressão linear com as devidas interpretações praticas dos resultados obtidos. A regressão a ser utilizada aqui é do tipo linear simples ou múltipla? Por quê?
if(!require(pacman)) install.packages("pacman")
## Loading required package: pacman
library(pacman)
pacman::p_load(dplyr, ggplot2, car, rstatix, lmtest, ggpubr, QuantPsyc, psych, scatterplot3d)
library(data.table)
##
## Attaching package: 'data.table'
## The following objects are masked from 'package:dplyr':
##
## between, first, last
dados2 = fread("/cloud/project/data/precodeimoveisbr1.csv")
dados2
cor(dados2$preco, dados2$pesquadrados)
## [1] 0.7488442
Ao analisar o valor da correlação = 0.74, podemos dizer que temos uma correlação positiva, já que o valor do coeficiente de correlação é positivo e que temos uma correlação forte, pois está proximo de 1.
A regressão a ser utilizada para solucionar a questão é a linear simples, visto que só contém uma variável independente e uma dependente, no caso em questão as variáveis são preço e pesquadrados.
Variável independente: preço Variável dependente: pesquadrados
plot(dados2$preco, dados2$pesquadrados)
Ao observar o gráfico, podemos perceber que não é uma relação perfeitamente linear, mas ela é uma relação aproximadamente linear.
mod2 <- lm(pesquadrados ~ preco, dados2)
par(mfrow=c(2,2))
plot(mod2)
shapiro.test(mod2$residuals)
##
## Shapiro-Wilk normality test
##
## data: mod2$residuals
## W = 0.99185, p-value = 0.2812
Temos o valor de p como maior que 5% considerando o teste de Shapiro, então nesse caso não vamos rejeitar a hipótese nula. Vamos considerar que a distribuição é aproximadamente normal.
summary(rstandard(mod2))
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## -2.8573244 -0.7336940 -0.0932756 -0.0006217 0.7417273 2.5923929
durbinWatsonTest(mod2)
## lag Autocorrelation D-W Statistic p-value
## 1 0.378915 1.171968 0
## Alternative hypothesis: rho != 0
bptest(mod2)
##
## studentized Breusch-Pagan test
##
## data: mod2
## BP = 2.0842, df = 1, p-value = 0.1488
summary(mod2)
##
## Call:
## lm(formula = pesquadrados ~ preco, data = dados2)
##
## Residuals:
## Min 1Q Median 3Q Max
## -378.77 -96.84 -12.36 98.24 343.61
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 7.934e+02 6.167e+01 12.87 <2e-16 ***
## preco 1.219e-02 7.427e-04 16.41 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 132.9 on 211 degrees of freedom
## Multiple R-squared: 0.5608, Adjusted R-squared: 0.5587
## F-statistic: 269.4 on 1 and 211 DF, p-value: < 2.2e-16
Nesse caso, o valor de p foi menor que 5%, como ele foi menor que 5% vamos rejeitar a hipótese nula e vamos ficar com a hipótese alternativa. Portanto, o coeficiente é diferente de 0 e ele pode ser interpretado e tem um impacto sobre a variável dependente.
ggplot(data = dados2, mapping = aes(x = pesquadrados, y = preco)) + geom_point() + geom_smooth(method = "lm", col = "red") + stat_regline_equation(aes(label = paste(..eq.label.., ..adj.rr.label.., sep = "*plain(\".\")~~")), label.x = 1200, label.y = 50000) +
theme_classic()
## `geom_smooth()` using formula 'y ~ x'
### Conclusão
O preço do imovel esta associado ao seu tamanho em pś quadrados. O valor do imovel aumenta conforme o tamanho em pés quadrados aumenta, como moctrado nas análises.
Assista ao vídeo “https://www.youtube.com/watch?v=4YLOwyxhxo” sobre como realizar uma regressão linear multipla no R e em seguida utilizando os dados contidos na planilha “faturamento-hamburguer-fast-food.xls” em anexo, desenvolva e descreva uma análise de correlação e regressão linear multipla com as devidas interpretações praticas dos resultados obtidos. Considere adicionalmente alguns valores para as vari ́aveis explicativas e faça previsões para o faturamento da empresa. Sempre apresente as devidas interpretações.
dados3 = fread("/cloud/project/data/faturamento-hamburguer-fast-food-table7.csv")
dados3
Variável independente: faturamento Variáveis dependentes: pesquisa e propaganda
cor(dados3$faturamento, dados3$pesquisa)
## [1] -0.01405752
Ao analisar o valor da correlação = -0.014, podemos dizer que temos uma correlação negativa, já que o valor do coeficiente de correlação é negativo e que temos uma correlação fraca, pois está distante de 1.
cor(dados3$faturamento, dados3$propaganda)
## [1] 0.9248428
Ao analisar o valor da correlação = 0.92, podemos dizer que temos uma correlação positiva, já que o valor do coeficiente de correlação é positivo e que temos uma correlação forte, pois está proximo de 1.
mod3 <- lm(faturamento ~ pesquisa + propaganda, dados3)
par(mfrow=c(2,2))
plot(mod3)
Podemos observar nos gráficos, conseguimos avaliar um pressuposto que é a linearidade, conseguir observar isso, por meio da linha vermelha dos gráficos que está aproximadamente horizontal. Há homocedasticidade nos dados.
shapiro.test(mod3$residuals)
##
## Shapiro-Wilk normality test
##
## data: mod3$residuals
## W = 0.95685, p-value = 0.05716
Temos o valor de p como maior que 5% considerando o teste de Shapiro, então nesse caso não vamos rejeitar a hipótese nula. Vamos considerar que a distribuição é aproximadamente normal.
summary(rstandard(mod3))
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## -1.988969 -0.727393 -0.068337 -0.001153 0.914984 1.693514
durbinWatsonTest(mod3)
## lag Autocorrelation D-W Statistic p-value
## 1 -0.04637208 2.040793 0.888
## Alternative hypothesis: rho != 0
bptest(mod3)
##
## studentized Breusch-Pagan test
##
## data: mod3
## BP = 7.5928, df = 2, p-value = 0.02245
pairs.panels(dados3)
Observando os resultados gerados, podemos afirmar que não temos problemas de multicolinearidade.
vif(mod3)
## pesquisa propaganda
## 1.01039 1.01039
Não há problemas de multicolinearidade, pois os valores de vif são menores que 10, não há correlação entre as variáveis independentes.
Criando um segundo modelo, comparando apenas faturamento com propaganda.
mod3.1 <- lm(faturamento ~ propaganda, dados3)
summary(mod3)
##
## Call:
## lm(formula = faturamento ~ pesquisa + propaganda, data = dados3)
##
## Residuals:
## Min 1Q Median 3Q Max
## -11.5574 -4.2439 -0.4033 5.3298 10.1294
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 104.7855 6.4827 16.164 <2e-16 ***
## pesquisa -6.6419 3.1912 -2.081 0.0427 *
## propaganda 2.9843 0.1669 17.877 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 6.07 on 49 degrees of freedom
## Multiple R-squared: 0.8671, Adjusted R-squared: 0.8617
## F-statistic: 159.8 on 2 and 49 DF, p-value: < 2.2e-16
summary(mod3.1)
##
## Call:
## lm(formula = faturamento ~ propaganda, data = dados3)
##
## Residuals:
## Min 1Q Median 3Q Max
## -9.6134 -5.2875 -0.3867 5.3762 10.9611
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 91.8306 1.8713 49.07 <2e-16 ***
## propaganda 2.9491 0.1715 17.19 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 6.269 on 50 degrees of freedom
## Multiple R-squared: 0.8553, Adjusted R-squared: 0.8524
## F-statistic: 295.6 on 1 and 50 DF, p-value: < 2.2e-16
O segundo modelo tem um valor de R ajustado menor que o primeiro modelo co duas variáveis independentes, o que pode ser um indicativo de que o segundo modelo explica menos a variação dos dados.
lm.beta(mod3)
## pesquisa propaganda
## -0.1089620 0.9358921
lm.beta(mod3.1)
## propaganda
## 0.9248428
Podemos observar que a variável propaganda é um melhor previsor que a variável pesquisa.
confint(mod3)
## 2.5 % 97.5 %
## (Intercept) 91.758002 117.8130251
## pesquisa -13.054872 -0.2289878
## propaganda 2.648828 3.3197697
confint(mod3.1)
## 2.5 % 97.5 %
## (Intercept) 88.071924 95.589206
## propaganda 2.604558 3.293574
AIC(mod3, mod3.1)
BIC(mod3, mod3.1)
Os dois testes de comparação AIC e BIC indicam que o primeiro modelo melhor ajustados aos dados que o segundo modelo.
anova(mod3, mod3.1)
O melhor modelo é o com menor valor de RSS(residual sum of squares), ou seja, o medelo 1 é o melhor modelo para explicar os dados.
graph <- scatterplot3d(dados3$faturamento ~ dados3$pesquisa + dados3$propaganda, pch=16, angle=45, color = "steelblue", box = FALSE, xlab = "Pesquisa", ylab = "Propaganda", zlab = "Faturamento")
graph$plane3d(mod3, col = "black", draw_polygon = TRUE)
Com o intuito de realizar uma analise de regressao linear multipla, busque e apresente uma base de dados com descriçao do problema, objetivos a serem alcancados, populaçao e amostra envolvidos. Procure averiguar se as hipoteses do modelo estao sendo satisfeitas e testando hipoteses de interesse pratico e que respondam aos objetivos do problema. Faca algumas previsoes para a variavel dependente/resposta a partir de alguns valores atribuıdos para o conjunto de variaveis independentes/explicativas. Sempre procure apresentar e interpretar os resultados de forma pratica.
Os dados que usaremos estão detalhados nessa página do OpenIntro. São dados sobre a avaliação de professores feita por alunos, eles avaliam a qualidade do ensino do professor levando em consideração fatores como a idade e a beleza. O intuito da pesquisa é saber se tem uma relação na avaliação feita pelos alunos entre a estética do professor e o quão bem ele ensina.
dados4 = fread("https://www.openintro.org/stat/data/evals.csv")
dados4
Score: A avaliação do ensino do(a) professor(a), varia entre 0 e 5.
Age: A idade do(a) professor(a).
Gender: O gênero do(a) professor(a).
Bty_avg: A média de beleza.
Pic_outfit: Se a roupa do(a) professor(a) é formal ou não.
Pic_color: Se a foto mostrada era preta e branca ou colorida.
A seguir a vizualização do comportamento das variáveis nos gráficos de dispersão de pontos das métricas em relação ao score:
dados4 %>%
ggplot(aes(x = age, y = score)) +
geom_count()
dados4 %>%
ggplot(aes(x = gender, y = score)) +
geom_count()
dados4 %>%
ggplot(aes(x = bty_avg, y = score)) +
geom_count()
dados4 %>%
ggplot(aes(x = pic_outfit, y = score)) +
geom_count()
dados4 %>%
ggplot(aes(x = pic_color, y = score)) +
geom_count()
Podemos observar nos gráficos, que visualmente cada variável individualmente em relação ao score apresenta-se dificil de determinar se existe uma relação que mostre que as variáveis influenciam no score.
mod4 <- lm(score ~ age + bty_avg + gender + pic_outfit + pic_color, data = dados4)
par(mfrow=c(2,2))
plot(mod4)
Podemos observar nos gráficos, conseguimos avaliar um pressuposto que é a linearidade, conseguir observar isso, por meio da linha vermelha dos gráficos que está aproximadamente horizontal. Há homocedasticidade nos dados.
shapiro.test(mod4$residuals)
##
## Shapiro-Wilk normality test
##
## data: mod4$residuals
## W = 0.95702, p-value = 2.287e-10
Temos o valor de p como maior que 5% considerando o teste de Shapiro, então nesse caso não vamos rejeitar a hipótese nula. Vamos considerar que a distribuição é aproximadamente normal.
summary(rstandard(mod4))
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## -3.448744 -0.668853 0.190526 -0.000321 0.783042 1.806256
durbinWatsonTest(mod4)
## lag Autocorrelation D-W Statistic p-value
## 1 0.3445027 1.308322 0
## Alternative hypothesis: rho != 0
bptest(mod4)
##
## studentized Breusch-Pagan test
##
## data: mod4
## BP = 4.3561, df = 5, p-value = 0.4994
pairs.panels(dados4)
Observando os resultados gerados, podemos afirmar que não temos problemas de multicolinearidade.
vif(mod4)
## age bty_avg gender pic_outfit pic_color
## 1.255491 1.235576 1.118345 1.080918 1.135348
Não há problemas de multicolinearidade, pois os valores de vif são menores que 10, não há correlação entre as variáveis independentes.
Criando um segundo modelo, comparando o score com age, bty_avg e gender.
mod4.1 <- lm(score ~ age + bty_avg + gender, data = dados4)
summary(mod4)
##
## Call:
## lm(formula = score ~ age + bty_avg + gender + pic_outfit + pic_color,
## data = dados4)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.79508 -0.34704 0.09909 0.40726 0.93799
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 4.370125 0.211106 20.701 < 2e-16 ***
## age -0.007124 0.002777 -2.565 0.01064 *
## bty_avg 0.047322 0.017684 2.676 0.00772 **
## gendermale 0.223349 0.051988 4.296 2.12e-05 ***
## pic_outfitnot formal -0.015155 0.067773 -0.224 0.82316
## pic_colorcolor -0.212322 0.069101 -3.073 0.00225 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.5223 on 457 degrees of freedom
## Multiple R-squared: 0.08775, Adjusted R-squared: 0.07777
## F-statistic: 8.792 on 5 and 457 DF, p-value: 5.599e-08
summary(mod4.1)
##
## Call:
## lm(formula = score ~ age + bty_avg + gender, data = dados4)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.84906 -0.36109 0.09121 0.41430 0.93332
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 4.055060 0.167329 24.234 < 2e-16 ***
## age -0.005784 0.002717 -2.129 0.033769 *
## bty_avg 0.064091 0.016866 3.800 0.000164 ***
## gendermale 0.200903 0.051790 3.879 0.000120 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.5267 on 459 degrees of freedom
## Multiple R-squared: 0.06832, Adjusted R-squared: 0.06224
## F-statistic: 11.22 on 3 and 459 DF, p-value: 4.068e-07
O segundo modelo tem um valor de R ajustado menor que o primeiro modelo co duas variáveis independentes, o que pode ser um indicativo de que o segundo modelo explica menos a variação dos dados.
confint(mod4)
## 2.5 % 97.5 %
## (Intercept) 3.95526600 4.784983575
## age -0.01258214 -0.001665773
## bty_avg 0.01257009 0.082073569
## gendermale 0.12118377 0.325514430
## pic_outfitnot formal -0.14834029 0.118031137
## pic_colorcolor -0.34811797 -0.076525799
confint(mod4.1)
## 2.5 % 97.5 %
## (Intercept) 3.72623332 4.3838860513
## age -0.01112308 -0.0004456965
## bty_avg 0.03094650 0.0972349722
## gendermale 0.09912702 0.3026787115
AIC(mod4, mod4.1)
BIC(mod4, mod4.1)
O teste de comparação AIC indica o primeiro modelo como o melhor ajustado aos dados e o teste de comparação BIC indica que o segundo modelo melhor ajustados aos dados que o segundo modelo.
anova(mod4, mod4.1)
O melhor modelo é o com menor valor de RSS(residual sum of squares), ou seja, o medelo 1 é o melhor modelo para explicar os dados.
Ao analisar o modelo, podemos observar que o r.squared das múltiplas variáveis se mostra baixo, indicando que a uma relação fraca entre as variáveis.
Em relação a cada uma das variáveis, podemos observar que o efeito da idade é baixo e negativo, os professores mais velhos tendem a ser pior avaliados, mas ainda assim tem uma diferença pequena em diferenças de idade consideradas grandes. Os professores tendem a ser melhor avaliados que as professoras, mas com uma diferença pequena tambem. Os professores(as) com beleza relacionada, tendem a ter melhores avaliações, mas com uma diferença maior em relação as outras variáveis. Dessa forma, a beleza é a variável com efeito maior em relação ao score.
Em conclusão, as métricas avaliadas expressam muito pouco em relação a qualidade de ensino dos professores(as), ainda que podemos perceber que a variável beleza causa efeito quanto a score.