« 2015年2月 | トップページ | 2015年7月 »

2015年3月11日 (水)

[R]歪度の計算

標準で組み込まれている関数に歪度を計算できるものはない。そのため、自作をする必要がある。

以下は歪度を計算する関数。引数に数値ベクトルを与える。

skewness <- function(val) {
  n <- length(val)
  var1 <- var(val) * (n - 1) / n  # 不偏分散から標本分散を求める
  sd1 <- sqrt(var1)               # 標本分散の平方根
  r <- sum((val - mean(val)) ^ 3) / (n * sd1 ^ 3)
  return(r)
}

「統計解析のはなし」(石村貞夫著、東京図書)の39~40ページに載っている計算例を試してみる。上記の関数を定義した上で、以下のスクリプトを実行する。

スクリプト

d <- c(rep(125, 7), rep(175, 22), rep(225, 15), rep(275, 14), rep(375, 8), rep(425, 2), rep(475, 1), rep(575, 2))
cat(sprintf("標本数 %d\n", length(d)))
cat(sprintf("平均 %f\n", mean(d)))
val <- var(d) * (length(d) - 1) / length(d)
cat(sprintf("標本分散 %f\n", val))
cat(sprintf("標本分散の標準偏差 %f\n", sqrt(val)))
cat(sprintf("歪度 %f\n", skewness(d)))

出力

71
平均 245.422535
標本分散 9829.398929
標本分散の標準偏差 99.143325
歪度 1.344286

歪度a3とは、分布の形が左右対称になっているかどうかを示す量であり、その数値が指す内容は以下のとおりである。

a3>0 - 右にすそが長い
a3≒0 - 左右対称
a3<0 - 左にすそが長い

2015年3月 1日 (日)

[R].xlsxファイル(Excelのファイル)の中身を読み込む

xlsxパッケージのread.xlsx関数を使う。

xlsxパッケージをインストールする。これは最初の1回だけでよい。

> install.packages("xlsx")

パッケージの使用を宣言してread.xlsx関数を使う。ここでは、カレントフォルダーにdata.xlsxというファイルがあり、それを読み出してデータフレームdtfに代入する例。引数が1つ必要で、1を指定すると1番目のワークシートのデータを抜き出すということになる。headerオプションをつけないと、そのワークシートの1行目の値をデータフレームのフィールド名として扱ってしまう。1行目からデータとして読み込む場合は、このオプションをFALSEにする。

> library(xlsx)
> dtf <- read.xlsx("
data.xlsx", 1, header = FALSE)

« 2015年2月 | トップページ | 2015年7月 »

無料ブログはココログ

■■

■■■