度数分布表から基礎統計量を求める     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

Made with Macintosh