自分で作ったミニデータベースを検索して値を取り出すようなことができる関数
単に頻度をみるのではなく、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 Function
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と対応分析
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)