A base de dados acerca desse projeto contém uma matriz x com 4352 observações com 561 variáveis e uma matriz y com 4252 observações com uma variável.

Além disso, o objetivo do projeto é explorar essa base de dados e buscar produzir o máximo de informações a respeito da mesma.

A partir disso, analisa-se a variável resposta que corresponde a atividade desenvolvida pelo indivíduo:

dados = data.frame(y); colnames(dados) = "Resposta"
ggplot(data=dados, aes(x=factor(Resposta))) +
  geom_bar(stat="count", position=position_dodge(), fill = "orange")+
  theme_classic()+ scale_x_discrete("Resposta")+scale_y_continuous("N")

Observa-se que dentre as variáveis expostas no histograma a variável sentando e andando apresentaram maior frequência. Além disso, a variável deitado apresentou a menor frequência.

Após, dado que as colunas da matriz x não apresentavam nomes, foi necessário incluir.

nomes = read.table("features.txt")
names(matriz_x) = as.character(nomes$V2)

Análise descritiva

summary(y)
##     Resposta    
##  Min.   :1.000  
##  1st Qu.:2.000  
##  Median :4.000  
##  Mean   :3.442  
##  3rd Qu.:5.000  
##  Max.   :6.000
glimpse(y)
## Observations: 4,252
## Variables: 1
## $ Resposta <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,...

Modelos de Regressão

O primeiro modelo analisado é a variável y em função das variáveis tGravityAccmeanX, tGravityAccmeanY e tGravityAccmeanZ.

dados_completo = data.frame(matriz_x,y)
y <- as.numeric(y$Resposta)
modelo <- lm(y ~ dados_completo$tGravityAccmeanX + dados_completo$tGravityAccmeanY + dados_completo$tGravityAccmeanZ)
summary(modelo)
## 
## Call:
## lm(formula = y ~ dados_completo$tGravityAccmeanX + dados_completo$tGravityAccmeanY + 
##     dados_completo$tGravityAccmeanZ)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.2065 -1.1451  0.1504  0.9461  3.1862 
## 
## Coefficients:
##                                 Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                      4.05839    0.05702  71.173  < 2e-16 ***
## dados_completo$tGravityAccmeanX -0.98989    0.07446 -13.294  < 2e-16 ***
## dados_completo$tGravityAccmeanY -0.27846    0.07300  -3.814 0.000138 ***
## dados_completo$tGravityAccmeanZ  1.46539    0.08543  17.153  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.397 on 4248 degrees of freedom
## Multiple R-squared:  0.2974, Adjusted R-squared:  0.2969 
## F-statistic: 599.4 on 3 and 4248 DF,  p-value: < 2.2e-16

Verifica-se que as 3 variáveis preditoras, tGravityAccmeanX, tGravityAccmeanY e tGravityAccmeanZ foram significativas.

modelo1 <- lm(y ~ dados_completo$tGravityAccmeanX + dados_completo$tGravityAccmeanZ)
summary(modelo1)
## 
## Call:
## lm(formula = y ~ dados_completo$tGravityAccmeanX + dados_completo$tGravityAccmeanZ)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.3178 -1.1066  0.1730  0.9855  3.1247 
## 
## Coefficients:
##                                 Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                      4.01496    0.05596   71.74   <2e-16 ***
## dados_completo$tGravityAccmeanX -0.93926    0.07339  -12.80   <2e-16 ***
## dados_completo$tGravityAccmeanZ  1.56553    0.08143   19.23   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.399 on 4249 degrees of freedom
## Multiple R-squared:  0.295,  Adjusted R-squared:  0.2947 
## F-statistic:   889 on 2 and 4249 DF,  p-value: < 2.2e-16

Já em relação ao modelo 1, tem-se que as variáveis tGravityAccmeanX e tGravityAccmeanZ também foram significativas.

modelo2 <- lm(y ~ dados_completo$tGravityAccmeanX + dados_completo$tGravityAccmeanY)
summary(modelo2)
## 
## Call:
## lm(formula = y ~ dados_completo$tGravityAccmeanX + dados_completo$tGravityAccmeanY)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.3020 -1.2000  0.1244  1.0501  2.6859 
## 
## Coefficients:
##                                 Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                      4.74071    0.04224 112.230   <2e-16 ***
## dados_completo$tGravityAccmeanX -1.90852    0.05349 -35.680   <2e-16 ***
## dados_completo$tGravityAccmeanY -0.66328    0.07183  -9.234   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.444 on 4249 degrees of freedom
## Multiple R-squared:  0.2487, Adjusted R-squared:  0.2484 
## F-statistic: 703.4 on 2 and 4249 DF,  p-value: < 2.2e-16

Analisando o modelo 2, observa-se que as variáveis tGravityAccmeanX e tGravityAccmeanY foram significativas.

modelo3 <- lm(y ~ dados_completo$tGravityAccmeanY + dados_completo$tGravityAccmeanZ)
summary(modelo3)
## 
## Call:
## lm(formula = y ~ dados_completo$tGravityAccmeanY + dados_completo$tGravityAccmeanZ)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.6798 -1.1294  0.0269  1.1747  3.6455 
## 
## Coefficients:
##                                 Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                      3.35698    0.02207 152.128   <2e-16 ***
## dados_completo$tGravityAccmeanY -0.10547    0.07330  -1.439     0.15    
## dados_completo$tGravityAccmeanZ  2.28221    0.06057  37.679   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.425 on 4249 degrees of freedom
## Multiple R-squared:  0.2682, Adjusted R-squared:  0.2678 
## F-statistic: 778.5 on 2 and 4249 DF,  p-value: < 2.2e-16

Analisando a variável resposta em função das variáveis tGravityAccmeanY e tGravityAccmeanZ observa-se que a variável tGravityAccmeanY é não significativa.

Árvore de Decisão

library(rpart); library(rpart.plot)
modelo = rpart(as.factor(y) ~tGravityAccmeanX  + tGravityAccmeanZ, data = dados_completo)
plot(modelo); text(modelo, use.n = TRUE)

rpart.plot(modelo, box.palette="RdBu", shadow.col="gray", nn=TRUE)


#Podando a árvore
pfit<- prune(modelo,cp=modelo$cptable[which.min(modelo$cptable[,"xerror"]),"CP"])
rpart.plot(pfit, box.palette="RdBu", shadow.col="gray", nn=TRUE)