The New Economics: for Industry, government, education -2nd ed. の第9章The Funnelの内容をさらします.
いつものように,目的と,実験方法を引用します.
The New Economics: for Industry, government, education -2nd ed. Ch.9
<引用>
</引用>
つまり,この実験では,バラツキがある場合に,固定した目標や目標を追いかけた方がいいのかどうかを確かめます.
<引用>
</引用>
上では,漏斗と玉(マーブルとか・ビーズとか)を使用して実験していますが,ここではRというソフトを使用して,シミュレーションして見ます.使用したプログラムは,後の方に記載しておきます.
ルール1
Fig. 3-1-1 Rule 1
Fig. 3-1-2 Rule 1 close
座標を拡大したもの
Fig. 3-1-3 Rule 1 Control Chart Y axis
ルール2
Fig. 3-2-1 Rule 2
Fig. 3-2-2 Rule 2 close
座標を拡大したもの
Fig. 3-2-3 Rule 2 Control Chart Y axis
ルール1よりもコントロール・リミットが広がっています.
(こういう風に目標を補正することを「ハンティング」というそうです.)
ルール3
Fig. 3-3-1 Rule 3 first
Fig. 3-3-2 Rule 3 second
Fig. 3-3-3 Rule 3 Control Chart Y axis
固定値を目標として補正しているので,波打っています.
ルール4
Fig. 3-4-1 Rule 4 first
Fig. 3-4-2 Rule 4 second
Fig. 3-4-3 Rule 4 Control Chart Y axis
激しいランダムウォークです.
つまり,下記のような結論になります.
結果管理や目標管理という方法論自体,上記のことを考えていないことが多いように思えます.また,「結果のバラツキを減らす方法」が出来なかったり(例えば,売上予測の精度を向上するためには,GDP(=需要予測)の予測精度の向上が必要だと思います.),履歴効果(教育・訓練等)を無視し,投資ではなくコストとして処理するため,大きな目標(長期的目標)を達成できない事が多々あるような気がします.
下記に,(汚いですが)プログラムをさらします.
1.目的
いつものように,目的と,実験方法を引用します.
The New Economics: for Industry, government, education -2nd ed. Ch.9
<引用>
この章の目的:この章の目的は,結果管理【Management By Results】(Ch.2)での損失の論理を示すことにある.
漏斗があれば誰でもこの実験を行うことが出来る.
この実験に必要な材料は,大体家庭のキッチンにあるものである.
【中略】
</引用>
つまり,この実験では,バラツキがある場合に,固定した目標や目標を追いかけた方がいいのかどうかを確かめます.
2.実験方法
<引用>
ルール1
漏斗を目標に向ける.そのまま目標に対し固定する。
玉を50回ほど漏斗を通して落下させる.おのおのの玉が落ちたところにマークをつける.
ルール1の結果には,がっかりする.我々の期待より大きなラフな円を描いている.
【中略】
【訳注:ルール1は,つまり,漏斗を固定して何もしないということです.】
ルール2
玉を落とすたびに,最後の落下点に対し埋め合わせるように,漏斗を移動させる.
(例:落下点が目標に対し北東に30cmずれて落ちた場合,漏斗を南西に30cm移動する.)
結果には,がっかりする.ルール1より悪い.
【中略】
【訳注:ルール2は,前の目標位置-前の結果位置=次の漏斗の位置です.】
ルール3
落胆,我々は新しいルールに関し考察した.玉を落とすたびに補正するが,目標を
補正に使う.最後の落下点を補正するために、目標の反対側に漏斗を移動する.
ルール3のやり方は,以下の通り:
1.漏斗を目標の上にセットする.
2.最後の目標に対する落下点を補正するように,漏斗を動かす.
(Dr. Gipsie Ranneyの貢献を得た)
この結果は,今までよりひどい.
【中略】
【訳注:ルール3は,固定目標位置-前の結果位置=次の漏斗の位置です.】
ルール4
(最初の落下後),最後の落下点に対し,正の位置に漏斗をセットする.
(i.e., 最後の玉が落ちた場所がそこである.)
ますます落胆.結局天の川のような軌跡だ.
【中略】
【訳注:ルール4は,前の結果位置=次の漏斗の位置です.】
ルール4は,1924年コロラド大学のWilliam Pietenpol教授によって下記のように
規定された.その時,彼の学生のひとりとして,私は数学と物理学修士【履修に】
努力していた.
酔っ払いの男;どちらが北か東か南か西かわからない;家に帰りたがっていた.
彼は数歩歩く,よろめく.彼が正しいと思っている方へ,どちらが北か東か南か西かわからない;彼は数歩歩く,よろめく.そしてこの調子で彼はハンディキャップを背負ったまま行動する.彼の試みが増えるとともに,家への距離を縮めるチャンスは少なくなる.
この結論は,1898年Lord Rayleighによって予測された.
</引用>
上では,漏斗と玉(マーブルとか・ビーズとか)を使用して実験していますが,ここではRというソフトを使用して,シミュレーションして見ます.使用したプログラムは,後の方に記載しておきます.
3.実験結果
ルール1
Fig. 3-1-1 Rule 1
Fig. 3-1-2 Rule 1 close
座標を拡大したもの
Fig. 3-1-3 Rule 1 Control Chart Y axis
ルール2
Fig. 3-2-1 Rule 2
Fig. 3-2-2 Rule 2 close
座標を拡大したもの
Fig. 3-2-3 Rule 2 Control Chart Y axis
ルール1よりもコントロール・リミットが広がっています.
(こういう風に目標を補正することを「ハンティング」というそうです.)
ルール3
Fig. 3-3-1 Rule 3 first
Fig. 3-3-2 Rule 3 second
Fig. 3-3-3 Rule 3 Control Chart Y axis
固定値を目標として補正しているので,波打っています.
ルール4
Fig. 3-4-1 Rule 4 first
Fig. 3-4-2 Rule 4 second
Fig. 3-4-3 Rule 4 Control Chart Y axis
激しいランダムウォークです.
4.考察・結論
- ルール2:バラツキがある(目標に対してバラツキが大きい場合)目標を単純に補正した場合は,何もしない場合より大きくなる.(ハンティング:デミングさんは「干渉」と呼んでいます.)
- ルール3:目標を1つに固定して(幅を持たせず),補正すると,波打つ.
- ルール4:前の結果が積み重なる(履歴効果等)場合,ランダムウォークになる.
つまり,下記のような結論になります.
- 目標を立てる場合は,結果のバラツキを小さくする方法をまず実行し,バラツキを押さえ,バラツキの幅より大きな目標の幅を取るか,補正値を工夫する.
- むやみやたらに目標値を固定しない.その時の状況を読み取り,目標の幅を考える.
- 大きな目標を達成するためには,前の結果がうまく積み重なるように考える.もし,その目標が環境悪化等の負の結果の減少である場合,積み重ねが減少するように考える.
結果管理や目標管理という方法論自体,上記のことを考えていないことが多いように思えます.また,「結果のバラツキを減らす方法」が出来なかったり(例えば,売上予測の精度を向上するためには,GDP(=需要予測)の予測精度の向上が必要だと思います.),履歴効果(教育・訓練等)を無視し,投資ではなくコストとして処理するため,大きな目標(長期的目標)を達成できない事が多々あるような気がします.
5.参考文献
5-1.参考文献
- Dening, W. Edwards, The New Economics: for Industry, government, education -2nd ed., 1994, ISBN:0-262-54116-5
- R Development Core Team, R: A language and environment for statistical computing.(Ver. 2.1.1), 2005, ISBN:3-900051-07-0
- 船尾暢男, The R Tips データ解析環境Rの基本技・グラフィック活用集, 2005, ISBN:4-86167-039-X
- 田口玄一 他, 製造段階の品質工学, 1989, ISBN:4-542-51102-2
- 宮川雅巳, 品質を獲得する技術 タグチメソッドがもたらしたもの, 2000, ISBN:4-8171-0399-6
5-2.使用プログラム
下記に,(汚いですが)プログラムをさらします.
# #Funnel demonstrates(experiments) program # #r :漏斗の口の大きさ funnel channel width #j :玉を落とす回数 Drop times of beads #xlim :描画エリアのX軸の大きさ(中心を0としているので # マイナス~プラスの値が必要,例:xlim=c(-10,10) # X-axis width of plot area. X-axis Center is 0. # Require to set number from minus to plus. # e.g. xlim=c(-10,10) # #ylim :描画エリアのy軸の大きさ(中心を0としているので # マイナス~プラスの値が必要,例:ylim=c(-10,10) # Y-axis width of plot area. Y-axis Center is 0. # Require to set number from minus to plus. # e.g. ylim=c(-10,10) # funnel<-function(x,y,r){
funneldata<-rep(0,2)
rud<-runif(1,min=0,max=r)
sita<-runif(1,min=0,max=pi*2)
funneldata[1]<-(rud*cos(sita))+x
funneldata[2]<-(rud*sin(sita))+y
return(funneldata) } funnelexp1<-function(r=1,j=100,xlim=c(-10,10),ylim=c(-10,10)){
funneldata<-matrix(1:(j*2),ncol=2)
title= for(i in 1:j){ funneldata[i,]<-funnel(x=0,y=0,r)
} par(ask=TRUE) plot(x=funneldata[,1],y=funneldata[,2],xlim,ylim,type="p", main="Funnel demonstrate with Rule.1",xlab="",ylab="") qcc(funneldata[,1],type="xbar.one", title="Funnel demonstrate with Rule.1 x axis") qcc(funneldata[,2],type="xbar.one", title="Funnel demonstrate with Rule.1 y axis") } funnelexp2<-function(r=1,j=100,xlim=c(-10,10),ylim=c(-10,10)){
x<-rep(0,(j+1))
y<-rep(0,(j+1))
i<-0
funneldata<-matrix(1:((j+1)*2),ncol=2)
funneldata[1,]<-funnel(x=0,y=0,r)
for(i in 2:(j+1)){ x[i]<-x[(i-1)]-funneldata[(i-1),1]
y[i]<-y[(i-1)]-funneldata[(i-1),2]
funneldata[i,]<-funnel(x=x[i],y=y[i],r)
} par(ask=TRUE) plot(x=funneldata[1:j,1],y=funneldata[1:j,2],xlim,ylim,type="p", main="Funnel demonstrate with Rule.2",xlab="",ylab="") qcc(funneldata[1:j,1],type="xbar.one", title="Funnel demonstrate with Rule.2 x axis") qcc(funneldata[1:j,2],type="xbar.one", title="Funnel demonstrate with Rule.2 y axis") } funnelexp3<-function(r=1,j=100,xlim=c(-10,10),ylim=c(-10,10)){
funneldata<-matrix(1:(j*2),ncol=2)
funneldata[1,]<-funnel(x=0,y=0,r)
for(i in 2:(j)){ funneldata[i,]<-funnel(x=0-funneldata[(i-1),1],
y=0-funneldata[(i-1),2],r) } par(ask=TRUE) plot(x=funneldata[,1],y=funneldata[,2],xlim,ylim,type="p", main="Funnel demonstrate with Rule.3",xlab="",ylab="") qcc(funneldata[,1],type="xbar.one", title="Funnel demonstrate with Rule.3 x axis") qcc(funneldata[,2],type="xbar.one", title="Funnel demonstrate with Rule.3 y axis") } funnelexp4<-function(r=1,j=100,xlim=c(-10,10),ylim=c(-10,10)){
funneldata<-matrix(1:(j*2),ncol=2)
funneldata[1,]<-funnel(x=0,y=0,r)
for(i in 2:j){ funneldata[i,]<-funnel(x=funneldata[(i-1),1],
y=funneldata[(i-1),2],r) } par(ask=TRUE) plot(x=funneldata[,1],y=funneldata[,2],xlim,ylim,type="p", main="Funnel demonstrate with Rule.4",xlab="",ylab="") qcc(funneldata[,1],type="xbar.one", title="Funnel demonstrate with Rule.4 x axis") qcc(funneldata[,2],type="xbar.one", title="Funnel demonstrate with Rule.4 y axis") } funnelexp1() funnelexp2() funnelexp3() funnelexp4()