2017年2月26日日曜日

Rで計算する、タグチメゾット(品質工学)を使ったパラメータ設計 に関するメモ② (Design of experiments & Taguchi method)

前回は、静特性のパラメータ設計についてまとめました。

■動特性のパラメータ設計について

今回は、動特性のパラメータ設計について学びます。

入力の水準に応じて、結果が変わる特性を動特性と呼びます。
動特性を行う際の直交表は、内側配置に制御因子を、外側配置に信号因子を用いることが多いようです。また、誤差因子と信号因子を組み合わせた場合もあるようです。

動特性の場合も、静特性の場合の様に、いくつかに大きく区分できます。
ゼロ点比例式、基準点比例式、一次式、などに別れるようです。
以下では、一次式の事例をあげていますが、本質的にどの様に誤差計算を実施しているかが理解できれば、様々なモデルに応用できると思います。

では、動特性の場合の感度とSN比について確認していきたいと思います。

外側配置の信号因子M1,・・・,Mnがで構成されている場合に、その解きの第i番目の制御因子の組み合わせに対する出力をyi1,yi2,・・・,yinとします。

その際に、第i番目の制御因子の水準組み合わせにおいて、応答yと因子Mの間における、以下の関係について考えます。


上記の式から、傾きであるβ1iが大きいほどその出力は敏感であると考えられます。一方で、データは上記の直線の周辺にバラつきます。そのバラつきをあらわすσ_i^2については、小さい方が出力が敏感であることになります。

これらの概念を組み合わせすると、出力の鋭敏さの測度として、以下を用いるとよいことが考えられます。


上記の推定について考えます。

σ_i^2は、第i水準組み合わせでの残差分散V_eiで推定ができます。

では、β_1i^2を推定について考えます。
こちらは、最小二乗法で求めて終わりかと思いきや、βを二乗したものとの不偏性の観点から、以下で推定します。


以上から、鋭敏さの測度の考え方とあわせて、下記でSN比を定義します。


また、感度としては、以下を用いることができます。


S_riは下記で求めることができます。


上記の流れの式は、線形式や入力の二乗和のrなどを用いる式の表現とは異なりますが、計算結果は一致しますのでご安心を。(※モデルが一次モデルなのか、比例モデルなのかは注意してください)

再びですが、計算方法よりも、品質工学の場合は、式が意味するものをしっかり把握しておくのが、計算ミスをなくすのにベターだと思います。

■実際のデータで計算

では、今回も実際のデータで計算したいと思います。

以下のような直交表を考えます。




12345678910
M2020404060608080100100
ABCDFGHIJ
1L1L1L1L1L1L1L1L1L119.92039.940.160.159.98080.2100100.5
2L1L1L1L1L1L2L2L2L211.911.82423.735.636.147.747.959.960
3L1L1L2L2L2L1L1L1L227.92855.655.984.183.9112.5111.9140.6140.7
4L1L2L1L2L2L1L2L2L13.947.981211.915.915.82020
5L1L2L2L1L2L2L1L2L119.920404059.360.379.780.1100.2100.1
6L1L2L2L2L1L2L2L1L211.9122423.936.135.84847.959.759.8
7L2L1L2L2L1L1L2L2L128.127.959.956.58483.5112.4112.6140.2139.2
8L2L1L2L1L2L2L2L1L12827.8565684.183.8111.5111.8140.2140
9L2L1L1L2L2L2L1L2L22827.956.155.984.184111.7111.8139.6140.1
10L2L2L2L1L1L1L1L2L22827.956.155.883.583.9112.2112140.2139.6
11L2L2L1L2L1L2L1L1L12019.940.139.86059.879.680.3100.399.9
12L2L2L1L1L2L1L2L1L2121223.923.93635.847.647.860.559.6

制御因子がA~Iで、入力因子として20~100を考えます。今回は、誤差因子がありません。
(誤差因子のない例題はあまり品質工学としては良くない気がします・・・・)
また、各入力因子に対して、2つのデータが取得されています。

上記のように一次式のモデルを考えますが、品質工学ではなるべく避けるべきモデルと言われることが多い様です。(なるべく、エネルギー保存則が成り立つモデルで考えるべき。)

なにはともあれ、Rで解いていきたいと思います。

前回と同様に、Rで処理しやすいように、以下のようにcsvファイルを作成します。

Output.csv

XY1Y2Y3Y4Y5Y6Y7Y8Y9Y10Y11Y12
2019.911.927.93.919.911.928.12828282012
202011.8284201227.927.827.927.919.912.9
4039.92455.67.9402455.95656.156.140.123.9
4040.123.755.984023.956.55655.955.839.823.9
6060.135.684.11259.336.18484.184.183.56036
6059.936.183.911.960.335.883.583.88483.959.835.8
808047.7112.515.979.748112.4111.5111.7112.279.647.6
8080.247.9111.915.880.147.9112.6111.8111.811280.347.8
10010059.9140.620100.259.7140.2140.2139.6140.2100.360.5
100100.560140.720100.159.8140140140.1139.699.959.6

Latin_Table.csv

ABCDFGHIJ
L1L1L1L1L1L1L1L1L1
L1L1L1L1L1L2L2L2L2
L1L1L2L2L2L1L1L1L2
L1L2L1L2L2L1L2L2L1
L1L2L2L1L2L2L1L2L1
L1L2L2L2L1L2L2L1L2
L2L1L2L2L1L1L2L2L1
L2L1L2L1L2L2L2L1L1
L2L1L1L2L2L2L1L2L2
L2L2L2L1L1L1L1L2L2
L2L2L1L2L1L2L1L1L1
L2L2L1L1L2L1L2L1L2

※Eは誤差と勘違いされるため、あえて抜かしています。

■Rのプログラム

下記が実際のRのコードです。


#作業ディレクトリの設定
setwd("作業ディレクトリを設定")

#データの読み出し
LT<-read.table("Latin_Table.csv",header = TRUE,sep = ",")
str(LT)#読み出しデータ構造の確認
summary(LT)

Output<-read.table("Output.csv",header = TRUE,sep = ",")
str(Output)#読み出しデータ構造の確認
summary(Output)

#線形回帰
colname <-colnames(Output)#headerの名前を抽出
beta <- c(NULL)
y_est <- c(NULL)
for(i in 1:nrow(LT)){
  fm <- paste(colname[1+i],"~",colname[1])#各formulaを文字列から作成
  Output.lm <- lm(fm,data=Output)#各モデルの線形回帰を実施
  beta <- c(beta,Output.lm$coefficients[2])#傾きを抽出しベクトルに格納
  y_est <-cbind(y_est,Output.lm$fitted.values)#推定値をデータフレームに格納
}

#S_riの計算
Mbar<-apply(Output,2,mean)
SUM_Sm <- (Output[,1] - Mbar[1])
SUM_Sm <- SUM_Sm*SUM_Sm
SUM_Sm <- sum(SUM_Sm)/2
S_ri <- beta*beta*SUM_Sm

#V_eiの計算
Output_Y <- Output[,colnames(Output) != colname[1]]#入力因子を削除したデータフレームを用意
S_ei <- y_est - Output_Y
S_ei <- S_ei*S_ei
S_ei <- apply(S_ei,2,sum)
V_ei <- S_ei/8

#感度の計算
Sens <- (S_ri - V_ei)/SUM_Sm
Sens <- 10*log10(Sens)
Sens

#SN比の計算
SN <- (S_ri - V_ei)/SUM_Sm/V_ei
SN <- 10*log10(SN)
SN

#感度の分散分析
Sens_Bunsan <- cbind(LT,Sens)
Sens.lm <- lm(Sens~A+B+C+D+F+G+H+I+J,data = Sens_Bunsan)
anova(Sens.lm)

#感度の要因効果図の作成
par(mfrow=c(1,ncol(LT)))
sens_max <- max(Sens)
sens_min <- -5
fnames<-colnames(Sens_Bunsan)

for(i in 1:ncol(LT)){
  fc <- factor(Sens_Bunsan[,i])
  x_tmp <- 1:length(levels(fc))
  y_tmp <- tapply(Sens_Bunsan$Sens,fc,mean)
  plot(x_tmp,y_tmp,type="b",pch=1,xaxp=c(1,length(x_tmp),1),
       ylim=c(sens_min,sens_max),xlab=as.character(fnames[i]),
       ylab="Sensitivity[dB]",col="red")
}

#SN比の分散分析
SN_Bunsan <- cbind(LT,SN)
SN.lm <- lm(SN~A+B+C+D+F+G+H+I+J,data = SN_Bunsan)
anova(SN.lm)

#SN比の要因効果図の作成
tmppar<-par(no.readonly=TRUE)
par(mfrow=c(1,ncol(LT)))
SN_max <- 15
SN_min <- 11
fnames<-colnames(SN_Bunsan)

for(i in 1:ncol(LT)){
  fc <- factor(SN_Bunsan[,i])
  x_tmp <- 1:length(levels(fc))
  y_tmp <- tapply(SN_Bunsan$SN,fc,mean)
  plot(x_tmp,y_tmp,type="b",pch=1,xaxp=c(1,length(x_tmp),1),
       ylim=c(SN_min,SN_max),xlab=as.character(fnames[i]),
       ylab="SN_Ratio[dB]",col="red")
}



結果は以下のようになります。

Analysis of Variance Table

Response: Sens
          Df Sum Sq Mean Sq F value  Pr(>F)
A          1 61.143  61.143 16.7743 0.05476 .
B          1 61.970  61.970 17.0010 0.05409 .
C          1 61.591  61.591 16.8972 0.05440 .
D          1  3.687   3.687  1.0116 0.42043
F          1  3.616   3.616  0.9919 0.42421
G          1  3.568   3.568  0.9788 0.42678
H          1 76.748  76.748 21.0554 0.04436 *
I          1  3.723   3.723  1.0213 0.41860
J          1  1.057   1.057  0.2900 0.64411
Residuals  2  7.290   3.645

Analysis of Variance Table

Response: SN
          Df Sum Sq Mean Sq F value Pr(>F)
A          1  0.759   0.759  0.0342 0.8703
B          1 26.516  26.516  1.1952 0.3884
C          1  4.926   4.926  0.2220 0.6839
D          1  0.705   0.705  0.0318 0.8750
F          1  1.024   1.024  0.0462 0.8498
G          1 13.722  13.722  0.6185 0.5140
H          1 33.273  33.273  1.4998 0.3454
I          1  6.035   6.035  0.2720 0.6540
J          1  4.130   4.130  0.1861 0.7082
Residuals  2 44.371  22.186   

それぞれのグラフは以下になります。
(クリックして拡大してみてください)


SN比は、グラフと分散分析表から分かるように、HとBが大きいのが分かります。
感度は、H,A,B,Cが大きいのが分かります。

これらの因子をもとに、パラメータ設計を実施し、確認試験を実施するのが一般的です。

本ページは下の書籍を参考に自習用にまとめています。



他の参考書籍です



関連ページ
静特性のパラメータ設計について
多因子--応答の最適化について
多因子-2水準-L16直交表の場合
2因子ー質的因子の場合
1因子ー量的因子ー二次モデルの場合
1因子ー量的因子ー一次モデルの場合
1因子ー質的因子の場合