ac_keyness() calcula estatisticas de "keyness" para comparar a
distribuicao de termos entre dois grupos. O criterio que define os
grupos e do pesquisador: partido, periodo, tema, regiao, autor,
condicao experimental ou qualquer variavel categorica no corpus. A
funcao e inspirada em quanteda.textstats::textstat_keyness() e
utiliza tabelas 2x2 por termo.
A entrada tipica e uma tabela de frequencias gerada por
ac_count(), agregada por uma coluna de grupo:
ac_count(corp, by = "grupo")seguido deac_keyness(freq, group = "grupo", target = "A").
Usage
ac_keyness(x, group, target, measure = c("chi2", "ll"), sort = TRUE)Arguments
- x
Um
data.frameoutibble::tibble()contendo, no minimo, as colunastoken,ne uma coluna de grupo.- group
Nome da coluna em
xque identifica os grupos (string). Essa coluna deve possuir exatamente dois valores distintos.- target
Valor de
groupque sera considerado o grupo alvo (por exemplo,"Governo"). O outro valor sera tratado como grupo de referencia.- measure
Estatistica de keyness a ser usada. Pode ser
"chi2"(padrao) para qui-quadrado com 1 grau de liberdade, ou"ll"para log-likelihood (G^2).- sort
Logico. Se
TRUE(padrao), ordena a saida porkeynessem ordem decrescente (termos mais caracteristicos do grupo alvo no topo).
Value
Um tibble::tibble() com uma linha por termo, contendo:
tokengroup(nome da coluna de grupo, repetido para referencia)target,referencen_target,n_referencetotal_target,total_referencekeyness(estatistica assinada, positiva quando o termo e mais frequente no grupo alvo, negativa quando e mais frequente no grupo de referencia)direction(nome do grupo em que o termo e relativamente mais frequente)
Details
Para cada termo, a funcao constroi uma tabela 2x2:
a = n_target(frequencia do termo no grupo alvo)b = n_reference(frequencia do termo no grupo de referencia)c = total_target - ad = total_reference - b
Em seguida, calcula:
qui-quadrado com 1 g.l. na opcao
measure = "chi2";log-likelihood ratio (G^2) na opcao
measure = "ll".
Em ambos os casos, a estatistica e multiplicada pelo sinal da
diferenca de frequencias relativas (a / total_target - b / total_reference),
de forma que valores positivos indiquem termos mais caracteristicos
do grupo alvo e valores negativos termos mais caracteristicos do
grupo de referencia.
Examples
# Comparar vocabulario entre dois grupos (aqui, dois temas legislativos).
# O criterio de grupo e do pesquisador: partido, periodo, regiao, tema...
df <- data.frame(
id = paste0("d", 1:8),
texto = c(
"reforma tributaria simplifica sistema impostos empresas",
"IVA dual substitui PIS COFINS ICMS federal",
"aliquotas excecoes tributarias setores economicos",
"reforma tributaria unifica impostos indiretos",
"programa habitacional amplia recursos moradia popular",
"deficit habitacional afeta familias baixa renda",
"urbanizacao favelas regularizacao fundiaria municipios",
"moradia digna direito social constituicao"
),
tema = rep(c("tributario", "habitacao"), each = 4),
stringsAsFactors = FALSE
)
corp <- ac_corpus(df, text = texto, docid = id)
freq <- ac_count(corp, by = "tema")
# Termos-chave do grupo "tributario" versus o resto
key <- ac_keyness(freq, group = "tema", target = "tributario")
head(key)
#> # A tibble: 6 × 10
#> token group target reference n_target n_reference total_target total_reference
#> <chr> <chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl>
#> 1 impo… tema tribu… habitacao 2 0 23 22
#> 2 refo… tema tribu… habitacao 2 0 23 22
#> 3 trib… tema tribu… habitacao 2 0 23 22
#> 4 COFI… tema tribu… habitacao 1 0 23 22
#> 5 ICMS tema tribu… habitacao 1 0 23 22
#> 6 IVA tema tribu… habitacao 1 0 23 22
#> # ℹ 2 more variables: keyness <dbl>, direction <chr>
