Bastão de Asclépio & Distribuição Normal
invisible(Sys.setlocale("LC_CTYPE", "pt_BR.UTF-8"))
invisible(Sys.setlocale("LC_ALL", "pt_BR.UTF-8"))
suppressMessages(library(car, warn.conflicts=FALSE))
suppressMessages(library(DescTools, warn.conflicts=FALSE))
suppressMessages(library(gplots, warn.conflicts=FALSE))
suppressMessages(library(kableExtra, warn.conflicts=FALSE))
suppressMessages(library(knitr, warn.conflicts=FALSE))
suppressMessages(library(MVN, warn.conflicts=FALSE))
suppressMessages(library(psych, warn.conflicts=FALSE))
suppressMessages(library(readxl, warn.conflicts=FALSE))
RPubs
Esta prática é relativa aos capítulos 3 (Estatística Descritiva) e 4 (Probabilidade, Amostragem e Distribuições) do livro adotado:
SEMPRE crie um projeto em uma pasta separada em seu computador.
Baixe os arquivos Biometria_FMUSP.rds
e NewDrug.rds
para seu
computador:
Considerando a variável Sexo, há dois grupos neste dataframe, masculino e feminino.
Exiba a estatística descritiva numérica (média, mediana, desvio-padrão, etc.) das variáveis intervalares (neste caso, MCT, Estatura e IMC) por sexo.
item group1 vars n mean sd median trimmed mad min max range
Estatura1 1 F 1 229 164.34 6.38 163 163.94 5.93 153 186 33
Estatura2 2 M 1 313 175.77 7.26 175 175.88 7.41 155 195 40
skew kurtosis se
Estatura1 0.61 0.02 0.42
Estatura2 -0.13 0.21 0.41
item group1 vars n mean sd median trimmed mad min max range skew
MCT1 1 F 1 230 57.63 9.05 56 56.75 7.41 41 120 79 2.43
MCT2 2 M 1 312 71.59 12.09 72 70.88 11.12 43 125 82 0.90
kurtosis se
MCT1 12.04 0.60
MCT2 2.37 0.68
item group1 vars n mean sd median trimmed mad min max range skew
IMC1 1 F 1 229 21.24 2.76 20.70 20.95 1.88 16.28 36.73 20.45 2.09
IMC2 2 M 1 312 23.12 3.29 22.86 22.89 3.06 14.53 40.35 25.82 1.10
kurtosis se
IMC1 8.13 0.18
IMC2 3.16 0.19
Exiba a distribuição dos valores das variáveis intervalares MCT, Estatura e IMC por sexo.
Para comparação, o melhor é que ambos os grupos apareçam no mesmo gráfico.
Verifique se as distribuições de MCT, Estatura e IMC em cada grupo têm distribuição normal.
Calcule os intervalos de confiança de 95% da média populacional de MCT, Estatura e IMC em cada sexo e verifique se são diferentes.
Consulte as funções disponíveis no pacote DescTools
e as
funções MVN::mvn
e
gplots::plotmeans
.
# https://en.wikipedia.org/wiki/Shapiro%E2%80%93Wilk_test
tapply(Dados$IMC, Dados$Sexo, shapiro.test)
$F
Shapiro-Wilk normality test
data: X[[i]]
W = 0.85432, p-value = 6.495e-14
$M
Shapiro-Wilk normality test
data: X[[i]]
W = 0.94337, p-value = 1.44e-09
$F
Shapiro-Wilk normality test
data: X[[i]]
W = 0.83245, p-value = 4.94e-15
$M
Shapiro-Wilk normality test
data: X[[i]]
W = 0.95412, p-value = 2.614e-08
$F
Shapiro-Wilk normality test
data: X[[i]]
W = 0.96265, p-value = 1.053e-05
$M
Shapiro-Wilk normality test
data: X[[i]]
W = 0.99062, p-value = 0.04289
alfa <- 0.05
result <- MVN::mvn(data=subset(Dados,
select=c(Sexo,
IMC, MCT, Estatura)),
subset="Sexo",
alpha=alfa,
univariate_test="SW")
Warning in MVN::mvn(data = subset(Dados, select = c(Sexo, IMC, MCT, Estatura)),
: Missing values detected in 8 rows. These rows will be removed.
Group Test Variable Statistic p.value Normality
1 F Shapiro-Wilk IMC 0.854 <0.001 ✗ Not normal
2 F Shapiro-Wilk MCT 0.905 <0.001 ✗ Not normal
3 F Shapiro-Wilk Estatura 0.963 <0.001 ✗ Not normal
4 M Shapiro-Wilk IMC 0.943 <0.001 ✗ Not normal
5 M Shapiro-Wilk MCT 0.954 <0.001 ✗ Not normal
6 M Shapiro-Wilk Estatura 0.991 0.045 ✗ Not normal
# Qual é o intervalo com 95% de confiança com correção de Bonferroni
# da média populacional da estatura masculina?
Dados.F <- subset(Dados, Sexo=="F")
Dados.M <- subset(Dados, Sexo=="M")
gplots::plotmeans(IMC ~ Sexo,
data=Dados,
p=1-alfa/length(unique(Dados$Sexo)),
barcol="black",
connect=FALSE)
mean lwr.ci upr.ci
23.11829 22.69838 23.53819
mean lwr.ci upr.ci
21.23509 20.82358 21.64660
meandiff lwr.ci upr.ci
1.883195 1.370850 2.395541
set.seed(123)
DescTools::BootCI(Dados.M$IMC,
FUN=mean,
conf.level=1-alfa/length(unique(Dados$Sexo)),
na.rm=TRUE,
R=1e4)
mean lwr.ci upr.ci
23.11829 22.69981 23.53620
set.seed(123)
DescTools::BootCI(Dados.F$IMC,
FUN=mean,
conf.level=1-alfa/length(unique(Dados$Sexo)),
na.rm=TRUE,
R=1e4)
mean lwr.ci upr.ci
21.23509 20.82472 21.64250
set.seed(123)
DescTools::MeanDiffCI(Dados.M$IMC,
Dados.F$IMC,
paired=FALSE,
na.rm=TRUE, conf.level=1-alfa,
method="perc",
R=1e4)
meandiff lwr.ci upr.ci
1.883195 1.362122 2.390445
gplots::plotmeans(MCT ~ Sexo,
data=Dados,
p=1-alfa/length(unique(Dados$Sexo)),
barcol="black",
connect=FALSE)
mean lwr.ci upr.ci
71.58974 70.04848 73.13101
mean lwr.ci upr.ci
57.63043 56.28362 58.97725
meandiff lwr.ci upr.ci
13.95931 12.17552 15.74310
gplots::plotmeans(Estatura ~ Sexo,
data=Dados,
p=1-alfa/length(unique(Dados$Sexo)),
barcol="black",
connect=FALSE)
mean lwr.ci upr.ci
175.7732 174.8487 176.6976
mean lwr.ci upr.ci
164.3406 163.3896 165.2916
DescTools::MeanDiffCI(Dados.M$Estatura,
Dados.F$Estatura,
paired=FALSE, conf.level=1-alfa,
na.rm=TRUE)
meandiff lwr.ci upr.ci
11.43255 10.27678 12.58833
Investigue se o nível médio de sedentarismo é similar nos dois sexos.
Consulte as funções disponíveis no pacote DescTools
.
Uma alternativa é lembrar que proporção é média; converta a variável nominal dicotômia de sedentarismo para intervalar binária com valores 0 e 1).
Warning: Unknown or uninitialised column: `Sedentarismo.bin`.
Dados$Sedentarismo.bin
0 1
316 233
gplots::plotmeans(Sedentarismo.bin ~ Sexo,
data=Dados,
p=1-alfa/length(unique(Dados$Sexo)),
barcol="black",
connect=FALSE)
Dados.F <- subset(Dados, Sexo=="F")
Dados.M <- subset(Dados, Sexo=="M")
DescTools::BinomCI(x=c(sum(Dados.M$Sedentarismo.bin, na.rm=TRUE),
sum(Dados.F$Sedentarismo.bin, na.rm=TRUE)),
n=c(sum(!is.na(Dados.M$Sedentarismo.bin)),
sum(!is.na(Dados.F$Sedentarismo.bin))),
conf.level=1-alfa/length(unique(Dados$Sexo)))
est lwr.ci upr.ci
x.1:n.1 0.4227129 0.3622056 0.4856318
x.2:n.2 0.4267241 0.3562528 0.5003018
DescTools::BinomDiffCI(x1=sum(Dados.M$Sedentarismo.bin, na.rm=TRUE),
x2=sum(Dados.F$Sedentarismo.bin, na.rm=TRUE),
n1=sum(!is.na(Dados.M$Sedentarismo.bin)),
n2=sum(!is.na(Dados.F$Sedentarismo.bin)),
conf.level=1-alfa)
est lwr.ci upr.ci
[1,] -0.004011204 -0.08756152 0.07925565
Nesta atividade, a análise é intraparticipantes, pois cada paciente teve três medidas de respiração e pulso.
Usaremos o arquivo wide armazenado em NewDrug.rds
.
Suponha que as mensurações tenham sido feitas em três semanas diferentes.
Investigue se as mensurações de pulso feitas na terceira semana (por exemplo, ao final do tratamento) diferem das mensurações iniciais (na primeira semana) em cada um dos tratamentos (os que tomaram a nova droga e os que receberam placebo).
Consulte as funções disponíveis no pacote DescTools
.
alfa <- 0.05
Drug <- readRDS("NewDrug.rds")
Drug <- Drug$wide
Drug$Difpulse31 <- Drug$pulse3 - Drug$pulse1
Drug.New <- subset(Drug, drug=="New Drug")
Drug.Pcb <- subset(Drug, drug=="Placebo")
gplots::plotmeans(Difpulse31 ~ drug,
data=Drug,
p=1-alfa/length(unique(Drug$drug)),
barcol="black",
connect=FALSE)
abline(h=0, lty=2)
mean lwr.ci upr.ci
0.08333333 -0.10922214 0.27588881
meandiff lwr.ci upr.ci
0.08333333 -0.10922214 0.27588881
mean lwr.ci upr.ci
0.11666667 -0.03780608 0.27113941
meandiff lwr.ci upr.ci
0.11666667 -0.03780608 0.27113941
# versao bootstrapping
set.seed(123)
DescTools::BootCI(Drug.New$Difpulse31,
FUN=mean,
na.rm=TRUE,
conf.level=1-alfa,
bci.method="perc",
R=1e5)
mean lwr.ci upr.ci
0.08333333 -0.03333333 0.23333333
set.seed(123)
DescTools::MeanDiffCI(Drug.New$pulse3,
Drug.New$pulse1,
paired=TRUE,
na.rm=TRUE,
conf.level=1-alfa,
method="perc",
R=1e5)
meandiff lwr.ci upr.ci
0.08333333 -0.03333333 0.23333333
set.seed(123)
DescTools::BootCI(Drug.Pcb$Difpulse31,
FUN=mean,
na.rm=TRUE,
conf.level=1-alfa,
bci.method="perc",
R=1e5)
mean lwr.ci upr.ci
1.166667e-01 2.220446e-16 2.166667e-01
set.seed(123)
DescTools::MeanDiffCI(Drug.Pcb$pulse3,
Drug.Pcb$pulse1,
paired=TRUE,
na.rm=TRUE,
conf.level=1-alfa,
method="perc",
R=1e5)
meandiff lwr.ci upr.ci
1.166667e-01 2.220446e-16 2.166667e-01