# install.packages(rio) # este comando apenas se usa uma vez
library(rio) # package que permite importar dados de varios formatos
urlmy<-"https://web.tecnico.ulisboa.pt/~ist13493/PE_aulas2022/R_Material_exerciciosR/ex1.xlsx"
bicic<-import(urlmy)
# setwd("C:/Users/Laura/Documents/PE/dados/") # fixar a diretoria de trabalho
#library(rio)
#bicic<-import("ex1.xlsx")
bicic
## massa
## 1 4.3
## 2 6.8
## 3 9.2
## 4 7.2
## 5 8.7
## 6 8.6
## 7 6.6
## 8 5.2
## 9 8.1
## 10 10.9
## 11 7.4
## 12 4.5
## 13 3.8
## 14 7.6
## 15 6.8
## 16 7.8
## 17 8.4
## 18 7.5
## 19 10.5
## 20 6.0
## 21 7.7
## 22 8.1
## 23 7.0
## 24 8.2
## 25 8.4
## 26 8.8
## 27 6.7
## 28 8.2
## 29 9.4
## 30 7.7
## 31 6.3
## 32 7.7
## 33 9.1
## 34 7.9
## 35 7.9
## 36 9.4
## 37 8.2
## 38 6.7
## 39 8.2
## 40 6.5
summary(bicic$massa)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 3.800 6.775 7.750 7.600 8.400 10.900
summary(bicic[,1])
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 3.800 6.775 7.750 7.600 8.400 10.900
quantile(bicic$massa)
## 0% 25% 50% 75% 100%
## 3.800 6.775 7.750 8.400 10.900
quantile(bicic[,1])
## 0% 25% 50% 75% 100%
## 3.800 6.775 7.750 8.400 10.900
mean(bicic$massa)
## [1] 7.6
var(bicic$massa)
## [1] 2.265128
library(modeest)
moda.bic<-mlv(bicic$massa, method = "mfv")
print(moda.bic)
## [1] 8.2
table(bicic$massa)
##
## 3.8 4.3 4.5 5.2 6 6.3 6.5 6.6 6.7 6.8 7 7.2 7.4 7.5 7.6 7.7
## 1 1 1 1 1 1 1 1 2 2 1 1 1 1 1 3
## 7.8 7.9 8.1 8.2 8.4 8.6 8.7 8.8 9.1 9.2 9.4 10.5 10.9
## 1 2 2 4 2 1 1 1 1 1 2 1 1
library(psych)
## Registered S3 method overwritten by 'psych':
## method from
## plot.residuals rmutil
describe(bicic$massa)
## vars n mean sd median trimmed mad min max range skew kurtosis se
## X1 1 40 7.6 1.51 7.75 7.69 1.33 3.8 10.9 7.1 -0.44 0.39 0.24
quantile(bicic$massa, c(0.25, 0.5, 0.75), type=2)
## 25% 50% 75%
## 6.75 7.75 8.40
range(bicic$massa) #gama valores
## [1] 3.8 10.9
IQR(bicic$massa)
## [1] 1.625
var(bicic$massa)
## [1] 2.265128
# 1/(n-1)*(sum(bicicletas*bicicletas)-n*mean(bicicletas)^2)
sd(bicic$massa)
## [1] 1.505034
# sqrt(1/(n-1)*(sum(bicicletas*bicicletas)-n*mean(bicicletas)^2))
sd(bicic$massa)/mean(bicic$massa)*100 # valor em percentagem
## [1] 19.80308
Coeficiente de assimetria (sc): é uma medida da falta de simetria de uma determinada distribuição de frequência
# install.packages("moments") # este comando deve ser usado apenas uma vez
library(moments)
##
## Attaching package: 'moments'
## The following object is masked from 'package:modeest':
##
## skewness
skewness(bicic$massa) # coef de assimetria
## [1] -0.4577617
# mmean <- rep(mean(bicicletas),n)
# 1/n*sum((bicic$massa-mmean)^3)/ # ((n-1)/n*var(bicic$massa))^1.5
Coeficiente de achatamento: curtose é uma medida de forma que caracteriza o achatamento de determinada distribuição de frequência
kurtosis(bicic$massa) # coef. de achatamento ou curtose
## [1] 3.561001
# mmean <- rep(mean(bicic$massa),n)
# 1/n*sum((bicic$massa-mmean)^4)/ ((n-1)/n*var(bicic$massa))^2
quantile(bicic$massa,c(0,0.25), type=2)
## 0% 25%
## 3.80 6.75
quantile(bicic$massa,c(0.75,1), type=2)
## 75% 100%
## 8.4 10.9
IQR(bicic$massa)
## [1] 1.625
quantile(bicic$massa,0.68,type=2)
## 68%
## 8.2
# ?hist # help para a função hist
hist(bicic$massa,main="Histograma",xlab="Massa",ylab="Freq. absoluta")
library(ggplot2)
##
## Attaching package: 'ggplot2'
## The following objects are masked from 'package:psych':
##
## %+%, alpha
# Basic histogram
ggplot(bicic, aes(x=massa)) + geom_histogram()
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## Alterando o numero de intervalos (bins)
ggplot(bicic, aes(x = massa)) +
geom_histogram(colour = 4, fill = "white",
bins = 10)
Com área total unitária:
library(ggplot2)
## Alterando o numero de intervalos (bins) e area total unitária
ggplot(bicic, aes(x = massa)) +
geom_histogram(colour = 4, fill = "white", bins = 10,aes(y=..density..))
# ?boxplot
boxplot(bicic$massa, col="red", main="")
boxplot(bicic$massa, col="green", horizontal=TRUE, main="Bicicletas")
# By default, outlier points match the colour of the box. Use outlier.colour to override
p <- ggplot(bicic, aes(y=massa))
p + geom_boxplot(outlier.colour = "red", outlier.shape = 2) + scale_x_discrete( )+labs(title = "Bicicletas",y = "massa")
Usando a regra de Sturges para agrupar os dados: Sturges definiu que o número ideal de intervalos k é dado pela expressão (onde n é a dimensão da amostra)
\[\begin{equation} k=1+\log_2(n) \end{equation}\]
k <- nclass.Sturges(bicic$massa)
print(k)
## [1] 7
amp <- (max(bicic$massa)-min(bicic$massa))/k
breaaaks <- NULL
for (i in rep(0:k)) {
breaaaks <- c(breaaaks,min(bicic$massa)+i*amp)
}
print(breaaaks)
## [1] 3.800000 4.814286 5.828571 6.842857 7.857143 8.871429 9.885714
## [8] 10.900000
out.tab<-table(cut(bicic$massa,breaks=breaaaks,right=TRUE,
include.lowest = TRUE))
out.tab
##
## [3.8,4.81] (4.81,5.83] (5.83,6.84] (6.84,7.86] (7.86,8.87] (8.87,9.89]
## 3 1 8 9 13 4
## (9.89,10.9]
## 2
ll <- breaaaks[-(k+1)]
print(ll)
## [1] 3.800000 4.814286 5.828571 6.842857 7.857143 8.871429 9.885714
ul <- breaaaks[-1]
print(ul)
## [1] 4.814286 5.828571 6.842857 7.857143 8.871429 9.885714 10.900000
freqabs <- c(3,1,8,9,13,4,2)
### ou usando out.tab[[1]], out.tab[[2]], ...
midpoints <- (ll+ul)/2
print(midpoints)
## [1] 4.307143 5.321429 6.335714 7.350000 8.364286 9.378571 10.392857
## Calculo da média dados agrupados
n<-length(bicic$massa)
meang <- sum(freqabs*midpoints)/n
print(meang)
## [1] 7.552857
## Calculo da média dados não agrupados
print(mean(bicic$massa))
## [1] 7.6
# Calcular a diferencia absoluta entre os dois valores:
dif.media<-round(abs(meang-mean(bicic$massa)),5)
dif.media
## [1] 0.04714
## Calculo da variância dados agrupados
k <- length(freqabs)
mmeang <- rep(meang,k)
varg<-1/n*sum(freqabs*(midpoints-mmeang)^2)
## Calculo da variância dados não agrupados
print(var(bicic$massa))
## [1] 2.265128
# Calcular a diferencia absoluta entre os dois valores:
dif.var<-round(abs(varg-var(bicic$massa)),5)
dif.var
## [1] 0.09441
## Calculo do desvio padrão dados agrupados
sqrt(1/n*sum(freqabs*(midpoints-mmeang)^2))
## [1] 1.473335
## Calculo do desvio padrão dados não agrupados
print(sd(bicic$massa))
## [1] 1.505034
Comentário: ao agrupar os dados há perda de informação. Usou-se a regra de Sturges para fazer o agrupamento e verificou-se que o erro absoluto entre os valores médios é de cerca 4.714% e entre as variâncias de 9.441%.