More Related Content
PPTX
PDF
PPTX
PDF
構造方程式モデルによる因果推論: 因果構造探索に関する最近の発展 PDF
「内積が見えると統計学も見える」第5回 プログラマのための数学勉強会 発表資料 PDF
PDF
PPTX
What's hot
PPTX
(実験心理学徒だけど)一般化線形混合モデルを使ってみた PPTX
PDF
PDF
相関と因果について考える:統計的因果推論、その(不)可能性の中心 PDF
PDF
PDF
PDF
PDF
Rにおける大規模データ解析(第10回TokyoWebMining) PDF
PDF
PDF
PPTX
PDF
2012-1110「マルチレベルモデルのはなし」(censored) PPTX
PDF
PDF
時系列解析の使い方 - TokyoWebMining #17 PPTX
【読書会資料】『StanとRでベイズ統計モデリング』Chapter12:時間や空間を扱うモデル PDF
PDF
Viewers also liked
PDF
PDF
PDF
PDF
状態空間モデルの考え方・使い方 - TokyoR #38 PDF
PPTX
PDF
PDF
関東CV勉強会 Kernel PCA (2011.2.19) PDF
[AWSマイスターシリーズ] AWS CLI / AWS Tools for Windows PowerShell PDF
healthplanetパッケージで体組成データを手に入れて健康な体も手に入れる Similar to RによるBox-Cox変換
PDF
PDF
PDF
PDF
DOCX
PPTX
PPTX
PDF
PDF
PPT
PDF
PDF
PDF
PDF
テキストマイニングで発掘!? 売上とユーザーレビューの相関分析 PDF
KEY
PPT
PDF
PDF
PDF
More from wada, kazumi
PPTX
PPTX
PPTX
PPTX
PPTX
PPTX
DOCX
DOCX
DOCX
DOCX
DOCX
PDF
DOCX
PPTX
PDF
PDF
DOCX
PPTX
PDF
PDF
RによるBox-Cox変換
- 1.
2009.12 作成
データを正規分布に近づける: Box-Cox 変換
Box-Cox 変換(Box-Cox transformation)とは、正規分布に従わないデータを正規分布に近
づける方法。
正の値をとる確率変数 X に対し、
変換パラメータλを用いて以下のように変換すると、
変換後のデータ X*は正規分布に従う。λ=-1 では逆数変換、λ=0 で対数変換、λ=0.5 で平
方根変換と同じものになる。
下の図は、Tweedie 分布及び対数正規分布に従う乱数データについて、Box-Cox 変換
(λ=0)を行い、もとのデータと変換後のデータをそれぞれヒストグラムにしたもの。
Tweedie分布 対数正規分布
0.6
0.6
0.5
0.5
0.4
0.4
0.3
0.3
0.2
0.2
0.1
0.1
0.0
0.0
0 1 2 3 4 5 0 2 4 6 8 10
Tweedie、変換後 対数正規分布、変換後
0.6
0.6
0.5
0.5
0.4
0.4
0.3
0.3
0.2
0.2
0.1
0.1
0.0
0.0
-3 -2 -1 0 1 2 3 -2 -1 0 1 2
- 2.
ヒストグラムよりもさらに正規性が目視でわかりやすいのでよく使用されるのが Q-Q プ
ロットで、データを昇順にソートし、カイ二乗分布を想定した理論値と実際の値を仮定し
てデータをプロットする。
データが正規分布に従っていれば、プロット点が原点を通る傾き 1 の直線上にのる。
Tweedie 分布データも、対数化すれば正規分布になる対数正規分布データとおなじくらい
きれいに直線上にのることが確認できる。
Tweedie分布 対数正規分布
20
6
15
4
10
2
5
0
0
-3 -2 -1 0 1 2 3 -3 -2 -1 0 1 2 3
norm quantiles norm quantiles
変換後 変換後
2
1
1
0
0
-1
-1
-2
-2
-3
-3 -2 -1 0 1 2 3 -3 -2 -1 0 1 2 3
norm quantiles norm quantiles
注意事項
Box-Cox 変換は単変量データに対する手法であり、もとのデータが他の変数と何らかの
関係性がある場合は、変換によってその関係が崩れることに注意が必要。また、0 や負の数
のデータがある場合は変換ができないため、全て正の数になるようデータを平行移動する
のが定石とされているが、この操作はどの程度動かすかによって結果が変わってしまうた
め、あまり薦められない。
- 3.
R プログラム
○ データ作成
rm(list=ls(all=TRUE)) # ワークスペースのクリア
setwd("d:/test/") # 必要に応じて作業ディレクトリを指定
# Tweedie 分布データ
library(tweedie) # Tweedie 分布乱数発生用
p <- 2.5 # べき乗のパラメータ
mu <- 1 # 平均値パラメータ
ph <- 1 # 分散パラメータ
Tdat<- rtweedie(100, power=p, mu=mu, phi=ph)
# 対数正規分布データ
Ndat<- exp(rnorm(100)) # デフォルトで平均 0 分散 1
○ λ(ラムダ)の推計
ライブラリ car を使用する。
library(car)
box.cox.powers(Tdat) # 最適なのは 0
box.cox.powers(Ndat) # 最適なのは 0
コンソール出力は以下のとおり。水色でマークしたのが推計結果だが、実際の変換は
通常きりのいい数字を使用する。この場合、両者ともラムダは 0 を使う。
>box.cox.powers(Tdat)# 最適なのは 0
Box-Cox Transformation to Normality
Est.PowerStd.Err. Wald(Power=0) Wald(Power=1)
0.0605 0.0834 0.7251 -11.2662
L.R. test, power = 0: 0.5275 df = 1 p = 0.4677
L.R. test, power = 1: 114.9119 df = 1 p = 0
>box.cox.powers(Ndat)
Box-Cox Transformation to Normality
Est.PowerStd.Err. Wald(Power=0) Wald(Power=1)
-0.0832 0.103 -0.8082 -10.5186
L.R. test, power = 0: 0.6629 df = 1 p = 0.4155
L.R. test, power = 1: 127.4005 df = 1 p = 0
- 4.
○ データ変換
パラメータ pに、推計したλの値を代入する。
Tdat2 <- box.cox(Tdat, p=0)
Ndat2 <- box.cox(Ndat, p=0)
○ ヒストグラム表示
library(MASS) # truehist 用
par(mfrow=c(2,2)) # グラフィック画面を 2×2 分割
truehist(Tdat, main="Tweedie 分布 変換前")
lines(density(Tdat), col="red", lwd=2) # 密度関数表示
truehist(Ndat, main="対数正規分布 変換前")
lines(density(Ndat), col="red", lwd=2) # 密度関数表示
truehist(Tdat2, main="Tweedie 分布 対数変換後")
lines(density(Tdat2), col="red", lwd=2)# 密度関数表示
truehist(Ndat2, main="対数正規分布 対数変換後")
lines(density(Ndat2), col="red", lwd=2)# 密度関数表示
○ Q-Q プロット表示
par(mfrow=c(2,2)) # グラフィック画面を 2×2 分割
qq.plot(Tdat, main="Tweedie 分布 変換前")
qq.plot(Ndat, main="対数正規分布 変換前")
qq.plot(Tdat2, main="Tweedie 分布 対数変換後")
qq.plot(Ndat2, main="対数正規分布 対数変換後")