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)
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,...
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.
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)