度数分布表から基礎統計量を求める Last modified: Dec 21, 2006
目的
度数分布表の形で与えられたデータの基礎統計量を求める。
参考文献
R. R. Sokal and F. J. Rohlf: Biometry - Third Edition, W. H. Freeman and company.
使用法
basic.stat(x, f)
引数
x 階級の級限界値のベクトル
f 度数
ソース
インストールは,以下の 1 行をコピーし,R コンソールにペーストする
source("http://aoki2.si.gunma-u.ac.jp/R/src/basic_stat.R", encoding="euc-jp")
# 度数分布表から基礎統計量を求める
basic.stat <- function( x, # 級限界のベクトル
f) # 度数のベクトル
{
w <- diff(x[1:2]) # 区間幅
stopifnot(all(diff(x) == w)) # 区間は等間隔でなければならない
stopifnot(length(x) == length(f)) # ベクトルの長さは同じでなければならない
x <- x+w/2 # 級中心ベクトルに変換
n <- sum(f) # サンプルサイズ
m <- sum(f*x)/n # 平均値
v <- sum(f*(x-m)^2)/(n-1) # 不偏分散
SD <- sqrt(v) # 標準偏差
CV <- SD/m*100 # 変動係数
g1 <- n*sum(f*(x-m)^3)/(n-1)/(n-2)/SD^3 # 歪度(不偏推定値)
g2 <- n*(n+1)*sum(f*(x-m)^4)/(n-1)/(n-2)/(n-3)/SD^4-3*(n-1)^2/(n-2)/(n-3) # 尖度
result <- list(n=n, mean=m, variance=v, sd=SD, g1=g1, g2=g2, CV=CV) # リストで返す
class(result) <- c("basic.stat", "list")
return(result)
}
print.basic.stat <- function(x) # basic.stat のプリント・メソッド
{
cat("標本の大きさ =", x$n); cat("\n")
cat("算術平均値 =", x$mean); cat("\n")
cat("不偏分散 =", x$variance); cat("\n")
cat("標準偏差 =", x$sd); cat("\n")
cat("歪度 =", x$g1); cat("\n")
cat("尖度 =", x$g2); cat("\n")
cat("変動係数 =", x$CV); cat("\n")
}
使用例
> x <- seq(59.5, 171.5, 8)
> f <- c(2, 6, 39, 385, 888, 1729, 2240, 2007, 1233, 641, 201, 74, 14, 5, 1)
> basic.stat(x, f)
標本の大きさ = 9465
算術平均値 = 113.8996
不偏分散 = 184.801
標準偏差 = 13.59415
歪度 = 0.1893559
尖度 = 0.08913261
変動係数 = 11.93521
注: print.basic.stat 関数がない場合には,リストとして表示される
直前のページへ戻る
E-mail to Shigenobu AOKI