invisible(Sys.setlocale("LC_CTYPE", "pt_BR.UTF-8"))
invisible(Sys.setlocale("LC_ALL", "pt_BR.UTF-8"))
options(warn=-1)
suppressMessages(library(knitr, warn.conflicts=FALSE))
suppressMessages(library(readxl, warn.conflicts=FALSE))
suppressMessages(library(DescTools, warn.conflicts=FALSE))
suppressMessages(library(effectsize, warn.conflicts=FALSE))
suppressMessages(library(MBESS, warn.conflicts=FALSE))
suppressMessages(library(RVAideMemoire, warn.conflicts=FALSE))
suppressMessages(library(corrplot, warn.conflicts=FALSE))
suppressMessages(library(gplots, warn.conflicts=FALSE))
suppressMessages(library(RcmdrMisc, warn.conflicts=FALSE))
suppressMessages(library(rcompanion, warn.conflicts=FALSE))
suppressMessages(library(Rmisc, warn.conflicts=FALSE))
suppressMessages(library(reshape2, warn.conflicts=FALSE))
suppressMessages(library(psych, warn.conflicts=FALSE))
suppressMessages(library(lsr, warn.conflicts=FALSE))
suppressMessages(library(ggplot2, warn.conflicts=FALSE))
suppressMessages(library(car, warn.conflicts=FALSE))
suppressMessages(library(rstatix, warn.conflicts=FALSE))
suppressMessages(library(jmv, warn.conflicts=FALSE))
source("summarySEwithin2.R")
RPubs
Os dados da planilha Excel Biometria_FMUSP.xlsx
foram
coletados pelos docentes do curso de Medicina da FMUSP dos estudantes do
segundo ano de uma mesma disciplina em três anos consecutivos.
As variáveis do arquivo são:
Dados <- readxl::read_excel(path="Biometria_FMUSP.xlsx",
sheet="dados",
na=c("NA","na","Na","nA"))
Dados$MCT[Dados$MCT==max(Dados$MCT,na.rm=TRUE)] <- NA
Dados$Estatura[Dados$Estatura==min(Dados$Estatura,na.rm=TRUE)] <- NA
Dados$ID <- factor(Dados$ID)
Dados$Ano <- factor(Dados$Ano)
Dados$Turma <- factor(Dados$Turma)
Dados$Sexo <- factor(Dados$Sexo)
Dados$Mao <- factor(Dados$Mao)
Dados$TipoSang <- factor(Dados$TipoSang)
Dados$ABO <- factor(Dados$ABO)
Dados$Rh <- factor(Dados$Rh)
Dados$AtivFisica <- factor(Dados$AtivFisica,
levels=c("sempre_inativo",
"atualmente_inativo",
"baixa_intensidade",
"media_intensidade",
"alta_intensidade"),
labels=c("sempre_inativo",
"atualmente_inativo",
"baixa_intensidade",
"media_intensidade",
"alta_intensidade"))
Dados$Sedentarismo <- factor(Dados$Sedentarismo)
Dados.F <- subset(Dados, Sexo=="F")
Dados.M <- subset(Dados, Sexo=="M")
A distribuição da estatura do homem brasileiro de 19 anos de 2016 é normal com desvio-padrão \(\sigma\) = 7 cm.
Testar se a média populacional \(\mu\) é igual a 177 cm hipotetizada.
Quatro participantes deste grupo de 2020 tiveram suas estaturas medidas, cujos valores em centímetro são: 169, 174, 175, 186.
Teste
Média populacional hipotetizada: \(\mu\) = 177 cm
Suposições
\(n = 4\) observações independentes: 169, 174, 175, 186
Se \(n<30\), estatura tem distribuição normal; se \(n\ge30\), estatura tem distribuição qualquer (Teorema Central do Limite)
Desvio-padrão \(\sigma\) = 7 cm conhecido
Teste bilateral
Nível de confiança adotado de 95% (ou nível de significância de 5%)
Hipóteses
\(H_{0}: μ = 177\)
\(H_{1}: μ \ne 177\)
ou equivalentemente
\(H_{1}: μ < 177 \; \text{ou} \; μ > 177\)
Estatísticas
\(\bar{x} = \dfrac{175+186+169+174}{4} = 176\)
\(ep = \dfrac{\sigma}{\sqrt{n}} = \dfrac{7}{\sqrt{4}}= 3.5\)
\(\text{IC}^{95\%}(\mu) = [176 \pm 1.96\times3.5] = [169.14, 182.86]\)
Estatística de teste \(z = \dfrac{\bar{x}-177}{ep}=\dfrac{176−177}{3.5}=−0.29\)
Estatística de tamanho de efeito \(d=\dfrac{|\bar{x}-177|}{\sigma}=\dfrac{|176-177|}{7}=0.14\) (muito pequeno)
Decisão
Critério do valor crítico: Como \(|z| = 0.29 < 1.96\), não rejeitar \(H_{0}\)
Critério do \(IC\): Como \(\text{IC}^{95\%}\) contém 177, não rejeitar \(H_{0}\)
Critério do valor p: Como o valor p bilateral = 0.77 é maior que 0.05, não rejeitar \(H_{0}\)
Shapiro-Wilk normality test
data: estatura
W = 0.91181, p-value = 0.492
DescTools::ZTest(x=estatura,
sd_pop=7,
mu=177,
alternative="two.sided",
conf.level=1-alfa,
na.rm=TRUE)
One Sample z-test
data: estatura
z = -0.28571, Std. Dev. Population = 7, p-value = 0.7751
alternative hypothesis: true mean is not equal to 177
95 percent confidence interval:
169.1401 182.8599
sample estimates:
mean of x
176
[1] "very small"
(Rules: cohen1988)
A distribuição da estatura do homem brasileiro de 19 anos de 2016 é normal com desvio-padrão \(\sigma\) = 7 cm.
Testar se a média populacional \(\mu\) é igual a 177 cm hipotetizada.
Mil participantes deste grupo de 2020 tiveram suas estaturas medidas, cujos valores em centímetro são: 169, 174, 175, 186, …
Teste
Média populacional hipotetizada: \(\mu\) = 177 cm
Suposições
\(n = 1000\) observações independentes: 169, 174, 175, 186, …
Se \(n<30\), estatura tem distribuição normal; se \(n\ge30\), estatura tem distribuição qualquer (Teorema Central do Limite)
Desvio-padrão \(\sigma\) = 7 cm conhecido
Teste bilateral
Nível de confiança adotado de 95% (ou nível de significância de 5%)
Hipóteses
\(H_{0}: μ = 177\)
\(H_{1}: μ \ne 177\)
Estatísticas
\(\bar{x} = \dfrac{175+186+169+174+\cdots}{1000} = 176\)
\(ep = \dfrac{\sigma}{\sqrt{n}} = \dfrac{7}{\sqrt{1000}}= 0.22\)
\(\text{IC}^{95\%}(\mu) = [176 \pm 1.96\times 0.22] = [175.57, 176.43]\)
Estatística de teste \(z = \dfrac{\bar{x}-177}{ep}=\dfrac{176−177}{0.22}=−4.52\)
Estatística de tamanho de efeito \(d=\dfrac{|\bar{x}-177|}{\sigma}=\dfrac{|176-177|}{7}=0.14\) (muito pequeno)
Decisão
Critério do valor crítico: Como \(|z| = 4.52 > 1.96\), rejeitar \(H_{0}\)
Critério do \(IC\): Como \(\text{IC}^{95\%}\) não contém 177, rejeitar \(H_{0}\)
Critério do valor p: Como o valor p bilateral = \(6.2\times10^{-6}\) é menor que 0.05, rejeitar \(H_{0}\)
alfa <- 0.05
set.seed(123)
s <- rnorm(999, 175.9, 7)
estatura <- c(s, 176*1000-999*mean(s))
shapiro.test(estatura)
Shapiro-Wilk normality test
data: estatura
W = 0.99837, p-value = 0.4712
DescTools::ZTest(estatura,
sd_pop=7,
mu=177,
alternative="two.sided",
conf.level=1-alfa,
na.rm=TRUE)
One Sample z-test
data: estatura
z = -4.5175, Std. Dev. Population = 7, p-value = 6.256e-06
alternative hypothesis: true mean is not equal to 177
95 percent confidence interval:
175.5661 176.4339
sample estimates:
mean of x
176
[1] "very small"
(Rules: cohen1988)
“[…] there is always a large enough sample size \(n\) for which any simple null hypothesis \(H_{0}: \mu=\mu_{0}\) will be rejected by a frequentist \(\alpha\)-significance level test.”
Spanos, 2014, p. 646
“Constitui um dos problemas enfrentados quando conduzimos uma pesquisa o fato de não sabermos qual é o padrão existente na população de interesse.
De fato, o motivo de realizarmos a pesquisa é, em primeiro lugar, determinar esse padrão.
Você precisa estar ciente de que, algumas vezes, devido ao erro amostral, obteremos padrões nas amostras que não refletem de forma acurada a população de onde as amostras foram retiradas.
Assim, precisamos de um algum meio para avaliar a probabilidade de que a amostra selecionada seja um retrato fiel da população.
Os testes estatísticos nos auxiliam nesta decisão, mas isso ocorre de uma forma não de todo intuitiva.”
Dancey & Reidy, 2019
“Em Estatística, assim como em Economia, Psicologia, Medicina e Direito, o problema de testagem de hipótese nula envolve a mediação de objetivos conflitantes.
Há uma analogia legal interessante: no julgamento de um crime de homicídio, pede-se ao júri que decida entre a hipótese nula \(H_{0}\): O réu não é culpado e a hipótese alternativa \(H_{1}\): o réu é culpado.
O sistema judiciário não é perfeito.
Comete-se um erro do tipo I condenando-se um inocente. A probabilidade do erro do tipo I é chamado de nível de significância do teste (\(\alpha\)).
O nível de confiança do teste (probabilidade de absolver o inocente) é \(1 – \alpha\).
O erro do tipo II consiste em absolver um culpado. A probabilidade do erro do tipo II é o \(\beta\).
O poder do teste (probabilidade de condenar um culpado) é igual a \(1 – \beta\).
A advertência do juiz ao júri, de que o crime “a culpa pelo crime de homicídio deve ser provada além de qualquer dúvida razoável” significa que \(\alpha\) deve ser muito pequena.
Tem havido muitas reformas legais (e.g., limitar o poder da polícia para obter confissão) elaboradas a fim de reduzir \(\alpha\).
Porém, essas mesmas reformas têm contribuído para aumentar \(\beta\).
Não há meios de reduzir \(\alpha\) a 0 (impossibilidade total de condenar um inocente) sem elevar \(\beta\) a 1 (tender a libertar todos os culpados, invalidando o julgamento).
A única maneira de reduzir \(\alpha\) e \(\beta\) concomitantemente é aumentar a evidência, i.e., aumentar o tamanho da amostra.”
Wonnacott & Wonnacott, 1981
“Quais das seguintes situações representam um erro do tipo I e quais um erro do tipo II?
Dancey & Reidy, 2019
Understanding Statistical Power and Significance Testing: An interactive visualization
“O valor p é a probabilidade de que a estatística de teste seja igual ou mais extrema que o valor observado na direção prevista pela hipótese alternativa (\(H_{1}\)), presumindo que a hipótese nula (\(H_{0}\)) é verdadeira.”
Agresti & Finlay, 2012, p. 171
“Mínimo \(\alpha\) que rejeita \(H_{0}\).”
Wonnacott & Wonnacott, 1981
“Valores p e métodos de testagem de hipótese nula são frequentemente mal utilizados em pesquisas clínicas.”
Mark et al., 2016, p. 1048
Dancey & Reidy, 2019
“Não recomendamos abandonar o valor p, nem reduzir arbitrariamente o limiar de significância [\(\alpha = 0.05\)].”
Di Leo & Sardanelli, 2020, p. 6
“Testes unicaudais raramente devem ser usados para pesquisa básica ou aplicada em ecologia, comportamento animal ou qualquer outra ciência.”
Lombardi & Hurlbert, 2009, p. 447
“Testes unicaudais também se mostram úteis em uma área de interesse estatístico chamada ‘não inferioridade’ e testes de ‘equivalência’.”
Lombardi & Hurlbert, 2009, p. 462
“Não recomendamos abandonar o valor p, nem reduzir arbitrariamente o limiar de significância [\(\alpha = 0.05\)].”
Di Leo & Sardanelli, 2020, p. 6
“A testagem da hipótese nula é a abordagem dominante na Psicologia e Medicina.
Apesar das críticas à testagem da hipótese nula, isso não significa que tal abordagem deve ser abandonada completamente.
Ao invés disso, devemos ter um entendimento completo de seu significado para podermos nos beneficiar desta tecnologia da decisão.
Além do valor p, é importante usar o intervalo de confiança e de tamanho de efeito.”
Dancey & Reidy, 2019
“Mesmo efeitos muito pequenos poderão apresentar significância estatística quando o tamanho da amostra for bem grande.
Para determinar a significância prática, a melhor abordagem consiste em obter uma medida do tamanho do efeito, sendo que essa medida não depende do tamanho da amostra.
E.g.: o coeficiente de correlação de Pearson amostral mede a intensidade da associação linear entre duas variáveis quantitativas e não depende do tamanho da amostra.”
Dancey & Reidy, 2019
Dancey & Reidy, 2019
“A replicação é uma das pedras angulares da ciência. Se você observa um fenômeno uma vez, então pode ter sido por acaso; se o observa duas, três ou mais vezes, pode estar começando a aprender algo sobre o fenômeno estudado.
Se o seu estudo foi o primeiro neste assunto, é sensato que você trate os resultados com certo grau de cautela.”
Dancey & Reidy, 2019
“Infelizmente, nenhuma ferramenta ou técnica estatística pode garantir o acesso ao caminho mais curto para a verdade.
Experimentos repetidos, como Fisher reconheceu anos atrás, podem ser a melhor maneira de domar grande parte da bagunça.
Se isso não for viável, e muitas vezes não é, a medicina ainda pode realizar muito fazendo uso pragmático e bem fundamentado das evidências que possui.”
Mark et al., 2016, p. 1054
Coelho et al. 2008, Tabela 4.1
“A análise de poder é uma das ferramentas mais fundamentais que os pesquisadores podem usar ao planejar estudos.”
Perugini et al., 2018
“Resumo
Antecedentes:
A crença continua generalizada de que os estudos de pesquisa médica devem ter poder estatístico de pelo menos 80% para serem cientificamente sólidos, e os revisores geralmente questionam se o poder é alto o suficiente.
Discussão:
Este requisito e os métodos para atendê-lo apresentam falhas graves.
Notavelmente, a verdadeira natureza de como o tamanho da amostra influencia o valor científico ou prático projetado de um estudo impede qualquer designação abrangente de <80% de poder como “inadequada”.
Além disso, os cálculos padrão são inerentemente não confiáveis, e focar apenas no poder negligencia os resultados mais importantes de um estudo concluído: estimativas e intervalos de confiança.
As convenções atuais prejudicam o processo de pesquisa de várias maneiras: promovendo má interpretação de estudos concluídos, corroendo a integridade científica, dando poder arbitrário aos revisores, inibindo a inovação, pervertendo padrões éticos, desperdiçando esforços e desperdiçando dinheiro.
A pesquisa médica se beneficiaria de abordagens alternativas, incluindo o valor estabelecido dos métodos de informação, escolhas simples baseadas no custo ou viabilidade que foram recentemente justificadas, análises de sensibilidade que examinam uma série significativa de descobertas possíveis e seguindo estudos análogos anteriores.
Para promover abordagens mais racionais, o treinamento em pesquisa deve abranger as questões apresentadas aqui, os revisores devem ser extremamente cuidadosos antes de levantar questões de tamanho de amostra “inadequado” e relatórios de estudos concluídos não devem discutir poder.
Resumo:
Convenções e expectativas comuns em relação ao tamanho da amostra são profundamente falhas, causam sérios danos ao processo de pesquisa e devem ser substituídas por alternativas mais racionais.”
Bacchetti, 2010, p. 8
“Evite o erro “ausência de evidência = evidência de ausência” [ou aceitar \(H_{0}\) se \(p>0.05\)].
Se um teste de hipótese tem um valor p acima do nível \(\alpha\) escolhido, não é correto inferir que não houve efeito ou diferença entre os grupos.”
Althouse et al., 2021, p. e73
“Cálculos de poder post hoc usando o tamanho do efeito observado são uma simples transformação do valor p do estudo e nunca devem ser usados porque não respondem a uma pergunta importante.
Se um cálculo de poder não foi realizado, então pode ser aceitável relatar um “cálculo de poder” ilustrando que o tamanho da amostra disponível foi suficiente para abordar a questão de interesse do estudo.
Observe que isso deve ser baseado em algum tamanho mínimo de efeito de interesse para a inferência primária, não nos dados observados.”
Althouse et al., 2021, p. e87
“Repetimos pontos relatados por outros autores que o uso do poder estimado para interpretar resultados é logicamente inconsistente e redundante com o valor p, e esse poder estimado pode ser tendencioso e altamente não confiável.”
Gerard et al., 1998, p. 802
k <- 3 # numero de condicoes independentes
n <- 20 # numero de observacoes independentes de cada condicao
alfa <- 0.05
dfn <- k - 1
dfd <- k*(n - 1)
Fcrt <- qf(1-alfa, dfn, dfd)
Fobs <- Fcrt*0.99
eta2 <- dfn*Fobs/(dfn*Fobs+dfd)
eta2lims <- MBESS::ci.pvaf(Fobs, dfn, dfd, k*n, 1-alfa)
f2 <- eta2/(1-eta2)
f2.ll <- eta2lims$Lower.Limit.Proportion.of.Variance.Accounted.for/
(1-eta2lims$Lower.Limit.Proportion.of.Variance.Accounted.for)
f2.ul <- eta2lims$Upper.Limit.Proportion.of.Variance.Accounted.for/
(1-eta2lims$Upper.Limit.Proportion.of.Variance.Accounted.for)
ncp.p <- dfd*f2 # ou dfn*Fobs
ncp.p.ll <- dfd*f2.ll
ncp.p.ul <- dfd*f2.ul
cat(paste("n =", k*n, "\tk =", k, "\tFcrt =", round(Fcrt,2),"\tFobs =", round(Fobs,2),"\n"))
n = 60 k = 3 Fcrt = 3.16 Fobs = 3.13
poder.p <- 1-pf(Fcrt,dfn, dfd, ncp.p)
cat(paste("Estimativa pontual do poder retrospectivo =", round(poder.p,3),"\n"))
Estimativa pontual do poder retrospectivo = 0.579
poder.p.ll <- 1-pf(Fcrt,dfn, dfd, ncp.p.ll)
cat(paste("Limite inferior do IC95% do poder retrospectivo =", round(poder.p.ll,3),"\n"))
Limite inferior do IC95% do poder retrospectivo = 0.05
poder.p.ul <- 1-pf(Fcrt,dfn, dfd, ncp.p.ul)
cat(paste("Limite superior do IC95% do poder retrospectivo =", round(poder.p.ul,3),"\n"))
Limite superior do IC95% do poder retrospectivo = 0.967
Os testes baseados na estatística qui-quadrado podem ser divididos em dois tipos
Teste de aderência uma variável nominal com duas ou mais categorias: teste de frequências hipotetizadas;
Teste de independência entre duas variáveis nominais com duas ou mais categorias.
O teste de aderência nos permite descobrir se um conjunto de frequências observadas difere de um outro conjunto de frequências hipotetizadas.
Suposição
Independência das observações: cada observação da unidade observacional deve ser alocada em apenas um categoria da variável nominal.
Siegel & Castellan Jr, 1988, p. 46
Wikipedia: Distribuição do tipo sanguíneo por país
ABO_cluster.R
dados$Cluster: 1
[1] “Indígenas” “Bascos” “Belgas”
[4] “Brasileiros” “Povo_san” “Neerlandeses”
[7] “Ingleses” “Georgianos” “Islandeses”
[10] “Irlandeses” “Italianos_Milão” “Māori”
[13] “Escoceses” “Sul-africanos” “Americanos_brancos”
ABORh_cluster.R
dados$Cluster: 5
[1] “Austrália” “Brasil” “Canadá” “Grécia”
[5] “Itália” “Líbano” “Lituânia” “Países Baixos”
[9] “Nova Zelândia” “Somália” “Sri Lanka” “Reino Unido”
tipsang.freq <- as.numeric(table(Dados$TipoSang))
tipsang.prob <- c(0.08, 0.34, 0.005, 0.025,
0.02, 0.08, 0.09, 0.36)
tslab <- c("A-", "A+", "AB-", "AB+",
"B-", "B+", "O-", "O+")
plot(tipsang.prob, type="p", lty=1,
lwd=1, pch=2, col="black",
xaxt = "n", xlab='Tipo Sanguineo', ylab="Probabilidade")
axis(1, at=1:length(tslab), labels=tslab)
lines(tipsang.freq/sum(tipsang.freq), pch=21,
type="p", lty=1, lwd=1, col="black")
legend("top", legend=c("Prob.Hipotet","Prob.Observ"),
pch=c(2,21), bty="n")
A- A+ AB- AB+ B- B+ O- O+
[1] 49 171 2 40 34 65 45 132
[1] 0.091 0.318 0.004 0.074 0.063 0.121 0.084 0.245
[1] 0.080 0.340 0.005 0.025 0.020 0.080 0.090 0.360
round(ICM <- DescTools::MultinomCI(x=tipsang.freq, conf.level=1-alfa/length(unique(Dados$TipoSang))),4)
est lwr.ci upr.ci
[1,] 0.0911 0.0353 0.1494
[2,] 0.3178 0.2621 0.3761
[3,] 0.0037 0.0000 0.0620
[4,] 0.0743 0.0186 0.1326
[5,] 0.0632 0.0074 0.1215
[6,] 0.1208 0.0651 0.1791
[7,] 0.0836 0.0279 0.1419
[8,] 0.2454 0.1896 0.3037
est lwr.ci upr.ci
1 0.09108 0.03532 0.149
2 0.31784 0.26208 0.376
3 0.00372 0.00000 0.062
4 0.07435 0.01859 0.133
5 0.06320 0.00743 0.121
6 0.12082 0.06506 0.179
7 0.08364 0.02788 0.142
8 0.24535 0.18959 0.304
ICM <- cbind(ICM,sort(unique(Dados$TipoSang)))
names(ICM) <- c("est", "lwr.ci", "upr.ci", "ts")
ggplot2::ggplot(ICM,
ggplot2::aes(x=ts,
y=est)) +
ggplot2::geom_errorbar(ggplot2::aes(ymin=lwr.ci,
ymax=upr.ci),
width=.5) +
ggplot2::geom_point(size=1,
shape=19) +
ggplot2::xlab("Tipo Sanguineo") +
ggplot2::ylab("Proporção") +
ggplot2::ggtitle("I95% Bonferroni de MCT") +
ggplot2::theme_bw()
Pairwise comparisons using exact binomial tests
data: tipsang.freq
2 34 40 45 49 65 132
34 5.4e-07 - - - - - -
40 1.2e-08 1.000 - - - - -
45 4.5e-10 1.000 1.000 - - - -
49 3.3e-11 1.000 1.000 1.000 - - -
65 8.6e-16 0.067 0.525 1.000 1.000 - -
132 < 2e-16 2.2e-13 3.1e-11 1.1e-09 1.5e-08 5.8e-05 -
171 < 2e-16 < 2e-16 < 2e-16 < 2e-16 1.4e-15 9.9e-11 0.808
P value adjustment method: bonferroni
out <- chisq.test(x=tipsang.freq,
p=tipsang.prob,
simulate.p.value=TRUE,
B=1e6)
df <- chisq.test(tipsang.freq, p=tipsang.prob)$parameter
X2 <- out$statistic
p <- out$p.value
n <- sum(chisq.test(tipsang.freq, p=tipsang.prob)$observed)
cat("X^2 = ", X2 , " df = ", df, " p = ", p, "\n", sep="")
X^2 = 135.472 df = 7 p = 9.99999e-07
Heuristica de significancia: X^2/df > 2
19.35
Residuos estandardizados
0.95 -1.08 -0.42 7.33 7.16 3.49 -0.52 -5.54
V de Cramer = 0.19
X-squared
"small"
(Rules: funder2019)
O teste qui-quadrado de independência de Pearson permite que se descubra se existe um relacionamento ou efeito de interação entre duas variáveis nominais com duas ou mais categorias.
Suposição
Cada observação da unidade observacional deve ser alocada em apenas um categoria de cada uma das duas variáveis nominais.
Siegel & Castellan Jr, 1988, p. 111
Sexo
TipoSang F M
A- 17 32
A+ 74 97
AB- 2 0
AB+ 12 28
B- 14 20
B+ 28 37
O- 14 31
O+ 67 65
gplots::balloonplot(t(tabela), main ="", xlab ="", ylab="",
label=TRUE, show.margins=TRUE,
dotcolor="gray")
Pearson's Chi-squared test with simulated p-value (based on 1e+06
replicates)
data: tabela
X-squared = 12.638, df = NA, p-value = 0.07442
Graus de liberdade (df) = 7
x2 <- res$statistic
n <- sum(res$observed)
r <- nrow(tabela)
c <- ncol(tabela)
df <- (r-1)*(c-1)
cat("Heuristica de significancia: X^2/df > 2\n", round(x2/df,2), "\n")
Heuristica de significancia: X^2/df > 2
1.81
MCSTAR
Sexo
TipoSang F M
A- -1.726 1.726
A+ 0.434 -0.434
AB- 2.498 -2.498
AB+ -2.490 2.490
B- -0.222 0.222
B+ 0.184 -0.184
O- -2.416 2.416
O+ 3.390 -3.390
alfa <- 0.05
alfaBonf <- alfa/df
zcrit <- abs(qnorm(alfaBonf/2))
cat("|MCSTAR critico| (alfaBonferroni=5%/",df,") =",zcrit,"\n\n")
|MCSTAR critico| (alfaBonferroni=5%/ 7 ) = 2.69011
pSTAR <- (1-pnorm(abs(MCSTAR)))*2
pSTAR <- abs(MCSTAR)<abs(zcrit)
pSTAR <- pSTAR*1
if(prod(pSTAR)!=1)
{
corrplot::corrplot(MCSTAR, is.corr = FALSE,
insig="label_sig",
p.mat=pSTAR,
pch="*",
pch.cex=3,
pch.col="yellow")
} else
{
pSTAR <- pSTAR*0
corrplot::corrplot(MCSTAR,
is.corr = FALSE,
p.mat=pSTAR)
}
V de Cramer = 0.15
[1] "small"
(Rules: funder2019)
Delineamento entre participantes (observações independentes)
Suposições do teste qui-quadrado de Pearson
Número de graus de liberdade (df) = \((r-1)(c-1)\)
Número de dimensões da tabela de contingência: \(dim = mínimo\{r,c\} - 1\)
MCSTAR (Moment-Corrected STandardized Adjusted Residual)
\(\phi^{2}\): grau de associação entre as duas variáveis nominais: varia entre \(-dim\) e \(dim\)
V de Cramér: medida de tamanho de efeito (correlação implícita absoluta)
\(\eta^{2}=V^{2}\): medida de tamanho de efeito: porcentagem da variância compartilhada entre as duas variáveis nominais
Shapiro-Wilk normality test
data: estatura
W = 0.91181, p-value = 0.492
One Sample t-test
data: estatura
t = -0.27915, df = 3, p-value = 0.7983
alternative hypothesis: true mean is not equal to 177
95 percent confidence interval:
164.5993 187.4007
sample estimates:
mean of x
176
d de Cohen = 0.14
[1] "very small"
(Rules: cohen1988)
df <- fit$parameter
q1 <- round(qt(p=alfa/2, df=df),2)
q2 <- round(qt(p=1-alfa/2, df=df),2)
t <- round(abs(fit$statistic),2)
DescTools::PlotProbDist(breaks=c(-4.5,q1,-t,t,q2,4.5),
function(x) dt(x, df=df),
blab=c(q1,-t,t,q2),
alab=c("RejH0","p/2","","p/2","RejH0"),
xlim=c(-4.5,4.5),
main=paste0("t(",df,")"),
col=c("darkred","black",
"black","black","darkred"),
density=c(20,20,0,20,20))
Tamanho do amostra é o tamanho nominal do amostra.
O número de graus de liberdade (gl) constitui o tamanho efetivo da amostra.
Eisenhauer, 2008
O número de graus de liberdade (gl) é a quantidade necessária de unidades experimentais para que o estimador da variância do estimador do efeito do teste (diferença padronizada entre a média amostral e a média hipotetizada), usando todas as medidas independentes da amostra, seja não-viesado.
\[E\left(S^{2}\right)=\sigma^{2}, \; \text{se} \; S^{2}=\dfrac{\sum_{i=1}^{n}\left(X_{i}-\bar{X}\right)^{2}}{n-1} \]
Wonnacott & Wonnacott, 1990, p. 262
Delineamento entre participantes: independência entre as unidades experimentais
Uma VD intervalar
Uma VI nominal dicotômica (fator entre participantes)
Normalidade da VD nas duas condições independentes, se o tamanho total da amostra é menor que 30; se maior ou igual a 30, a normalidade não é requerida (Teorema Central do Limite)
O teste t de Welch robusto à heterocedasticidade é o default da
função stats::t.test
do R
item group1 vars n mean sd median trimmed mad min max
X11 1 F 1 230 57.63043 9.052874 56 56.750 7.4130 41 120
X12 2 M 1 312 71.58974 12.087235 72 70.876 11.1195 43 125
range skew kurtosis se
X11 79 2.4309659 12.039133 0.5969288
X12 82 0.8963175 2.370362 0.6843049
gplots::plotmeans(MCT ~ Sexo,
data=Dados,
p=1-alfa/2,
xlab="Instructor",
ylab="MCT (kg)",
main="IC95% Bonferroni da média de MCT",
barcol="black",
connect=FALSE)
--------
Sexo = F
Shapiro-Wilk normality test
data: MCT
W = 0.83245, p-value = 4.94e-15
--------
Sexo = M
Shapiro-Wilk normality test
data: MCT
W = 0.95412, p-value = 2.614e-08
--------
p-values adjusted by the Holm method:
unadjusted adjusted
F 4.9401e-15 9.8801e-15
M 2.6139e-08 2.6139e-08
NULL
IC95% das medias brutas estimadas de MCT
Sexo MCT.upper MCT.mean MCT.lower
1 F 58.97725 57.63043 56.28362
2 M 73.13101 71.58974 70.04848
Welch Two Sample t-test
data: MCT by Sexo
t = -15.372, df = 539.86, p-value < 2.2e-16
alternative hypothesis: true difference in means between group F and group M is not equal to 0
95 percent confidence interval:
-15.74310 -12.17552
sample estimates:
mean in group F mean in group M
57.63043 71.58974
d de Cohen = 1.31
[1] "large"
(Rules: cohen1988)
df <- fit$parameter
t <- fit$statistic # estatistica de teste t
F <- t^2 # estatistica de teste F de Fisher
eta2 <- F/(F+df)
cat("eta^2 = R^2 = ",round(eta2,2),"\n")
eta^2 = R^2 = 0.3
t
"large"
(Rules: cohen1992)
IC95% Bonferroni das medias marginais estimadas de MCT
Sum <- rcompanion::groupwiseMean(MCT ~ Sexo,
data=Dados,
conf=1-alfa/2,
digits=3,
traditional=FALSE,
percentile=TRUE,
na.rm=TRUE)
print(Sum)
Sexo n Mean Conf.level Percentile.lower Percentile.upper
1 F 230 57.6 0.975 56.4 59.0
2 M 312 71.6 0.975 70.1 73.2
ggplot2::ggplot(Sum,
ggplot2::aes(x = Sexo,y = Mean)) +
ggplot2::geom_errorbar(ggplot2::aes(ymin = Percentile.lower,
ymax = Percentile.upper),width=0.05,size=0.5)+
ggplot2::geom_point(shape=15,size=4) +
ggplot2::theme_bw() +
ggplot2::theme(axis.title=ggplot2::element_text(face="bold")) +
ggplot2::ggtitle("IC95 Bonferroni de media marginal de MCT (kg)")
\(\eta^{2}\) de Cohen é:
Delineamento intraparticipantes: independência entre as unidades experimentais
Uma VD intervalar
Uma VI nominal dicotômica (fator intraparticipantes)
Normalidade da diferença da VD nas duas condições dependentes, se o tamanho total da amostra é menor que 30; se maior ou igual a 30, a normalidade não é requerida (Teorema Central do Limite)
O teste t relacionado é executado por meio da função
stats::t.test
do R
No exemplo a seguir, o nutricionista faz com que seus mesmos alunos do Programa de Educacao Nutricional mantenham diários do que comem por uma semana e, em seguida, calculem a ingestão diária de sódio em miligramas.
Como a turma recebeu os mesmos programas de educação nutricional, eles querem ver se a ingestão média de sódio é a mesma entre duas semanas consecutivas.
“A quantidade diaria de sodio disponível para consumo nos domicilios brasileiros foi de 4,7 g para ingestao diaria de 2.000 kcal, mantendo-se mais de duas vezes superior ao limite recomendado de ingestao desse nutriente.”
SARNO et al. (2013) Estimativa de consumo de sodio pela populacao brasileira 2008-9. Rev Saude Publica 47(3):571-8.
Tabela <- ("
Participante Semana1 Semana2
a 1200 1100
b 1400 1200
c 1350 1250
d 950 1050
e 1400 1200
f 1150 1250
g 1300 1350
h 1325 1350
i 1425 1325
j 1500 1525
k 1250 1225
l 1150 1125
")
Dados <- read.table(textConnection(Tabela),header=TRUE)
Dados$Participante <- factor(Dados$Participante)
dif <- Dados$Semana2 - Dados$Semana1
alfa <- 0.05
boxplot(dif, ylab="Sodio Depois-Antes")
Shapiro-Wilk normality test
data: dif
W = 0.92523, p-value = 0.3322
Dados_long <- reshape2::melt(Dados,
id.vars="Participante",
measure.vars=c("Semana1","Semana2"),
variable.name="Semana")
names(Dados_long) <- c("Participante", "Semana", "Sodio")
print(Dados_long)
Participante Semana Sodio
1 a Semana1 1200
2 b Semana1 1400
3 c Semana1 1350
4 d Semana1 950
5 e Semana1 1400
6 f Semana1 1150
7 g Semana1 1300
8 h Semana1 1325
9 i Semana1 1425
10 j Semana1 1500
11 k Semana1 1250
12 l Semana1 1150
13 a Semana2 1100
14 b Semana2 1200
15 c Semana2 1250
16 d Semana2 1050
17 e Semana2 1200
18 f Semana2 1250
19 g Semana2 1350
20 h Semana2 1350
21 i Semana2 1325
22 j Semana2 1525
23 k Semana2 1225
24 l Semana2 1125
item group1 vars n mean sd median trimmed mad min max
Sodio1 1 Semana1 1 12 1283.33 152.38 1312.5 1295.0 148.26 950 1500
Sodio2 2 Semana2 1 12 1245.83 129.61 1237.5 1237.5 148.26 1050 1525
range skew kurtosis se
Sodio1 550 -0.61 -0.52 43.99
Sodio2 475 0.46 -0.49 37.42
vars n mean sd median trimmed mad min max range skew kurtosis
X1 1 12 -37.5 103.63 -25 -35 111.19 -200 100 300 -0.22 -1.38
se
X1 29.91
ggplot2::ggplot(Dados_long,
ggplot2::aes(x=Semana,
y=Sodio,
colour=Participante,
group=Participante)) +
ggplot2::geom_line() +
ggplot2::geom_point(shape=21,
fill="white") +
ggplot2::ylab("Sodio (mg/dia)") +
ggplot2::ggtitle("Perfil do Participante") +
ggplot2::theme_bw()
Dados_long_ICIP <- summarySEwithin2(Dados_long,
measurevar="Sodio",
withinvars="Semana",
idvar="Participante",
na.rm=TRUE,
conf.interval=1-alfa/2)
Anexando pacote: 'data.table'
Os seguintes objetos são mascarados por 'package:reshape2':
dcast, melt
O seguinte objeto é mascarado por 'package:DescTools':
%like%
Anexando pacote: 'dplyr'
Os seguintes objetos são mascarados por 'package:data.table':
between, first, last
Os seguintes objetos são mascarados por 'package:plyr':
arrange, count, desc, failwith, id, mutate, rename, summarise,
summarize
O seguinte objeto é mascarado por 'package:car':
recode
Os seguintes objetos são mascarados por 'package:stats':
filter, lag
Os seguintes objetos são mascarados por 'package:base':
intersect, setdiff, setequal, union
Semana N Sodio SodioNormed sd se ci
1 Semana1 12 1283.333 1283.333 73.27563 21.15285 54.85131
2 Semana2 12 1245.833 1245.833 73.27563 21.15285 54.85131
Analise de significancia estatistica: valor p
One Sample t-test
data: dif
t = -1.2536, df = 11, p-value = 0.236
alternative hypothesis: true mean is not equal to 0
95 percent confidence interval:
-103.3417 28.3417
sample estimates:
mean of x
-37.5
Analise de significancia pratica: tamanho de efeito
d <- lsr::cohensD(x=Dados$Semana2,
y=Dados$Semana1,
method="paired")
cat("d de Cohen =", round(d,2), "\n")
d de Cohen = 0.36
[1] "small"
(Rules: cohen1988)
t <- res$statistic
F <- t^2
df <- res$parameter
eta2 <- F/(F+df)
cat("eta^2 = R^2 = ", eta2, "\n\n")
eta^2 = R^2 = 0.125
t
"small"
(Rules: cohen1992)
Delineamento entre participantes: independência entre as unidades experimentais
Uma VD intervalar
Uma VI nominal politômica (fator entre participantes)
Normalidade da VD nas três ou mais condições independentes, se o tamanho total da amostra é menor que 30; se maior ou igual a 30, a normalidade não é requerida (Teorema Central do Limite)
Teste omnibus: ANOVA de Welch robusta à
heterocedasticidade é teste default da função
stats::oneway.tests
do R
Teste post hoc: testes de Games-Howell para a par
robustos à heterocedasticidade; função
rstatix::games_howell_test
do R
\(H_{0}\): As médias populacionais da VD nas condições são iguais
\(H_{1}\): Pelo menos duas médias populacionais da VD nas condições são diferentes
# MCT~AtivFisica Masculino
print(psych::describeBy(Dados.M$MCT,
Dados.M$AtivFisica,
mat=2,
digits=2))
item group1 vars n mean sd median trimmed mad min max
X11 1 sempre_inativo 1 35 67.91 10.03 65 67.28 7.41 51 95
X12 2 atualmente_inativo 1 89 70.42 14.03 70 69.47 11.86 43 125
X13 3 baixa_intensidade 1 30 73.63 10.37 74 72.92 4.45 54 102
X14 4 media_intensidade 1 50 70.06 9.24 70 69.53 7.41 48 94
X15 5 alta_intensidade 1 108 73.89 12.22 73 73.26 10.38 50 120
range skew kurtosis se
X11 44 0.72 -0.05 1.69
X12 82 1.19 3.19 1.49
X13 48 0.63 1.17 1.89
X14 46 0.35 0.09 1.31
X15 70 0.66 1.23 1.18
--------
AtivFisica = sempre_inativo
Shapiro-Wilk normality test
data: MCT
W = 0.94878, p-value = 0.1039
--------
AtivFisica = atualmente_inativo
Shapiro-Wilk normality test
data: MCT
W = 0.92088, p-value = 4.365e-05
--------
AtivFisica = baixa_intensidade
Shapiro-Wilk normality test
data: MCT
W = 0.87753, p-value = 0.002476
--------
AtivFisica = media_intensidade
Shapiro-Wilk normality test
data: MCT
W = 0.97292, p-value = 0.3032
--------
AtivFisica = alta_intensidade
Shapiro-Wilk normality test
data: MCT
W = 0.96681, p-value = 0.008436
--------
p-values adjusted by the Holm method:
unadjusted adjusted
sempre_inativo 0.1039402 0.20788038
atualmente_inativo 4.3652e-05 0.00021826
baixa_intensidade 0.0024758 0.00990304
media_intensidade 0.3031693 0.30316931
alta_intensidade 0.0084365 0.02530941
NULL
s <- Rmisc::summarySE(Dados.M,
measurevar="MCT",
groupvars=c("AtivFisica"),
conf.interval = 1-alfa/(length(unique(Dados.M$AtivFisica))),
na.rm=TRUE)
ggplot2::ggplot(s,
ggplot2::aes(x=AtivFisica,
y=MCT)) +
ggplot2::geom_errorbar(ggplot2::aes(ymin=MCT-ci,
ymax=MCT+ci),
width=.3) +
ggplot2::geom_point(size=3,
shape=21) +
ggplot2::xlab("Nivel de Atividade Fisica") +
ggplot2::ylab("MCT (kg)") +
ggplot2::ggtitle("IC95% Bonferroni de MCT Masculino") +
ggplot2::ylim(62,80) +
ggplot2::theme_bw() +
ggplot2::theme(legend.justification=c(1,0),
legend.position=c(1,0))
Teste omnibus
One-way analysis of means (not assuming equal variances)
data: MCT and AtivFisica
F = 2.8463, num df = 4.00, denom df = 111.12, p-value = 0.0273
Teste post hoc
ph.M <- rstatix::games_howell_test(MCT~AtivFisica,
data=Dados.M)
print(as.data.frame(ph.M), digits=4)
.y. group1 group2 estimate conf.low conf.high p.adj
1 MCT sempre_inativo atualmente_inativo 2.5014 -3.781 8.784 0.801
2 MCT sempre_inativo baixa_intensidade 5.7190 -1.425 12.863 0.176
3 MCT sempre_inativo media_intensidade 2.1457 -3.848 8.140 0.853
4 MCT sempre_inativo alta_intensidade 5.9746 0.197 11.752 0.039
5 MCT atualmente_inativo baixa_intensidade 3.2176 -3.532 9.967 0.670
6 MCT atualmente_inativo media_intensidade -0.3557 -5.831 5.119 1.000
7 MCT atualmente_inativo alta_intensidade 3.4732 -1.753 8.699 0.359
8 MCT baixa_intensidade media_intensidade -3.5733 -10.059 2.912 0.533
9 MCT baixa_intensidade alta_intensidade 0.2556 -6.036 6.547 1.000
10 MCT media_intensidade alta_intensidade 3.8289 -1.038 8.695 0.195
p.adj.signif
1 ns
2 ns
3 ns
4 *
5 ns
6 ns
7 ns
8 ns
9 ns
10 ns
Analise de significancia pratica: tamanho de efeito
F <- as.numeric(fit.M$statistic)
dfn <- as.numeric(fit.M$parameter[1])
dfd <- as.numeric(fit.M$parameter[2])
eta2 <- dfn*F/(dfn*F+dfd)
cat("eta^2 = R^2 = ", round(eta2,4), "\n\n")
eta^2 = R^2 = 0.0929
[1] "small"
(Rules: cohen1992)
nA <- 35
nB <- 89
nC <- 30
nD <- 50
nE <- 108
mediaA <- 67.91
mediaB <- 70.42
mediaC <- 73.63
mediaD <- 70.06
mediaE <- 73.89
dpA <- 10.03
dpB <- 14.04
dpC <- 10.37
dpD <- 9.24
dpE <- 12.22
n <- c(nA,nB,nC,nD, nE)
media <- c(mediaA,mediaB,mediaC,mediaD, mediaE)
dp <- c(dpA,dpB,dpC,dpD, dpE)
J <- length(n)
balanc <- max(dp)/min(dp)
var <- dp^2
w <- n/var
U <- sum(w)
X_til <- as.numeric(w%*%media/U)
gl_num <- J - 1
A <- as.numeric(w%*%((media - X_til)^2)/(J-1))
B <- as.numeric((2*(J - 2)/(J^2 - 1))*(((1 - w/U)/(n-1))%*%(1 - w/U)))
gl_denom <- 1/(((3/2)/(J-2))*B)
F <- A/(1+B)
p <- pf(F,gl_num,gl_denom,lower.tail=FALSE)
razao <- max(dp)/min(dp)
eta2 <- as.numeric(gl_num*F/(gl_num*F + gl_denom))
razao <- max(dp)/min(dp)
es <- effectsize::interpret_eta_squared(eta2, rules="cohen1992")
cat("\nmax(dp)/min(dp) = ", razao,"")
max(dp)/min(dp) = 1.519481
Analise de significancia estatistica (ANOVA unifatorial de Welch): valor-p
F(4,111.1203) = 2.847271, p = 0.02726022
Analise de significancia pratica: tamanho de efeito
eta^2 = R^2 = 0.09296497 (small)
options(warn=-1)
suppressMessages(library(knitr, warn.conflicts=FALSE))
suppressMessages(library(readxl, warn.conflicts=FALSE))
suppressMessages(library(DescTools, warn.conflicts=FALSE))
suppressMessages(library(effectsize, warn.conflicts=FALSE))
suppressMessages(library(MBESS, warn.conflicts=FALSE))
suppressMessages(library(RVAideMemoire, warn.conflicts=FALSE))
suppressMessages(library(corrplot, warn.conflicts=FALSE))
suppressMessages(library(gplots, warn.conflicts=FALSE))
suppressMessages(library(RcmdrMisc, warn.conflicts=FALSE))
suppressMessages(library(rcompanion, warn.conflicts=FALSE))
suppressMessages(library(Rmisc, warn.conflicts=FALSE))
suppressMessages(library(reshape2, warn.conflicts=FALSE))
suppressMessages(library(psych, warn.conflicts=FALSE))
suppressMessages(library(lsr, warn.conflicts=FALSE))
suppressMessages(library(ggplot2, warn.conflicts=FALSE))
suppressMessages(library(car, warn.conflicts=FALSE))
suppressMessages(library(rstatix, warn.conflicts=FALSE))
suppressMessages(library(jmv, warn.conflicts=FALSE))
suppressMessages(library(dplyr, warn.conflicts=FALSE))
Sys.setlocale("LC_CTYPE", "pt_BR.UTF-8")
Sys.setlocale("LC_ALL", "pt_BR.UTF-8")
Dados <- readxl::read_excel(path="Biometria_FMUSP.xlsx",
sheet="dados",
na=c("NA","na","Na","nA"))
Dados <- dplyr::mutate_if(Dados, is.character, as.factor)
categAF <- c("sempre_inativo",
"atualmente_inativo",
"baixa_intensidade",
"media_intensidade",
"alta_intensidade")
Dados$AtivFisica <- factor(Dados$AtivFisica,
levels=categAF,
labels=categAF)
categSexo <- c("M","F")
Dados$Sexo <- factor(Dados$Sexo,
levels=categSexo,
labels=categSexo)
Dados$MCT[Dados$MCT==658] <- NA
Dados$Estatura[Dados$Estatura==120] <- NA
# https://en.wikipedia.org/wiki/Body_mass_index
Dados$IMC.categ <- cut(Dados$IMC,
breaks=c(0,18.5,25,Inf),
labels=c("sub","normal","sobre"),
ordered_result=TRUE)
Dados.F <- subset(Dados, Sexo=="F")
Dados.M <- subset(Dados, Sexo=="M")
alfa <- 0.05
estatura <- c(169, 174, 175, 186)
shapiro.test(estatura)
DescTools::ZTest(x=estatura,
sd_pop=7,
mu=177,
alternative="two.sided",
conf.level=1-alfa,
na.rm=TRUE)
effectsize::interpret_cohens_d(d=0.14, rules="cohen1988")
alfa <- 0.05
q1 <- round(qnorm(p=alfa/2, mean=0, sd=1),2)
q2 <- round(qnorm(p=1-alfa/2, mean=0, sd=1),2)
DescTools::PlotProbDist(breaks=c(-3,q1,-0.29,0.29,q2,3),
function(x) dnorm(x, mean=0, sd=1),
blab=c(q1,-0.29,0.29,q2),
alab=c("RejH0","p/2","","p/2","RejH0"),
xlim=c(-3,3),
main="normal(0,1)", col=c("darkred","black", "black","black","darkred"),
density=c(20,20,0,20,20))
alfa <- 0.05
set.seed(123)
s <- rnorm(999, 175.9, 7)
estatura <- c(s, 176*1000-999*mean(s))
shapiro.test(estatura)
DescTools::ZTest(estatura,
sd_pop=7,
mu=177,
alternative="two.sided",
conf.level=1-alfa,
na.rm=TRUE)
effectsize::interpret_cohens_d(d=0.14, rules="cohen1988")
alfa <- 0.05
q1 <- round(qnorm(p=alfa/2, mean=0, sd=1),2)
q2 <- round(qnorm(p=1-alfa/2, mean=0, sd=1),2)
DescTools::PlotProbDist(breaks=c(-5,-4.52,q1,q2,4.52,5),
function(x) dnorm(x, mean=0, sd=1),
blab=c(-4.52,q1,q2,4.52),
alab=c("","RejH0","","RejH0",""),
xlim=c(-5,5),
main="normal(0,1)", col=c("darkred","darkred", "black","darkred","darkred"), density=c(20,20,0,20,20))
# Análise de poder retrospectivo (_plug in_) de ANOVA unifatorial independente balanceada (Gerard et al., 1998)
k <- 3 # numero de condicoes independentes
n <- 20 # numero de observacoes independentes de cada condicao
alfa <- 0.05
dfn <- k - 1
dfd <- k*(n - 1)
Fcrt <- qf(1-alfa, dfn, dfd)
Fobs <- Fcrt*0.99
eta2 <- dfn*Fobs/(dfn*Fobs+dfd)
eta2lims <- MBESS::ci.pvaf(Fobs, dfn, dfd, k*n, 1-alfa)
f2 <- eta2/(1-eta2)
f2.ll <- eta2lims$Lower.Limit.Proportion.of.Variance.Accounted.for/
(1-eta2lims$Lower.Limit.Proportion.of.Variance.Accounted.for)
f2.ul <- eta2lims$Upper.Limit.Proportion.of.Variance.Accounted.for/
(1-eta2lims$Upper.Limit.Proportion.of.Variance.Accounted.for)
ncp.p <- dfd*f2 # ou dfn*Fobs
ncp.p.ll <- dfd*f2.ll
ncp.p.ul <- dfd*f2.ul
cat(paste("n =", k*n, "\tk =", k, "\tFcrt =", round(Fcrt,2),"\tFobs =", round(Fobs,2),"\n"))
poder.p <- 1-pf(Fcrt,dfn, dfd, ncp.p)
cat(paste("Estimativa pontual do poder retrospectivo =", round(poder.p,3),"\n"))
poder.p.ll <- 1-pf(Fcrt,dfn, dfd, ncp.p.ll)
cat(paste("Limite inferior do IC95% do poder retrospectivo =", round(poder.p.ll,3),"\n"))
poder.p.ul <- 1-pf(Fcrt,dfn, dfd, ncp.p.ul)
cat(paste("Limite superior do IC95% do poder retrospectivo =", round(poder.p.ul,3),"\n"))
tipsang.freq <- as.numeric(table(Dados$TipoSang))
tipsang.prob <- c(0.08, 0.34, 0.005, 0.025,
0.02, 0.08, 0.09, 0.36)
tslab <- c("A-", "A+", "AB-", "AB+",
"B-", "B+", "O-", "O+")
plot(tipsang.prob, type="p", lty=1,
lwd=1, pch=2, col="black",
xaxt = "n", xlab='Tipo Sanguineo', ylab="Probabilidade")
axis(1, at=1:length(tslab), labels=tslab)
lines(tipsang.freq/sum(tipsang.freq), pch=21,
type="p", lty=1, lwd=1, col="black")
legend("top", legend=c("Prob.Hipotet","Prob.Observ"),
pch=c(2,21), bty="n")
cat(tslab,"\n")
print(tipsang.freq)
print(round(tipsang.freq/sum(tipsang.freq), 3))
print(tipsang.prob)
out <- chisq.test(x=tipsang.freq,
p=tipsang.prob,
simulate.p.value=TRUE,
B=1e4)
df <- chisq.test(tipsang.freq, p=tipsang.prob)$parameter
X2 <- out$statistic
p <- out$p.value
n <- sum(chisq.test(tipsang.freq, p=tipsang.prob)$observed)
cat("X^2 = ", X2 , " df = ", df, " p = ", p, "\n", sep="")
cat("Heuristica de significancia: X^2/df > 2\n", round(X2/df,2), "\n")
cat("Residuos estandardizados\n", round(out$stdres,2), "\n")
V <- sqrt((X2/n)/df)
cat("V de Cramer = ", round(V,2), "\n")
cat("Grau de não aderência:\n")
print(effectsize::interpret_cramers_v(V))
RVAideMemoire::multinomial.multcomp(tipsang.freq, p.method="holm")
tabela <- xtabs(~TipoSang+Sexo, data=Dados)
tabela
gplots::balloonplot(t(tabela), main ="", xlab ="", ylab="",
label=TRUE, show.margins=TRUE,
dotcolor="gray")
res <- chisq.test(tabela,
simulate.p.value=TRUE,
B=1e4)
res
df <- chisq.test(tabela)$parameter
cat("Graus de liberdade (df) = ", df, "\n")
x2 <- res$statistic
n <- sum(res$observed)
r <- nrow(tabela)
c <- ncol(tabela)
df <- (r-1)*(c-1)
cat("Heuristica de significancia: X^2/df > 2\n", round(x2/df,2), "\n")
STAR <- res$stdres
cat("MCSTAR\n") # Moment-Corrected STandardized Adjusted Residual
print(MCSTAR <- STAR/(sqrt((1-1/r)*(1-1/c))))
alfa <- 0.05
alfaBonf <- alfa/df
zcrit <- abs(qnorm(alfaBonf/2))
cat("|MCSTAR critico| (alfaBonferroni=5%/",df,") =",zcrit,"\n\n")
pSTAR <- (1-pnorm(abs(MCSTAR)))*2
pSTAR <- abs(MCSTAR)<abs(zcrit)
pSTAR <- pSTAR*1
if(prod(pSTAR)!=1)
{
corrplot::corrplot(MCSTAR, is.corr = FALSE,
insig="label_sig",
p.mat=pSTAR,
pch="*",
pch.cex=3,
pch.col="brown")
} else
{
pSTAR <- pSTAR*0
corrplot::corrplot(MCSTAR,
is.corr = FALSE,
p.mat=pSTAR)
}
V <- DescTools::CramerV(tabela)
cat("V de Cramer = ", round(V,2), "\n")
effectsize::interpret_cramers_v(V)
alfa <- 0.05
estatura <- c(169, 174, 175, 186)
shapiro.test(estatura)
fit <- t.test(x=estatura,
mu=177,
alternative="two.sided",
conf.level=1-alfa)
fit
d <- lsr::cohensD(estatura, mu=177)
cat("d de Cohen =", round(d,2), "\n")
effectsize::interpret_cohens_d(d=d, rules="cohen1988")
df <- fit$parameter
q1 <- round(qt(p=alfa/2, df=df),2)
q2 <- round(qt(p=1-alfa/2, df=df),2)
t <- round(abs(fit$statistic),2)
DescTools::PlotProbDist(breaks=c(-4.5,q1,-t,t,q2,4.5),
function(x) dt(x, df=df),
blab=c(q1,-t,t,q2),
alab=c("RejH0","p/2","","p/2","RejH0"),
xlim=c(-4.5,4.5),
main=paste0("t(",df,")"),
col=c("darkred","black",
"black","black","darkred"),
density=c(20,20,0,20,20))
alfa <- 0.05
psych::describeBy(Dados$MCT, group=Dados$Sexo, mat=2)
boxplot(MCT ~ Sexo,
data=Dados,
ylab="MCT (kg)",
xlab="Sexo")
car::densityPlot(MCT ~ Sexo,
data=Dados,
col=c("black","black"),
rug=FALSE)
gplots::plotmeans(MCT ~ Sexo,
data=Dados,
p=1-alfa/2,
xlab="Instructor",
ylab="MCT (mg/semana)",
main="IC95% Bonferroni da média de MCT",
barcol="black",
connect=FALSE)
RcmdrMisc::normalityTest(MCT ~ Sexo, data=Dados)
cat("IC95% das medias brutas estimadas de MCT\n")
Rmisc::group.CI(MCT ~ Sexo, data=Dados, ci=1-alfa/2)
fit <- t.test(MCT ~ Sexo,
data=Dados)
fit
d <- lsr::cohensD(MCT ~ Sexo,
data=Dados,
method="unequal")
cat("d de Cohen =", round(d,2), "\n")
effectsize::interpret_cohens_d(d)
df <- fit$parameter
t <- fit$statistic # estatistica de teste t
F <- t^2 # estatistica de teste F de Fisher
eta2 <- F/(F+df)
cat("eta^2 = R^2 = ",round(eta2,2),"\n")
effectsize::interpret_eta_squared(eta2, rules="cohen1992")
cat("IC95% Bonferroni das medias marginais estimadas de MCT\n")
Sum <- rcompanion::groupwiseMean(MCT ~ Sexo,
data=Dados,
conf=1-alfa/2,
digits=3,
traditional=FALSE,
percentile=TRUE,
na.rm=TRUE)
print(Sum)
ggplot2::ggplot(Sum,
ggplot2::aes(x = Sexo,y = Mean)) +
ggplot2::geom_errorbar(ggplot2::aes(ymin = Percentile.lower,
ymax = Percentile.upper),width=0.05,size=0.5)+
ggplot2::geom_point(shape=15,size=4) +
ggplot2::theme_bw() +
ggplot2::theme(axis.title=ggplot2::element_text(face="bold")) +
ggplot2::ggtitle("IC95 Bonferroni de media marginal de MCT (kg)")
Tabela <- ("
Participante Semana1 Semana2
a 1200 1100
b 1400 1200
c 1350 1250
d 950 1050
e 1400 1200
f 1150 1250
g 1300 1350
h 1325 1350
i 1425 1325
j 1500 1525
k 1250 1225
l 1150 1125
")
Dados <- read.table(textConnection(Tabela),header=TRUE)
Dados$Participante <- factor(Dados$Participante)
dif <- Dados$Semana2 - Dados$Semana1
alfa <- 0.05
boxplot(dif, ylab="Sodio Depois-Antes")
car::densityPlot(dif)
shapiro.test(dif)
Dados_long <- reshape2::melt(Dados,
id.vars="Participante",
measure.vars=c("Semana1","Semana2"),
variable.name="Semana")
names(Dados_long) <- c("Participante", "Semana", "Sodio")
Dados_long
psych::describeBy(Sodio~Semana, data=Dados_long, mat=2, digits=2)
psych::describe(dif)
ggplot2::ggplot(Dados_long,
ggplot2::aes(x=Semana,
y=Sodio,
colour=Participante,
group=Participante)) +
ggplot2::geom_line() +
ggplot2::geom_point(shape=21,
fill="white") +
ggplot2::ylab("Sodio (mg/dia)") +
ggplot2::ggtitle("Perfil do Participante") +
ggplot2::theme_bw()
Dados_long_ICIP <- Rmisc::summarySEwithin(Dados_long,
measurevar="Sodio",
withinvars="Semana",
idvar="Participante",
na.rm=TRUE,
conf.interval=1-alfa/2)
Dados_long_ICIP
ggplot2::ggplot(Dados_long_ICIP,
ggplot2::aes(x=Semana,
y=Sodio)) +
ggplot2::geom_errorbar(width=.1,
ggplot2::aes(ymin=Sodio-ci,
ymax=Sodio+ci)) +
ggplot2::geom_point(shape=21,
size=3,
fill="white") +
ggplot2::ylab("Sodio (mg/dia)") +
ggplot2::ggtitle("IC95% Bonferroni intraparticipantes") +
ggplot2::theme_bw()
cat("Analise de significancia estatistica: valor p\n")
print(res <- t.test(dif,mu=0))
cat("Analise de significancia pratica: tamanho de efeito\n")
d <- lsr::cohensD(x=Dados$Semana2,
y=Dados$Semana1,
method="paired")
cat("d de Cohen =", round(d,2), "\n")
effectsize::interpret_cohens_d(d)
t <- res$statistic
F <- t^2
df <- res$parameter
eta2 <- F/(F+df)
cat("eta^2 = R^2 = ", eta2, "\n\n")
effectsize::interpret_eta_squared(eta2, rules="cohen1992")
# ANOVA de Welch: MCT~AtivFisica (Masculino)
psych::describeBy(Dados.M$MCT,
Dados.M$AtivFisica,
mat=2,
digits=2)
boxplot(MCT~AtivFisica, data=Dados.M)
car::densityPlot(MCT~AtivFisica, data=Dados.M)
RcmdrMisc::normalityTest(MCT~AtivFisica, data=Dados.M)
plot.design(MCT~AtivFisica, data=Dados.M)
s <- Rmisc::summarySE(Dados.M,
measurevar="MCT",
groupvars=c("AtivFisica"),
conf.interval = 1-alfa/(length(unique(Dados.M$AtivFisica))),
na.rm=
TRUE)
pd <- ggplot2::position_dodge(0.5)
ggplot2::ggplot(s,
ggplot2::aes(x=AtivFisica,
y=MCT)) +
ggplot2::geom_errorbar(ggplot2::aes(ymin=MCT-ci,
ymax=MCT+ci),
width=.3,
position=pd) +
ggplot2::geom_line(position=pd) +
ggplot2::geom_point(position=pd,
size=3,
shape=21) +
ggplot2::xlab("Nivel de Atividade Fisica") +
ggplot2::ylab("MCT (kg)") +
ggplot2::ggtitle("IC95% Bonferroni de MCT Masculino") +
ggplot2::ylim(62,80) +
ggplot2::theme_bw() +
ggplot2::theme(legend.justification=c(1,0),
legend.position=c(1,0))
cat("Teste omnibus")
fit.M <- oneway.test(MCT~AtivFisica,
data=Dados.M,
na.action=na.omit)
print(fit.M)
cat("Teste post hoc")
ph.M <- rstatix::games_howell_test(MCT~AtivFisica,
data=Dados.M)
print(as.data.frame(ph.M))
cat("Analise de significancia pratica: tamanho de efeito\n")
F <- as.numeric(fit.M$statistic)
dfn <- as.numeric(fit.M$parameter[1])
dfd <- as.numeric(fit.M$parameter[2])
eta2 <- dfn*F/(dfn*F+dfd)
effectsize::interpret_eta_squared(eta2, rules="cohen1992")