Bioestatística
Prof. Dr. Edson Zangiacomi Martinez
Faculdade de Medicina de Ribeirão Preto
Universidade de São Paulo (USP)
Esta página está em construção!
Todo seu conteúdo não é definitivo...
Medidas descritivas
Funções tapply() e aggregate()
Quando há valores faltantes
Medidas descritivas
mean(x) # média dos valores do objeto x
sd(x) # desvio padrão
var(x) # variância
median(x) # mediana
range(x) # amplitude
min(x) # mínimo
max(x) # máximo
quantile(x) # quantis
IQR(x) # amplitude do intervalo interquartil
sum(x) # soma
prod(x) # produto
sort(x) # ordenação
summary(x) # resumos
which.min(x) # posição do mínimo
which.max(x) # posição do máximo
# seja um vetor contendo os pesos de 20 pessoas
peso <- c(72.4, 68.4, 67.9, 67.4, 70.7, 67.7, 67.7, 67.2, 67.4, 66.1, 68.5, 67.9, 64.9, 68.3, 69.4, 65.5, 65.5, 67, 66.3, 64.8)
mean(peso) # retorna a média dos pesos
summary(peso) # retorna o mínimo, o máximo e os quartis
IQR(peso) # retorna a amplitude do intervalo interquartil
quantile(peso) # retorna o mínimo, o máximo e os quartis
quantile(peso,c(0.1,0.9)) # retorna os quantis 10% e 90%
…
# seja um data frame contendo os dados de 10 pessoas
ID sexo idade peso
1 M 45 78,4
2 M 65 82,1
3 F 54 67,4
4 F 76 56,2
5 M 34 56,9
6 F 67 65,8
7 M 36 56,3
8 M 87 89,8
9 M 45 75,2
10 F 68 59,3
dados <- read.table("clipboard",header=T,dec=",")
dados
ID sexo idade peso
1 1 M 45 78.4
2 2 M 65 82.1
3 3 F 54 67.4
4 4 F 76 56.2
5 5 M 34 56.9
6 6 F 67 65.8
7 7 M 36 56.3
8 8 M 87 89.8
9 9 M 45 75.2
10 10 F 68 59.3
# Note que o R retornará uma mensagem de erro se você digitar mean(idade):
mean(idade)
Error in mean(idade) : objeto 'idade' não encontrado
# O símbolo $ em dados$peso retorna a variável "peso" do data frame "dados":
mean(dados$peso)
[1] 68.74
# Alternativamente, podemos usar a função with():
with(dados,mean(peso))
[1] 68.74
Função tapply()
# usando a função tapply()
tapply(dados$idade,dados$sexo,mean)
F M
66.25 52.00
Função aggregate()
# usando a função aggregate()
aggregate(idade~sexo,data=dados,mean)
sexo idade
1 F 66.25
2 M 52.00
aggregate(idade~sexo,data=dados,sd)
sexo idade
1 F 9.105859
2 M 20.356817
aggregate(idade~sexo,data=dados,quantile)
sexo idade.0% idade.25% idade.50% idade.75% idade.100%
1 F 54.00 63.75 67.50 70.00 76.00
2 M 34.00 38.25 45.00 60.00 87.00
aggregate(peso~sexo,data=dados,mean)
sexo peso
1 F 62.17500
2 M 73.11667
# usando a função aggregate() para obter simultaneamente
# as médias da idade e do peso de acordo com o sexo
aggregate(cbind(dados$idade,dados$peso),by=list(dados$sexo),mean)
Group.1 V1 V2
1 F 66.25 62.17500
2 M 52.00 73.11667
medias <- aggregate(cbind(dados$idade,dados$peso),by=list(dados$sexo),mean)
names(medias) <- c("Sexo","Idade","Peso")
medias
Sexo Idade Peso
1 F 66.25 62.17500
2 M 52.00 73.11667
Quando há dados faltantes
# Por exemplo, seja o vetor:
peso <- c(73.5, 71.7, 66.4, 69.2, NA, 70.6, 70.2, 67.1, 69, 66.8, 68.7, 68.7, 69, 69.4, 70.2, NA, NA, 68.2, 69.8, 66.8)
# Se há valores faltantes no vetor "peso", mean(peso) retorna NA
mean(peso)
[1] NA
# a função anyNA() verifica se há valores faltantes, e retorna TRUE se positivo
anyNA(peso)
[1] TRUE
# o argumento na.rm=T retorna a média dos elementos do vetor, desconsiderando os valores faltantes
mean(peso,na.rm=T)
[1] 69.13529
Funções pmax() e pmin()
# Por exemplo, sejam os vetores:
x1 <- c(8, 5, 6, 8, 2, 0, 1, 9, 3, 1)
x2 <- c(2, 9, 6, 3, 1, 9, 2, 3, 4, 2)
x3 <- c(9, 2, 3, 1, 2, 8, 5, 2, 9, 1)
# A função pmax() (de parallel maximum) retorna o maior valor em cada posição dos vetores:
pmax(x1,x2,x3)
[1] 9 9 6 8 2 9 5 9 9 2
# A função pmin() (de parallel minimum) retorna o menor valor em cada posição dos vetores:
pmin(x1,x2,x3)
[1] 2 2 3 1 1 0 1 2 3 1