はじめに
みなさん、Excelの統計関数をMATLABで使いたいと思ったことはありませんか?
Excelにはt検定などでよく使うTDIST関数やTINV関数がありますが、MATLABには同じ名前の関数はありません。そこで今回は、ExcelのTDIST/TINVをMATLABで再現する方法について紹介します。
関数紹介
TDIST関数
ExcelのTDIST関数とは?
ExcelのTDIST関数についておさらいです。
スチューデントの t 分布のパーセンテージ (確率) を返します。数値 (x) は t の計算値で、この t に対してパーセンテージが計算されます。t 分布は、比較的少数の標本から成るデータを対象に仮説検定を行うときに使われます。この関数は、t 分布表の代わりに使用することができます。
TDIST(x,自由度,尾部)
- x … t 分布を計算する数値を指定します。
- 自由度 … 分布の自由度を整数で指定します。
- 尾部 … 片側分布を計算するか両側分布を計算するか、数値で指定します。
- 1 を指定すると片側分布の値が計算され、2 を指定すると両側分布の値が計算されます。
TDIST(http://office.microsoft.com/ja-jp/excel-help/HP005209312.aspx) より
MATLABでの実装
MATLABにはExcelのTDISTそのものはありませんが、tcdf(t分布の累積分布関数)が用意されています。
ExcelのTDISTはこのtcdfを使って下記のように再現できます。
function [ dst ] = excelTDIST( x, degrees_freedom, tails ) dst = (1 - tcdf(x, degrees_freedom)) * tails; return
TINV関数
ExcelのTINV関数とは?
ExcelのTINV関数についておさらいです。
スチューデントの t 分布の t 値を、確率の関数と自由度で返します。
TINV(確率,自由度)
- 確率 … スチューデントの両側 t 分布に従う確率を指定します。
- 自由度 … 分布の自由度を指定します。
TINV(http://office.microsoft.com/ja-jp/excel-help/HP005209317.aspx) より引用
MATLABでの実装
MATLABではtinv(t分布の累積分布関数の逆関数)が使えます。TINVは両側なので、確率を2で割るか、1から半分を引くことで再現します。
どちらも意味は同じです。
function [ t ] = excelTINV( probability, degrees_freedom) t = - tinv( probability / 2, degrees_freedom); return
または
function [ t ] = excelTINV( probability, degrees_freedom) t = tinv( 1 - probability / 2, degrees_freedom); return
- tinvは、t分布の累積分布関数の逆関数(inverse function)です。
F分布の累積分布関数
ついでにF分布のCDF(累積分布関数)もご紹介。
MATLABでは cdf(‘F’,X,A,B) として計算できますが、手動で書くなら下記の通りです。
function [ cdf ] = fcdf( x, d1, d2 ) cdf = betacdf( d1*x/(d1*x+d2), d1/2, d2/2 ); return
おわりに
今回はExcelのTDISTとTINVをMATLABで再現する方法を紹介しました。
- TDISTは
tcdf
を使って片側/両側を自分で調整 - TINVは
tinv
の引数の調整で両側臨界値を再現
MATLABでExcelの統計関数を使いたい場合の参考にしてみてください。
関連記事
MATLABを用いた相関係数のt検定 « なたで日記
コメント