読者です 読者をやめる 読者になる 読者になる

Gries' Deviation of Proportion (DP)

 Rによる言語データ分析の教科書であるLevshina (2015) を読んでいたら、Stefan Th. Griesによって提案されたDeviation of Proportion (DP) (Gries, 2008; Lijffijt & Gries, 2012) という指標が出てきたので、以下にメモしておきます。この指標は、複数の(サブ)コーパスにおける頻度の割合の散らばり(偏り)を評価するものです。
 DPの計算には、(1) 個々の(サブ)コーパスにおける語彙頻度と、(2) 個々の(サブ)コーパスの総語数、の2つが必要となります。ここでは、日本人中高生の自由英作文コーパスであるJEFLL Corpusにおけるbreakfastの頻度を例にDPを求めます。

中1 中2 中3 高1 高2 高3
breakfastの観測頻度 211 705 638 764 798 355
総語数 51149 159736 117766 91096 170555 78979

 まずは、総語数を用いて、期待される割合を求めます。

# 総語数の代入
tokens <- c(51149, 159736, 117766, 91096, 170555, 78979)
# 期待される割合の計算
exp_prop <- prop.table(tokens)
# 期待される割合の確認
exp_prop

 上記のスクリプトを実行すると、以下のような結果が表示されます。

[1] 0.0764238 0.2386681 0.1759590 0.1361102 0.2548332 0.1180057

 次に、分析対象とする単語の頻度の割合を求めます。

# 観測頻度の代入
obs_freq <- c(211, 705, 638, 764, 798, 355)
# 観測された割合の計算
obs_prop <- prop.table(obs_freq)
# 観測された割合の確認
obs_prop

 上記のスクリプトを実行すると、以下のような結果が表示されます。

[1] 0.0607894 0.2031115 0.1838087 0.2201095 0.2299049 0.1022760

 DPは、期待される割合と観測された割合のずれの大きさを表しています。具体的には、個々の(サブ)コーパスにおける期待される割合と観測された割合の差(の絶対値)を足し合わせて、2で割ることで、計算できます。

# DPの計算
DP <- sum(abs(obs_prop - exp_prop)) / 2
# DPの確認
DP

 上記のスクリプトを実行すると、以下のような結果が表示されます。

[1] 0.09184896

 そして、1から最も小さい(サブ)コーパスの割合を引いた数で、DPを割ることで、正規化されたDPを計算します。正規化されたDPは、0から1までの値を取り、0に近いほど期待される割合に一致していて、1に近いほど期待される割合から乖離しています。

# 正規化されたDPの計算
DP_norm <- DP / (1 - min(exp_prop))
# 正規化されたDPの確認
DP_norm

 上記のスクリプトを実行すると、以下のような結果が表示されます。計算された値を見ると0.09944925なので、JEFLL Corpusにおけるbreakfastという単語は、ほとんど偏りなく散らばっていることが分かります。

[1] 0.09944925

 GriesのDPに関する参考文献は、以下のとおりです。

  • Gries, S. (2008). Dispersions and adjusted frequencies in corpora. International Journal of Corpus Linguistics, 13(4), 403-437. PDF
  • Levshina, N. (2015). How to do linguistics with R: Data exploration and statistical analysis. Amsterdam: John Benjamins.
  • Lijffijt, J., & Gries, S. (2012). Correction to "Dispersions and adjusted frequencies in corpora". International Journal of Corpus Linguistics, 17(1). 147-149. PDF