Technically Impossible

Lets look at the weak link in your statement. Anything "Technically Impossible" basically means we haven't figured out how yet.

Rの初歩 - t検定

平均、分散が不明な母集団の平均を推定する。とはいえ十分大きなサイズの標本を取得することができない。言い換えると、少数のサンプルから得られる情報に基づいて、規模や回数が増加した場合の状況を予測する、そのような場合に用いるのがt検定だ。例えば、次のような場面で活用することができる。

  • 過去に経験した障害の復旧時間から、必要と思われる復旧時間を求める。
  • ある部門を構成する人員の生産性から、全社員の生産性を求める。
  • 少数の初回ロット品の状態から、将来を含む出荷品全体の状態を予測する。

与えられたデータに基づく点推定ではなく、あくまでも統計的に区間推定で必要な情報を推定する。与えられたデータが統計的に信頼できるサイズではないとなれば、あくまでもデータが正規分布するという前提で、t検定を用いてみると良い。
まず演習問題をこなした上で、t分布、t検定に触れる。

演習問題

github.com
与えられた資料は、職員が製品を組み立てるまでの時間の一覧だ。次の問いに対応せよ。

1. Get Interval (Low and High value) at 95% confidence level for mean ASM hours
2. Estimate the unit price of this toy for sales planning
Asuumptions:
hourly rate 15 Yen/min
material costs 500 Yen per unit
Pack&ship 100 Yen per unit
SG and A 300 Yen per unit
D% allowance 30% Maximum from break even

SG&AとはSelling, General, and Administrative costsで、諸々の雑費を表している。

まず与えられたExcelを読み込む。ASM hoursだけをベクトルxに代入している。

library(readxl)
data <- read_excel("data.xlsx")
x = data$`ASM hours (Min)`

95%の信頼区間での最低、最大、平均ASM時間を求めるに際し、t検定を用いずに信頼区間を求めてみる。

標本平均±1.96×標本標準偏差÷√標本数

> mean(x)
> sd(x)
> min = mean(x) - 1.96 * sd(x) / sqrt(length(x))
> max = mean(x) + 1.96 * sd(x) / sqrt(length(x))
mean 19.9166667
sd 5.7339839
min 18.0435653
max 21.7897681

xは平均19.92、標準偏差5.73の正規分布で、95%信頼区間は18.04~21.79となる。

次にt検定で値を求めてみる。t.test関数を利用する。
表示結果の意味、関数のリファレンスを、エントリ末尾にまとめている。

> ret = t.test(x, conf.level = 0.95)
> print(ret)

	One Sample t-test

data:  x
t = 20.841, df = 35, p-value < 2.2e-16
alternative hypothesis: true mean is not equal to 0
95 percent confidence interval:
 17.97657 21.85677
sample estimates:
mean of x 
 19.91667

値が若干異なっているのが分かる。
ちなみにt.testの返り値はリストで返される。リストの中身などを調べてみる。

> mode(ret)
[1] "list"
> summary(ret)
            Length Class  Mode     
statistic   1      -none- numeric  
parameter   1      -none- numeric  
p.value     1      -none- numeric  
conf.int    2      -none- numeric  
estimate    1      -none- numeric  
null.value  1      -none- numeric  
alternative 1      -none- character
method      1      -none- character
data.name   1      -none- character

信頼区間の最小値、最大値はconf.intに、平均値はestimateに格納されている。conf.intは同じくリストであり、conf.intにインデックスを指定することで最小値、最大値を参照できる。
estimateに格納されている平均値はret[5]、ret$estimate、ret[5]$estimate、いずれの呼び出し方でも参照できる。

> print(ret[4])
$conf.int
[1] 17.97657 21.85677
attr(,"conf.level")
[1] 0.95
> 
> ret[4]$conf.int[1]
[1] 17.97657
> ret[4]$conf.int[2]
[1] 21.85677
> 
> print(ret[5])
$estimate
mean of x 
 19.91667 
> 
> ret[5]$estimate
mean of x 
 19.91667 

必要な値を取得できたので、売価を計算してみる。
計算ロジックを関数にして、最小、平均、最大組み立て時間毎の売価を求める。

> calc = function(val){
+   hrate = 15
+   material = 500
+   shipping = 100
+   sga = 300
+   
+   return(hrate * val + material + shipping + sga)
+ }
> 
> minprice = calc(ret[4]$conf.int[1])
> avgprice = calc(ret[5]$estimate)
> maxprice = calc(ret[4]$conf.int[2])
min price 1169.6484845
avg price 1198.75
max price 1227.8515155

損益分岐点から最大30%の割引が許容されている。生産性最大(組み立て時間最小)に基づいた価格設定だと、生産性が悪化した場合に損失が生じるため、割引設定にはリスクがある。生産性最小(組み立て時間最大)に基づいた価格設定だと、生産性が良化した場合には利益が生じるため、割引余地がある。
ここでは売価から30%割引したときに、平均組み立て時間に基づいた価格になるようにする。

> avgprice / 0.7
mean of x 
   1712.5 

計算では求める価格は1712.5円だが、実際には1700円、1715円など、切りの良い数字に仕立てるだろう。

t分布、t検定、t.testの出力結果

t分布

中心極限定理 標本数が大きいほど、標本平均の分布は正規分布に近づく。

標本数が統計的に信頼できるサイズでなければ、標本平均は母集団の平均からのズレが大きいため、真の平均(母集団の平均)を求めるのが難しい。
t分布とは統計量tの分布だ。標本数の少なさによるバラツキを考慮した「正規分布のような」分布で、統計量tが大きくなるほど、t分布は正規分布に近づく。

t検定

t検定とは、t分布を用いて、母平均に対する検定を行う。言い換えると、帰無仮説「母平均は**である」を検定することになる。このとき対立仮設は「母平均は**ではない」となる。検定結果により求められるP値が有意水準未満であれば帰無仮説は棄却され、対立仮説が採用される。
今回の演習問題の場合でいうと、次のようになる。

有意水準 0.05 = 1 - 95%
帰無仮説 母平均は0である。
対立仮説 母平均は0ではない。

t.testの出力結果。

今回の演習問題の結果を読み解くと、次のようになる。

data: x 標本 x
t = 20.841 統計量t 20.841
df = 35 自由度 (Degree of Freedom) 35
p-value < 2.2e-16 P値 2.2 * (1/10)^16
alternative hypothesis: true mean is not equal to 0 対立仮説 母集団の平均は0ではない。
95 percent confidence interval:
17.97657 21.85677
95%信頼区間 17.97657 21.85677
sample estimates:
mean of x
19.91667
標本平均  19.91667

P値が優位水準未満なので、帰無仮説が棄却され、対立仮説「母平均は0ではない」が採用されている。
そもそも論だが、信頼区間に0が含まれていないため、帰無仮説は成り立ちようがない。

リファレンス

www.rdocumentation.org