Regressão


In [7]:
df <- read.csv('alunos.csv')
head(df)


PesosAlturas
74 1.73
61 1.62
61 1.63
68 1.68
70 1.68
73 1.75

In [8]:
summary(df) # média e mediana
sd(df$Pesos) # desvio padrão amostral dos pesos
sd(df$Alturas) #desvio padrão amostral das alturas


     Pesos          Alturas     
 Min.   :50.00   Min.   :1.490  
 1st Qu.:57.00   1st Qu.:1.570  
 Median :65.00   Median :1.650  
 Mean   :64.93   Mean   :1.650  
 3rd Qu.:73.00   3rd Qu.:1.725  
 Max.   :80.00   Max.   :1.830  
9.07808449759619
0.0922367996721212

Vamos criar um modelo de regressão linear, tendo o peso como dependente da altura:


In [9]:
y <- df$Pesos
x <- df$Alturas
model <- lm(y ~ x)
summary(model)


Call:
lm(formula = y ~ x)

Residuals:
    Min      1Q  Median      3Q     Max 
-3.0308 -0.9546 -0.0054  0.9438  3.2995 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) -95.9041     1.3167  -72.84   <2e-16 ***
x            97.4593     0.7966  122.34   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.268 on 297 degrees of freedom
Multiple R-squared:  0.9805,	Adjusted R-squared:  0.9805 
F-statistic: 1.497e+04 on 1 and 297 DF,  p-value: < 2.2e-16

Agora, vamos usar o modelo para prever pesos de alunos novos, que não constavam da amostra original:


In [10]:
df2 <- data.frame(x=c(1.40,1.90))
pesos2 <- predict(model,newdata = df2)
head(pesos2)


1
40.5389402181871
2
89.2686093440692

Vamos plotar os valores originais e a reta obtida com a nova previsão:


In [11]:
plot(x, y)
lines(df2$x,pesos2,col="red",lwd=4)



In [12]:
plot(model)