MATLABでExcelのTDISTとTINVを使う

アルゴリズム
スポンサーリンク

はじめに

みなさん、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で再現する方法を紹介しました。

  • TDISTtcdfを使って片側/両側を自分で調整
  • TINVtinvの引数の調整で両側臨界値を再現

MATLABでExcelの統計関数を使いたい場合の参考にしてみてください。

関連記事
MATLABを用いた相関係数のt検定 « なたで日記

コメント

タイトルとURLをコピーしました