理論関連事項

統計学の基本事項,確率分布の詳細,各種データ解析法の理論的背景について.

チェビシェフの不等式の概要

チェビシェフの不等式とは,確率変数X の平均値を μ,標準偏差を σ としたときに以下で与えられる不等式である.任意の確率分布において,ある値 (μ+kσ または μ-kσ) 以上または以下の確率がどれくらいかの大体の見当をつけるのに用いる.また,大数の法則の導入にも用いられる.

\begin{eqnarray*}P(|X-\mu|\geq k\sigma)\leq\frac{1}{k^2}\tag{1}\end{eqnarray*}

例えば,正規分布のように研究し尽くされた分布については以下のような塗りつぶされた範囲の面積 (=確率) を知ることは簡単である.以下は標準正規分布であり,μ+1.96σ 以上の曲線下範囲を塗りつぶしてある.正規分布においては μ±1.96σ の範囲は全面積の95%を占めるので,以下の塗りつぶされた面積は (100-95)/2=2.5 より2.5%である.

tbs_chebyshev_inequality_01.svg

以上のようによく知られた分布では標本がある値以上となる確率 (標本を抜き出したとき,その値がある値以上である確率) を簡単に求めることができるが,複雑な分布の場合そうはいかない.しかし,チェビシェフの不等式を用いればどのような確率分布においても標本の分布の情報を知ることができる.

最初に,上のチェビシェフの不等式は以下のように確率変数X が μ 以上の場合確率変数X が μ より小さい場合の2つに分けて表すことができる.

\begin{eqnarray*}P(X\geq \mu+k\sigma)\leq\frac{1}{k^2}\,\,\,\,\ (X\geq\mu)\tag{2}\end{eqnarray*}
\begin{eqnarray*}\\P(X\leq \mu-k\sigma)\leq\frac{1}{k^2}\,\,\,\,\ (X<\mu)\tag{3}\end{eqnarray*}

これらの式は以下のように解釈する.式2の確率変数X が μ 以上の場合であるときを例にすると,ある確率変数X から標本をひとつ抜き出したとき,それが μ+kσ 以上である確率は 1/k2 以下である.または,ある確率分布において μ+kσ 以上の面積は全体の 1/k2 以下であるとも解釈できる.

例えば以下のような標準正規分布においてμ-2σ (=0-2*1=-2) 以下となる面積 (=確率) を考える.

tbs_chebyshev_inequality_02.svg

この面積はチェビシェフの不等式を用いることで以下のように1/4,つまり全体の25%以下と計算される.実際,標準正規分布において μ±2σ は全体の95.4%の面積を占めるので,μ-2σ 以下の面積は (100-95.4)/2=2.3 より約2.3%と計算される.これはチェビシェフの不等式で求めた25%以下を確かに満たしている.

\begin{eqnarray*}P(X\leq \mu-2\sigma=-2)\leq\frac{1}{2^2}=\frac{1}{4}\tag{4}\end{eqnarray*}

チェビシェフの不等式の証明

チェビシェフの不等式の証明は以下のように行う.チェビシェフの不等式は以下で与えられる不等式である.ここで,k は任意の正の数.

\begin{eqnarray*}P(|X-\mu|\geq k\sigma)\leq\frac{1}{k^2}\tag{1}\end{eqnarray*}

最初に,分散の定義式を考える.分散は以下で与えられる値である.

\begin{eqnarray*}\sigma^2=\int_{-\infty}^{\infty}(x-\mu)^2f(x)\,dx\tag{5}\end{eqnarray*}

次に,この式5を以下のように変形させる.

\begin{eqnarray*}\sigma^2&=&\int_{-\infty}^{\infty}(x-\mu)^2f(x)\,dx\\&=&\int_{-\infty}^{\mu-k\sigma}(x-\mu)^2f(x)\,dx+\int_{\mu-k\sigma}^{\mu+k\sigma}(x-\mu)^2f(x)\,dx+\int_{\mu+k\sigma}^{\infty}(x-\mu)^2f(x)\,dx\tag{6}\end{eqnarray*}

ここで,(x-μ)2 は0以上であり,f(x) も確率であるため0以上であることを考慮すると,以上の式はさらに以下のように変形できる.

\begin{eqnarray*}\sigma^2&\geq& \int_{-\infty}^{\mu-k\sigma}(x-\mu)^2f(x)\,dx+\int_{\mu+k\sigma}^{\infty}(x-\mu)^2f(x)\,dx\tag{7}\end{eqnarray*}

g(x)=(x-μ)2 とおけば,その微分,g'(x)=2(x-μ) は x が μ 以上のとき正の値または0となり単調増加,x が μ より小さいとき負の値となり単調減少する.さらに,σ が0以上の値,k が任意の正の数であることを考慮すると,x が μ+kσ より大きいとき (x-μ)2>k2σ2 となり,また,x が μ-kσ より小さいとき (x-μ)2>k2σ2 となる.これらの関係を用いることで,上式はさらに以下のように変換できる.

\begin{eqnarray*}\sigma^2&\geq& \int_{-\infty}^{\mu-k\sigma}(x-\mu)^2f(x)\,dx+\int_{\mu+k\sigma}^{\infty}(x-\mu)^2f(x)\,dx\\ &\geq& k^2\sigma^2\int_{-\infty}^{\mu-k\sigma}f(x)\,dx+k^2\sigma^2\int_{\mu+k\sigma}^{\infty}f(x)\,dx\tag{8}\end{eqnarray*}

以上より,以下の式が導かれる.

\begin{eqnarray*}\int_{-\infty}^{\mu-k\sigma}f(x)\,dx+\int_{\mu+k\sigma}^{\infty}f(x)\,dx &\leq& \frac{1}{k^2}\tag{9}\end{eqnarray*}

ここで,f(x) は確率密度関数であるため,左辺第一項は μ-kσ 以下の確率,左辺第二項は μ+kσ 以上の確率そのものとなり,以上の式は以下のように書き換えることが出来る.

\begin{eqnarray*}P(X<\mu-k\sigma)+P(X>\mu+k\sigma) &\leq& \frac{1}{k^2}\tag{10}\end{eqnarray*}

最後に,絶対値記号を用いて上式を書き換えることで以下のチェビシェフの公式が導かれる.

\begin{eqnarray*}P(|X-\mu|\geq k\sigma)\leq\frac{1}{k^2}\tag{1}\end{eqnarray*}

図1を生成するためのRソースコード

#!/usr/bin/env Rscript

main=function()
{
	svg("tbs_chebyshev_inequality_01.svg",width=8,height=4)
	par(plt=c(0.2,0.9,0.2,0.9))
	x=seq(-4,4,0.1)
	plot(x,type="n",xaxs="i",yaxs="i",xlim=c(-4,4),ylim=c(0,0.4),bty="o",xaxt="n",xlab="",ylab="Probability density",las=1,family="Arial")
	lines(x,dnorm(x=x,mean=0,sd=1),lty=1,col="#2b4b65")
	dx=seq(1.96,4,length.out=11)
	polygon(c(1.96,dx,4),c(0,dnorm(dx),0),col="#2b4b65",border=NA)
	axis(side=1,tck=1.0,lty="dotted",lwd=0.5,at=-3:3,labels=expression(-3*sigma,-2*sigma,-sigma,0,sigma,2*sigma,3*sigma),family="Arial",font.axis=2)
	axis(side=2,tck=1.0,lty="dotted",lwd=0.5,labels=NA)
	dev.off()
}

main()

図2を生成するためのRソースコード

#!/usr/bin/env Rscript

main=function()
{
	svg("tbs_chebyshev_inequality_02.svg",width=8,height=4)
	par(plt=c(0.2,0.9,0.2,0.9))
	x=seq(-4,4,0.1)
	plot(x,type="n",xaxs="i",yaxs="i",xlim=c(-4,4),ylim=c(0,0.4),bty="o",xaxt="n",xlab="",ylab="Probability density",las=1,family="Arial")
	lines(x,dnorm(x=x,mean=0,sd=1),lty=1,col="#2b4b65")
	dx=seq(-4,-2,length.out=11)
	polygon(c(-4,dx,-2),c(0,dnorm(dx),0),col="#2b4b65",border=NA)
	axis(side=1,tck=1.0,lty="dotted",lwd=0.5,at=-3:3,labels=expression(-3*sigma,-2*sigma,-sigma,0,sigma,2*sigma,3*sigma),family="Arial",font.axis=2)
	axis(side=2,tck=1.0,lty="dotted",lwd=0.5,labels=NA)
	dev.off()
}

main()
Hatena Google+