Arquivo iris
library(stats)
library(ggplot2)
head(iris)
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1 5.1 3.5 1.4 0.2 setosa
## 2 4.9 3.0 1.4 0.2 setosa
## 3 4.7 3.2 1.3 0.2 setosa
## 4 4.6 3.1 1.5 0.2 setosa
## 5 5.0 3.6 1.4 0.2 setosa
## 6 5.4 3.9 1.7 0.4 setosa
Análise de Correlação
Gráfico de Dispersão
ggplot()+
aes(x=iris$Petal.Length,y=iris$Sepal.Length )+
geom_point()+
geom_smooth(method=lm)+
labs(
title = "Gráfico de Dispersão com linha de tendência",
)
## `geom_smooth()` using formula 'y ~ x'

Medida de Correlação
correlacao=cor(iris$Sepal.Length, iris$Petal.Length)
print(correlacao)
## [1] 0.8717538
Ajuste do Modelo de Regressão
lm(y~x) Linear Models
reg<-lm(Sepal.Length~Petal.Length, data=iris)
summary(reg)
##
## Call:
## lm(formula = Sepal.Length ~ Petal.Length, data = iris)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.24675 -0.29657 -0.01515 0.27676 1.00269
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 4.30660 0.07839 54.94 <2e-16 ***
## Petal.Length 0.40892 0.01889 21.65 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.4071 on 148 degrees of freedom
## Multiple R-squared: 0.76, Adjusted R-squared: 0.7583
## F-statistic: 468.6 on 1 and 148 DF, p-value: < 2.2e-16
Valores Cálculados.
Mostra todos os parâmentros cálculados pela regressão.
names(reg)
## [1] "coefficients" "residuals" "effects" "rank"
## [5] "fitted.values" "assign" "qr" "df.residual"
## [9] "xlevels" "call" "terms" "model"
\(\to\) reg$fitted.values: calcula os valores preditos da variável resposta para cada elemento da amostra (faz uma previsão);
\(\to\) reg$residuals: calcula o erro ou os resíduos (valor observado - valor predito) para cada ponto da amostra;
\(\to\) reg$coefficients: obtém uma estimativa dos coeficientes da regressão.
Verificação do Ajuste do Modelo
1. Normalidade dos Erros.
qqnorm(reg$residuals, pch = 20, frame = FALSE)
qqline(reg$residuals, col = "red", lwd = 2)

hist(reg$residuals)

2. Resíduos vs valores Ajustados
ggplot()+
aes(x=reg$fitted.values,y=reg$residuals )+
geom_point()+
geom_hline(yintercept = 0, col="red")

3. Residuos vs variaveis explicativas
ggplot()+
aes(x=iris$Petal.Length,y=reg$residuals )+
geom_point()+
geom_hline(yintercept = 0, col="blue")

4. Gráfico dos Resíduos contra o tempo ou ordem de coleta.
y=reg$residuals
length(reg$residuals)
## [1] 150
x=seq(1:150)
dado_temporal<-data.frame(x,y)
ggplot(dado_temporal)+
aes(x=x,y=y )+
geom_point()+
geom_hline(yintercept = 0, col="red")+
labs(
x = "Tempo",
y = "Resíduos",
title = "Gráfico Residuos vs tempo",
)

Outra Maneira
par(mfrow=c(2,2))
plot(reg, wich=2, pch=20)

Metodo de Minimos Quadrados.
Mat_x <- matrix(c(1,1,1,1,1,1,1,1,1,1,6,5,9,10,3,4,8,7,6,2),10,2)
Est_y <-matrix(c(7,6,10,9,2,3,9,5,6,3),10,1)
beta=solve(t(Mat_x)%*%Mat_x)%*%t(Mat_x)%*%Est_y
print(beta)
## [,1]
## [1,] 0.1000000
## [2,] 0.9833333
Métodos dos Momentos.
vet_x<-c(6,5,9,10,3,4,8,7,6,2)
vet_y<-c(7,6,10,9,2,3,9,5,6,3)
covxy<-cov(vet_x, vet_y)
varx<-var(vet_x)
b1<-covxy/varx
b0<-mean(vet_y)-b1*mean(vet_x)
print(data.frame(b0,b1))
## b0 b1
## 1 0.1 0.9833333