自分で作ったミニデータベースを検索して値を取り出すようなことができる関数
単に頻度をみるのではなく、2つの語が本当に共起しやすいのかを図る指標
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 Functionyahari<-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と対応分析
setwd("C:/Users/ユーザー名/Desktop")
x <- read.table("bccwjcore_adj_register.txt",
header=T, row.names=1, sep=",", fileEncoding="UTF-8")
#MASSパッケージを読み込む
library(MASS)
(x.ca<-corresp(x, nf=6)) #nf=行と列の数の小さいほうの値からさらに1引いた値
biplot(x.ca)
| 雑誌 | 書籍 | 新聞 | ブログ | 知恵袋 | 白書 | |
| ヤッパ | 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) #デンドログラムを描く
#amazon(4274065707)