5.9 Teste de Hipóteses

Seja um parâmetro \(\theta\) pertencente a um espaço paramétrico \(\Theta\), i.e., o conjunto de todos os possíveis valores de \(\theta\). Considere uma partição tal que \(\Theta_0 \cup \Theta_1 = \Theta\) e \(\Theta_0 \cap \Theta_1 = \emptyset\). Um teste de hipóteses é uma regra de decisão que permite decidir, à luz das informações disponíveis, se é mais verossímil admitir \(\theta \in \Theta_0\) ou \(\theta \in \Theta_1\).

Did the sun just explode? de https://xkcd.com/1132/

Figura 5.2: Did the sun just explode? de https://xkcd.com/1132/

Exercício 5.27 Veja

  1. Seção 3.4 de (Paulino et al. 2003).
  2. Capítulo 9 de (Press 2003).

Exercício 5.28 Verifique a hipótese de que a palavra ‘hipótese’ vem do grego hipo (fraca) + tese = ‘tese fraca’ conforme sugerido por Renato Janine Ribeiro no Provoca de 24/08/2021.

5.9.1 Fator de Bayes

In a 1935 paper and in his book Theory of Probability, Jeffreys developed a methodology for quantifying the evidence in favor of a scientific theory. The centerpiece was a number, now called the Bayes factor, which is the posterior odds of the null hypothesis when the prior probability on the null is one-half. (Kass and Raftery 1995, 773)

Suponha que deseja-se testar \(H_0: \theta \in \Theta_0\) vs \(H_1:\theta \in \Theta_1\). Do teorema de Bayes obtém-se

\[\begin{equation} P(H_i|D) = \frac{P(D|H_i)P(H_i)}{P(D|H_0)P(H_0) + P(D|H_1)P(H_1)} \tag{5.14} \end{equation}\]

Desta forma

\[\begin{equation} \frac{P(H_1|D)}{P(H_0|D)} = \frac{P(D|H_1)}{P(D|H_0)} \frac{P(H_1)}{P(H_0)} \nonumber \tag{5.15} \end{equation}\]

Aplicando \(P(H_0)=P(H_1)=1/2\) conforme (Jeffreys 1935) e (Jeffreys 1961), define-se o fator de Bayes por

\[\begin{equation} B_{10} = \frac{P(D|H_1)}{P(D|H_0)} \tag{5.16} \end{equation}\]

Conforme (Kass and Raftery 1995, 776), no caso mais simples, quando as duas hipóteses são distribuições únicas sem parâmetros livres (o caso do teste “simples versus simples”), \(B_{10}\) é a razão de verossimilhança. Em outros casos, quando há parâmetros desconhecidos sob uma ou ambas as hipóteses, o fator de Bayes ainda é dado por (5.14), mas as densidades \(P(D|H_0)\) e \(P(D|H_1)\) são obtidas integrando, e não maximizando sobre o espaço de parâmetros.

Podem-se considerar as referências sugeridas por (Kass and Raftery 1995, 777).

\(2 \log_e B_{10}\) \(B_{10}\) Evidência contra \(H_0\)
0 a 2 1 a 3 Nem vale mencionar
2 a 6 3 a 20 Positiva
6 a 10 20 a 150 Forte
>10 >150 Muito forte

5.9.1.1 Pacote BayesFactor

(Morey and Rouder 2024) apresentam o pacote BayesFactor.

library(BayesFactor)
BFManual()

Exemplo 5.35 Podemos comparar as funções clássicas com BayesFactor::ttestBF(). De acordo com a documentação, “o fator de Bayes fornecido por ttestBF testa a hipótese nula de que a média (ou diferença média) de uma população normal é \(\mu_0\)”.

As hipóteses podem ser escritas da seguinte forma: \[\left\{ \begin{array}{l} H_0: y_i \sim N(\mu_0,\sigma^2) \\ H_1: y_i \sim N(\mu_1,\sigma^2) \\ \end{array} \right. \]

Conforme apontado por Morey and Rouder (2011),409, Jeffreys (1961) sugere colocar prioris no tamanho do efeito padronizado (\(\delta=\mu/\sigma\)). Neste caso, \(y_i \sim N(\sigma\delta,\sigma^2)\). Os autores ainda indicam que “essa estrutura a priori é inspirada pelo conhecimento de que os tamanhos reais dos efeitos normalmente não são grandes, e que o analista é agnóstico quanto à direção de qualquer efeito possível”. Apontam ainda que a priori com distribuição Cauchy padrão para \(\delta\) “quantifica uma suposição de que parâmetros verdadeiros excessivamente grandes são muito menos plausíveis do que tamanhos de efeito pequenos, mas ainda são possíveis”.

A estrutura da priori para \(\delta\) é expressa da seguinte forma. \[\left\{ \begin{array}{l} H_0: \delta = 0\\ H_1: \delta \sim Cauchy(r) \\ \end{array} \right. \]

A priori não informativa imprópria (de Jeffreys) para \(\sigma^2\) é dada por

\[\begin{equation} \pi(\sigma^2) \propto \frac{1}{\sigma^2}. \tag{5.1} \end{equation}\]

A combinação destas prioris para \(\delta\) e \(\sigma^2\) é chamada priori de Jeffreys–Zellner–Siow (JZS).

Parâmetro de escala Valor de \(r\)
Medium (padrão) \(\frac{\sqrt{2}}{2}\)
Wide \(1\) (Cauchy padrão ou \(t_1\))
Ultrawide \(\sqrt{2}\)

O fator de Bayes é calculado via quadratura gaussiana, para mais detalhes veja a Rouder et al. (2009), Morey et al. (2011) e Morey and Rouder (2011).

## Sleep data from t test example
sleep2 <- datasets::sleep
plot(extra ~ group, data = sleep2)

## classical paired t test
t.test(x = sleep2$extra[sleep2$group==1], 
       y = sleep2$extra[sleep2$group==2], paired = TRUE)
## 
##  Paired t-test
## 
## data:  sleep2$extra[sleep2$group == 1] and sleep2$extra[sleep2$group == 2]
## t = -4.0621, df = 9, p-value = 0.002833
## alternative hypothesis: true mean difference is not equal to 0
## 95 percent confidence interval:
##  -2.4598858 -0.7001142
## sample estimates:
## mean difference 
##           -1.58
# classical Wilcoxon (signed rank test (median = 0 versus median > 0)
wilcox.test(x = sleep2$extra[sleep2$group==1], 
            y = sleep2$extra[sleep2$group==2], paired = TRUE)
## 
##  Wilcoxon signed rank exact test
## 
## data:  sleep2$extra[sleep2$group == 1] and sleep2$extra[sleep2$group == 2]
## V = 0, p-value = 0.003906
## alternative hypothesis: true location shift is not equal to 0
## bayesian paired t test
ttestBF(x = sleep2$extra[sleep2$group == 1], 
        y = sleep2$extra[sleep2$group == 2], paired = TRUE)
## Bayes factor analysis
## --------------
## [1] Alt., r=0.707 : 17.25888 ±0%
## 
## Against denominator:
##   Null, mu = 0 
## ---
## Bayes factor type: BFoneSample, JZS

Exemplo 5.36 Em Python.

import matplotlib.pyplot as plt
import pandas as pd
from scipy.stats import ttest_rel, wilcoxon
from bayesfactor import ttestBF

# Carregando os dados do conjunto de dados sleep
sleep2 = pd.DataFrame({
    'extra':[0.7,-1.6,-0.2,-1.2,-0.1,3.4,3.7,0.8,0.0,2.0,1.9,0.8,1.1,0.1,-0.1,4.4,5.5,1.6,4.6,3.4],
    'group':[1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2],
    'ID':[1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10]
})

# Gráfico de dispersão
plt.figure(figsize=(8, 6))
plt.scatter(sleep2['group'], sleep2['extra'])
plt.xlabel('Grupo', fontsize=12)
plt.ylabel('Diferença', fontsize=12)
plt.title('Diferença de horas de sono por grupo', fontsize=16)
plt.xticks([1, 2])
plt.show()

# Teste t pareado clássico
t_stat, p_value = ttest_rel(sleep2['extra'][sleep2['group'] == 1], 
                            sleep2['extra'][sleep2['group'] == 2])
print(f"Teste t pareado clássico: t={t_stat:.4f},p={p_value:.4f}")

# Teste de Wilcoxon (teste de postos sinalizados) clássico
w_stat, p_value = wilcoxon(sleep2['extra'][sleep2['group'] == 1], 
                           sleep2['extra'][sleep2['group'] == 2])
print(f"Teste de Wilcoxon clássico: w={w_stat:.4f},p={p_value:.4f}")

# Teste t pareado bayesiano
bf = ttestBF(x=sleep2['extra'][sleep2['group'] == 1], 
             y=sleep2['extra'][sleep2['group'] == 2], paired=True)
print(f"Fator de Bayes para o teste t pareado: {bf:.4f}")

Exemplo 5.37 Exemplo Moon and Agression de (Moore and McCabe 1989, 410), que fornece o número de comportamentos agressivos de pacientes com demência durante duas fases do ciclo lunar (cheia e não-cheia). Cada linha corresponde a um participante.

# lendo dados
ma <- read.csv('https://filipezabala.com/data/moon-aggression.csv')

# gráfico
boxplot(ma)

## classical paired t test
t.test(x = ma$Moon, 
       y = ma$Other, paired = TRUE)
## 
##  Paired t-test
## 
## data:  ma$Moon and ma$Other
## t = 6.4518, df = 14, p-value = 1.518e-05
## alternative hypothesis: true mean difference is not equal to 0
## 95 percent confidence interval:
##  1.623968 3.241365
## sample estimates:
## mean difference 
##        2.432667
# classical Wilcoxon signed rank test (median=0 versus median>0)
wilcox.test(x = ma$Moon, 
            y = ma$Other, paired = TRUE)
## 
##  Wilcoxon signed rank exact test
## 
## data:  ma$Moon and ma$Other
## V = 119, p-value = 0.0001221
## alternative hypothesis: true location shift is not equal to 0
## bayesian paired t test
ttestBF(x = ma$Moon, 
        y = ma$Other, paired = TRUE)
## Bayes factor analysis
## --------------
## [1] Alt., r=0.707 : 1521.194 ±0%
## 
## Against denominator:
##   Null, mu = 0 
## ---
## Bayes factor type: BFoneSample, JZS

Exemplo 5.38 Em Python.

import matplotlib.pyplot as plt
import pandas as pd
from scipy.stats import ttest_rel, wilcoxon
from bayesfactor import ttestBF

# Lendo os dados
ma = pd.read_csv('https://filipezabala.com/data/moon-aggression.csv')

# Gráfico de boxplot
ma.boxplot()
plt.title('Agressividade na Lua vs Outros Dias')
plt.ylabel('Nível de Agressividade')
plt.show()

# Teste t pareado clássico
t_stat, p_value = ttest_rel(ma['Moon'], ma['Other'])
print(f"Teste t pareado clássico: t={t_stat:.4f},p={p_value:.4f}")

# Teste de Wilcoxon (teste de postos sinalizados) clássico
w_stat, p_value = wilcoxon(ma['Moon'], ma['Other'])
print(f"Teste de Wilcoxon clássico: w={w_stat:.4f},p={p_value:.4f}")

# Teste t pareado bayesiano
bf = ttestBF(x=ma['Moon'], y=ma['Other'], paired=True)
print(f"Fator de Bayes para o teste t pareado: {bf:.4f}")

Exercício 5.30 Refaça os exemplos 5.35 e 5.37 utilizando o JASP, discutido na Seção 1.1.5.

Exercício 5.31 Veja

  1. (Kass and Raftery 1995)
  2. Seção 3.4.1 de (Paulino et al. 2003)
  3. Seção 9.5.1 de (Press 2003)
  4. A vinheta de BFpack (Mulder et al. 2021) em https://cran.r-project.org/package=BFpack.

5.9.2 FBST

FBST é o acrônimo para Full Bayesian Significance Test, proposto por (Pereira and Stern 1999) para testar hipóteses precisas (sharp hypotheses), amplamente revisado em (Pereira et al. 2008) e (Pereira and Stern 2020). Para idéias iniciais, veja o artigo de Eduardo E. R. Junior (2016-04-20).

5.9.2.1 Pacote fbst

Kelter (2022) apresenta fbst, um pacote R para o Full Bayesian Significance Test para testar uma hipótese nula precisa contra sua alternativa por meio do valor de evidência \(e\) conforme (Pereira and Stern 1999).

# https://cran.r-project.org/package=fbst
library(fbst)

set.seed(57)
grp1 <- rnorm(50,0,1.5)
grp2 <- rnorm(50,0.8,3.2)

p <- as.vector(BayesFactor::ttestBF(x=grp1,y=grp2, 
                                    posterior = TRUE,
                                    iterations = 3000, 
                                    rscale = "medium")[,4])

# flat reference function
res <- fbst(posteriorDensityDraws = p, nullHypothesisValue = 0, 
            dimensionTheta = 2, dimensionNullset = 1)
summary(res)
## Full Bayesian Significance Test for testing a sharp hypothesis against its alternative:
## Reference function: Flat 
## Hypothesis H_0:Parameter= 0 against its alternative H_1
## Bayesian e-value against H_0: 0.9265912 
## Standardized e-value: 0.02228466
plot(res)

# medium Cauchy C(0,1) reference function
res_med <- fbst(posteriorDensityDraws = p, nullHypothesisValue = 0, 
                dimensionTheta = 2, dimensionNullset = 1, FUN = dcauchy, 
                par = list(location = 0, scale = sqrt(2)/2))
summary(res_med)
## Full Bayesian Significance Test for testing a sharp hypothesis against its alternative:
## Reference function: User-defined 
## Hypothesis H_0:Parameter= 0 against its alternative H_1
## Bayesian e-value against H_0: 0.9529035 
## Standardized e-value: 0.01343346
plot(res_med)

5.9.3 Valores-p bayesiano

O valor-p preditivo a posteriori (Paulino et al. 2003) e a probabilidade de direção (Makowski et al. 2019) são reportados na literatura como ‘valores-p bayesianos’.

5.9.4 Combinando ferramentas

(Gannon et al. 2019) sugerem que “os pesquisadores não precisam abandonar completamente o valor p, o índice de significância mais conhecido, mas devem parar de usar níveis de significância que não dependem do tamanho da amostra”.

tab <- matrix(c(1,7, 4,4), nrow = 2, byrow = TRUE)
rownames(tab) <- c('C','T') # Controle/Tratamento
colnames(tab) <- c('+','-') # Respondeu positivamente/negativamente
(tab <- as.table(tab))
##   + -
## C 1 7
## T 4 4
# Teste qui-quadrado sem correção de Yates
chisq.test(tab, correct = FALSE)
## 
##  Pearson's Chi-squared test
## 
## data:  tab
## X-squared = 2.6182, df = 1, p-value = 0.1056
# Teste qui-quadrado com correção de Yates
chisq.test(tab)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  tab
## X-squared = 1.1636, df = 1, p-value = 0.2807
# Teste exato de Fisher
fisher.test(tab)
## 
##  Fisher's Exact Test for Count Data
## 
## data:  tab
## p-value = 0.2821
## alternative hypothesis: true odds ratio is not equal to 1
## 95 percent confidence interval:
##  0.002553456 2.416009239
## sample estimates:
## odds ratio 
##  0.1624254
# Fator de Bayes
fh <- function(x,y){
  (choose(8,x)*choose(8,y))/(17*choose(16,x+y))
}
fa <- 1/81
bf <- function(x,y){
  fh(x,y)/fa
}
BF <- matrix(nrow = 9, ncol = 9)
rownames(BF) <- paste0('x.',0:8)
colnames(BF) <- paste0('y.',0:8)
for(i in 0:8){
  for(j in 0:8){
    BF[i+1,j+1] <- bf(j,i)
  }
}
addmargins(round(BF,3)) # note a questão do arredondamento
##       y.0   y.1   y.2   y.3   y.4   y.5   y.6   y.7   y.8    Sum
## x.0 4.765 2.382 1.112 0.476 0.183 0.061 0.017 0.003 0.000  8.999
## x.1 2.382 2.541 1.906 1.173 0.611 0.267 0.093 0.024 0.003  9.000
## x.2 1.112 1.906 2.052 1.710 1.166 0.653 0.290 0.093 0.017  8.999
## x.3 0.476 1.173 1.710 1.866 1.633 1.161 0.653 0.267 0.061  9.000
## x.4 0.183 0.611 1.166 1.633 1.814 1.633 1.166 0.611 0.183  9.000
## x.5 0.061 0.267 0.653 1.161 1.633 1.866 1.710 1.173 0.476  9.000
## x.6 0.017 0.093 0.290 0.653 1.166 1.710 2.052 1.906 1.112  8.999
## x.7 0.003 0.024 0.093 0.267 0.611 1.173 1.906 2.541 2.382  9.000
## x.8 0.000 0.003 0.017 0.061 0.183 0.476 1.112 2.382 4.765  8.999
## Sum 8.999 9.000 8.999 9.000 9.000 9.000 8.999 9.000 8.999 80.996
(BF_obs <- bf(1,4))
## [1] 0.6108597
sum(BF[BF <= BF_obs])/81 # P-value
## [1] 0.09228027

Exemplo 5.39 Em Python.

import numpy as np
from scipy.stats import chi2_contingency, fisher_exact
from scipy.special import comb

# Criando a tabela de contingência
tab = np.array([[1, 7], [4, 4]])

# Teste qui-quadrado sem correção de Yates
chi2_stat, p_value, dof, expected = chi2_contingency(tab, correction=False)
print(f"Teste qui-quadrado sem correção: chi2={chi2_stat:.4f},p={p_value:.4f},dof={dof}")

# Teste qui-quadrado com correção de Yates
chi2_stat, p_value, dof, expected = chi2_contingency(tab, correction=True)
print(f"Teste qui-quadrado com correção: chi2={chi2_stat:.4f},p={p_value:.4f},dof={dof}")

# Teste exato de Fisher
odds_ratio, p_value = fisher_exact(tab)
print(f"Teste exato de Fisher: odds ratio={odds_ratio:.4f},p={p_value:.4f}")

# Fator de Bayes
def fh(x, y):
    return (comb(8, x) * comb(8, y)) / (17 * comb(16, x + y))

fa = 1/81

def bf(x, y):
    return fh(x, y) / fa

BF = np.zeros((9, 9))
for i in range(9):
    for j in range(9):
        BF[i, j] = bf(j, i)

# Adicionando margens à matriz BF (aproximado)
BF_with_margins = np.c_[BF, np.sum(BF, axis=1)]
BF_with_margins = np.r_[BF_with_margins,[np.sum(BF_with_margins,axis=0)]]
print("\nMatriz BF com margens (aproximada):")
print(np.round(BF_with_margins, 3))

# Calculando o BF observado
BF_obs = bf(1, 4)
print(f"\nBF observado: {BF_obs:.4f}")

# Calculando o p-value (aproximado)
p_value_bf = np.sum(BF[BF <= BF_obs]) / 81
print(f"P-value (aproximado): {p_value_bf:.4f}")

5.9.5 Testes agnósticos

[A]gnostic tests, in which one can accept, reject or remain agnostic with respect to a given hypothesis. (Stern 2016, 1)

References

Coscrato, Victor, Rafael Izbicki, and Rafael Bassi Stern. 2018. Agnostic Tests Can Control the Type i and Type II Errors Simultaneously. https://arxiv.org/abs/1805.04620.
Esteves, Luis Gustavo, Rafael Izbicki, Julio Michael Stern, and Rafael Bassi Stern. 2019. “Pragmatic Hypotheses in the Evolution of Science.” Entropy 21 (9): 883. https://www.mdpi.com/1099-4300/21/9/883/pdf.
Esteves, Luı́s G, Rafael Izbicki, Julio M Stern, and Rafael B Stern. 2023. “Logical Coherence in Bayesian Simultaneous Three-Way Hypothesis Tests.” International Journal of Approximate Reasoning 152: 297–309. https://repositorio.usp.br/bitstreams/fa231518-a6cf-4c02-a009-f61d437a4902.
Gannon, Mark Andrew, Carlos Alberto de B. Pereira, and Adriano Polpo. 2019. Blending Bayesian and Classical Tools to Define Optimal Sample-Size-Dependent Significance Levels.” The American Statistician 73 (sup1): 213–22. https://www.tandfonline.com/doi/full/10.1080/00031305.2018.1518268.
Jeffreys, Harold. 1935. “Some Tests of Significance, Treated by the Theory of Probability.” Mathematical Proceedings of the Cambridge Philosophical Society 31: 203–22. https://pdodds.w3.uvm.edu/teaching/courses/2009-08UVM-300/docs/others/everything/jeffreys1935a.pdf.
Jeffreys, Harold. 1961. The Theory of Probability. 3rd ed. Oxford University Press.
Kass, Robert E, and Adrian E Raftery. 1995. “Bayes Factors.” Journal of the American Statistical Association 90 (430): 773–95. http://xyala.cap.ed.ac.uk/teaching/tutorials/phylogenetics/Bayesian_Workshop/PDFs/Kass%20and%20Raftery%201995.pdf.
Kelter, Riko. 2022. “Fbst: An R Package for the Full Bayesian Significance Test for Testing a Sharp Null Hypothesis Against Its Alternative via the e Value.” Behavior Research Methods 54 (3): 1114–30. https://link.springer.com/article/10.3758/s13428-021-01613-6.
Makowski, Dominique, Mattan S Ben-Shachar, SH Annabel Chen, and Daniel Lüdecke. 2019. “Indices of Effect Existence and Significance in the Bayesian Framework.” Frontiers in Psychology 10: 2767. https://doi.org/10.3389/fpsyg.2019.02767.
Moore, David S, and George P McCabe. 1989. Introduction to the Practice of Statistics. WH Freeman/Times Books/Henry Holt & Co.
Morey, Richard D., and Jeffrey N. Rouder. 2011. “Bayes Factor Approaches for Testing Interval Null Hypotheses.” Psychological Methods 16 (4): 406. https://psycnet.apa.org/fulltext/2011-15467-001.pdf.
Morey, Richard D., and Jeffrey N. Rouder. 2024. BayesFactor: Computation of Bayes Factors for Common Designs. https://CRAN.R-project.org/package=BayesFactor.
Morey, Richard D, Jeffrey N Rouder, Michael S Pratte, and Paul L Speckman. 2011. “Using MCMC Chain Outputs to Efficiently Estimate Bayes Factors.” Journal of Mathematical Psychology 55 (5): 368–78. https://psycnet.apa.org/doi/10.1016/j.jmp.2011.06.004.
Mulder, Joris, Donald R. Williams, Xin Gu, et al. 2021. BFpack: Flexible Bayes Factor Testing of Scientific Theories in R.” Journal of Statistical Software 100 (18): 1–63. https://doi.org/10.18637/jss.v100.i18.
Paulino, Carlos Daniel Mimoso, Maria Antónia Amaral Turkman, and Bento Murteira. 2003. Estatı́stica Bayesiana. Fundação Calouste Gulbenkian, Lisboa. http://primo-pmtna01.hosted.exlibrisgroup.com/PUC01:PUC01:puc01000334509.
Pereira, Carlos A de Bragança, Julio Michael Stern, Sergio Wechsler, et al. 2008. “Can a Significance Test Be Genuinely Bayesian?” Bayesian Analysis 3 (1): 79–100. https://projecteuclid.org/download/pdf_1/euclid.ba/1340370562.
Pereira, Carlos Alberto de Bragança, and Julio Michael Stern. 1999. “Evidence and Credibility: Full Bayesian Significance Test for Precise Hypotheses.” Entropy 1 (4): 99–110. https://www.mdpi.com/1099-4300/1/4/99.
Pereira, Carlos Alberto de B., and Julio Michael Stern. 2020. The e-value: a fully Bayesian significance measure for precise statistical hypotheses and its research program.” São Paulo Journal of Mathematical Sciences. https://doi.org/10.1007/s40863-020-00171-7.
Press, S James. 2003. Subjective and objective Bayesian statistics: Principles, models, and applications, 2nd. edition. John Wiley & Sons. http://primo-pmtna01.hosted.exlibrisgroup.com/PUC01:PUC01:oclc(OCoLC)587388980.
Rouder, Jeffrey N, Paul L Speckman, Dongchu Sun, Richard D Morey, and Geoffrey Iverson. 2009. “Bayesian t Tests for Accepting and Rejecting the Null Hypothesis.” Psychonomic Bulletin & Review 16: 225–37. https://link.springer.com/content/pdf/10.3758/PBR.16.2.225.pdf.
Stern, Julio Michael. 2016. “The Logical Consistency of Simultaneous Agnostic Hypothesis Tests.” Entropy. https://repositorio.usp.br/item/002770514.