(今後、これ以外のイベントも紹介します)
Public Function LogLikelihood(ByVal target As Long, comparison As Long, targetTotal As Long, comparisonTotal As Long) As Variant
a = target
b = comparison
c = targetTotal - a
d = comparisonTotal - b
If a = 0 Then aloga = 0 Else aloga = a * Log(a)
If b = 0 Then blogb = 0 Else blogb = b * Log(b)
LogLikelihood = 2 * (aloga + blogb + c * Log(c) + d * Log(d) - (a + b) * Log(a + b) - (a + c) * Log(a + c) - (b + d) * Log(b + d) - (c + d) * Log(c + d) + (a + b + c + d) * Log(a + b + c + d))
If target / targetTotal < comparison / comparisonTotal Then LogLikelihood = LogLikelihood * (-1)
End Function
(ミニコーパス作成に向けて)
自分で作ったミニデータベースを検索して値を取り出すようなことができる関数
単に頻度をみるのではなく、2つの語が本当に共起しやすいのかを図る指標
(アルバイト募集)
(前回補足コメント)
yahari<-matrix(c(
1,2,0,9,4,0,
20,12,1,30,23,0,
31,54,13,17,31,2
)
,3,6,byrow = T)
colnames(yahari)<-c("雑誌","書籍","新聞","ブログ","知恵袋","白書")
rownames(yahari)<-c("ヤッパ","ヤッパリ","ヤハリ")
#MASSパッケージを読み込む
library(MASS)
(yahari.ca<-corresp(yahari,nf=3))
biplot(yahari.ca)
#固有値
固有値<-yahari.ca$cor^2
round(固有値,3)
#累積寄与率
round(100*固有値/sum(固有値),2)
参考リンク:Rと対応分析
negi<-matrix(c(
42,93,2,129,90,7,0,1,12,23,47,0,
33,36,0,65,87,6,4,36,11,0,61,6,
5,30,5,33,9,1,0,1,8,0,2,0,
97,336,0,215,225,39,0,3,15,0,92,4,
3,23,0,31,86,0,3,0,0,0,28,2
) ,5,12,byrow = T)
colnames(negi)<-c("P雑誌","P書籍","P新聞","L書籍","ブログ","ベストセラー","韻文","教科書","広報誌","国会会議録","知恵袋","白書")
rownames(negi)<-c("タマネギ","たまねぎ","玉ネギ","玉ねぎ","玉葱")
library(MASS)
(negi.ca<-corresp(negi,nf=5))
biplot(negi.ca)
固有値<-negi.ca$cor 2
round(固有値,3)
#累積寄与率
round(100*固有値/sum(固有値),2)キー: (語彙素="バイオリン" OR 語彙素="バイオレット" OR 語彙素="バイタリティ" OR 語彙素="バイキング" OR 語彙素="バカンス" OR 語彙素="バチカン" OR 語彙素="バニラ" OR 語彙素="バラエティ" OR 語彙素="バリエーション" OR 語彙素="バリュー" OR 語彙素="ビーナス" OR 語彙素="ビオラ" OR 語彙素="ビザ" OR 語彙素="ベール" OR 語彙素="ベテラン" OR 語彙素="ベトナム" OR 語彙素="バージン");
| 雑誌 | 書籍 | 新聞 | ブログ | 知恵袋 | 白書 | |
| ヤッパ | 1 | 2 | 9 | 4 | ||
| ヤッパリ | 20 | 12 | 1 | 30 | 23 | |
| ヤハリ | 31 | 54 | 13 | 17 | 31 | 2 |
data <- matrix(c( 9,4,30,23,17,31), ncol=2, byrow=T) chisq.test(data)
帰無仮説(H0):二つのレジスターと「やはり」類の使用頻度には差がない
検定の結果、p<0.05であれば0.05(= 5%)水準でH0は棄却される =二つのレジスターに差がある(レジスターと関係がないのに偶然こうなる可能性は5%以下)
yahari<-matrix(c(
1,2,0,9,4,0,
20,12,1,30,23,0,
31,54,13,17,31,2
)
,3,6,byrow = T)
colnames(yahari)<-c("雑誌","書籍","新聞","ブログ","知恵袋","白書")
rownames(yahari)<-c("ヤッパ","ヤッパリ","ヤハリ")
yahari <- t(yahari) #行と列を入れ替え
yahari.d<-dist(yahari) #距離の計算
yahari.d
result <- hclust(yahari.d, method="ward.D") #word法でクラスター分析
plot(result,hang=-1) #デンドログラムを描く