両方とも2010から追加された関数なのですが、
PERCENTILE.INCは2007まで搭載されていたPERCENTILE関数と中身は同じようです。(2010以降も互換verは搭載されてはいますが)
つまり新しく搭載された関数はPERCENTILE.EXCだけということになります。
Officeヘルプを見てみると、率の指定できる範囲が異なるようです
PERCENTILE.INC : 0~1 PERCENTILE.INC Officeヘルプ
PERCENTILE.EXC : 0~1(0及び1を除く) PERCENTILE.EXC Officeヘルプ
じゃあどっち使えばいいのって話なんですが
これがまたややこしい話でパーセンタイルの定義の話になってくるようです。
しかもどうにもパーセンタイルには定義というものは無いようです。
Percentile Wikipedia
“There is no standard definition of percentile”
詳しいことが書いてある日本語ページが全然ない上に話が非常にややこしいのですが
Excelで度数分布表から99パーセンタイル値を求める方法メモ
Excel 2010 のPercentile.EXC関数について
この2つのページを参考にしてみました。
上のページには
“最初は初歩的な99パーセンタイルを目指したいと思います。
それは、「データ全体の99%がこの値以下に収まるという値を、度数分布表に書かれている値から見つけてそれを99パーセンタイルとする」という定義です。補完しません。
つまり、950人(99%は940.5人目)が受けた、10点満点のテストで、99パーセンタイルを「941人目(小数点以下四捨五入)」とする方式 (nearest rank法もどき)です。940人目と941人目の値が違って940.5人目がきわどい時であっても、値の間は補間せず、とりあえず大きい方を採用する、 というわけです。
7点以下の人が909人、8点以下の人が971人、9点以下の人が993人いるとすると、この場合の99パーセンタイルは、941人目の8点となります。”
“次に、より一般的な(普通の)パーセンタイルの計算方法を使ってみます(詳細は前述のApache Commons MathのPercentileの定義参照)。
これには重要な点が2つあります。
まず一つ目は、パーセントの使い方です。100個データがある時、なんとなく0%は1番目で、100%は100番目だと思いがちですが、これは勘違いです(これを採用していたのがExcel 2007互換のPERCENTILE関数と、それと同じ動作をするPERCENTILE.INC)。
これは、pパーセントの指し示す位置(pos)を1始まりの「1+(p/100)*(データの個数)」と計算しているのですが、こうではなく、普通は0始まりの「0+(p/100)*(データの個数+1)」にするのです。つまり、0%があたかも0番目に位置し、100%があたかも100番目にあるかのような位置決めを行うのです。したがって、例えば1000件のデータがある時の90%が、900人目を指す、というわけではなく、少しずれることになるのです。
このようにして計算した%の指し示す位置(pos)が1未満なら「1番目」、データの個数以上なら「(データの個数)番目」の値がpパーセンタイルの値となります。そして、それ以外の大部分については、次のように線形補完しつつ計算します。
位置(pos)が決まったら、その前後の値を線形補完します。
たとえば、posが7.2なら、7番目の値(v[7])と8番目の値(v[8])を持ってきて(1始めの配列表記であることに注意)、v[7]とv[8]の値を「(1-0.2)*v[7]+0.2*v[8]」次のように内分します(もしかすると、「v[7]+(v[8]-v[7])*0.2」のほうが分かりやすい人もいるかも知れません)。
つまり一般的に書けば、posを整数部分iと、小数部分fに分けて、パーセンタイルを「(1-f)*v[i]+f*(v[i+1]-v[i])」として計算するわけです。
※考え方のポイント:v[i]とv[i+1]が等しい場合は、そのままv[i](v[i+1]でも同じ)の値がパーセンタイルの結果になり、v[i]とv[i+1]の値が違う時のみ、線形補間の効果で中途半端な値になる。
さて、先ほどの方法でExcelを使って計算したパーセンタイルは、だいぶ近いことをしています。特に、度数分布表から特定の順位kの値(v[k])を取り出す方法はそのまま利用できそうです。”
とあります。
自分がいつも読んでいるアットザベンチの統計の本には1つ目の“初歩的な”と書いてある方法しか載ってなく、そっちの方しか知りませんでした。
しかし、PERCENTILE.EXCでは0%と100%の計算方法が違うようで、そのため0と1を除く範囲でしか使えないようです。
ここまで書いておきながら結局のところ具体的にどう使い分ければいいのか分かりません‥‥
流れ的にはPERCENTILE.EXCを使った方が良いかな?位の感覚ですが‥‥
ちなみに四分位を計算するだけならQUARTILE.EXC関数とQUARTILE.INC関数が搭載されています。
25、50、75パーセンタイルを計算するだけの関数ですが。
違いはパーセンタイルの2つの関数と同じようです。
加えて、QUARTILE.INCでは戻り値に0と4を指定可能でそれぞれ最小値を最大値を返すことができますが、QUARTILE.EXCでは戻り値に0および4を指定するとエラー値 #NUM!が返されてしまいます。