# --------- [ dispersion.R ] ----------- # 分割表の行変数のちらばり指数を返す # 引数:2元分割表 xtabsの結果 # 戻り値:散らばり指数 # by Kaoru Fukuda, on Dec. 4, 2012 # revised on Jan. 6, 2013 # -------------------------------------- dispersion <- function( freq.tab ) { res <- vector() for ( i in 1:nrow( freq.tab ) ) { vec <- as.vector( freq.tab[i,] ) res[i] <- get_D( vec ) cat( "Dispersion of", rownames( freq.tab )[i], ":", res[i], "\n" ) } invisible( res ) } # 頻度ベクトルから、ちらばり指数を計算する下位関数 get_D <- function( vec ) { N <- sum( vec ) c <- length( vec ) pairs <- 0 # 識別可能な対 for ( i in 1:c ) { pairs <- pairs + vec[i]^2 } D <- ( c * ( N^2 - pairs ) ) / ( N^2 * ( c-1 ) ) return( D ) }