以下の内容はhttps://seinzumtode.hatenadiary.jp/entry/2024/09/05/213130より取得しました。


ロバストパラメータ設計(タグチメソッド)をRで実装する

以下のYoutubuで紹介されていたRのqualitytoolsライブラリを用いる。
www.youtube.com

以下の例題をもとに実装する。
tech-oh.com

Rで必要なライブラリをインストールし、読み込む。

install.packages("devtools")
library(devtools)
install_github("cran/qualityTools")
if(!require(tidyr)){install.packages("tidyr")}
if(!require(dplyr)){install.packages("dplyr")}
library(qualityTools)

まず、混合系直交表L18を作成する。
混合系とは、含まれる因子のレベルが列ごとに異なるもの。
以下の例では第1列が2個の因子レベル(1,2)、第2列から第8列までが3個の因子レベル(1,2,3)から成っている。

また、入力に2因子、ノイズに2因子を考慮した2元配置実験を考える。

この直交表を用い、実験値を記録すると以下のようになる。

スクショだと不便なので、Claudeを用いてCSVに変換した。

サンプルNo.	未使用	A	B	C	D	E	F	G	u1 N1	u1 N2	u2 N1	u2 N2
1	1	1	1	1	1	1	1	1	15.93	-10.84	25.4	-6.66
2	1	1	2	2	2	2	2	2	16.61	-12.59	24.92	-4.57
3	1	1	3	3	3	3	3	3	17.32	-13.96	24.04	-7.24
4	1	2	1	1	2	2	3	3	15.72	-12.17	22.82	-5.06
5	1	2	2	2	3	3	1	1	16.37	-13.2	22.71	-6.86
6	1	2	3	3	1	1	2	2	16.88	-13.44	23.77	-6.56
7	1	3	1	2	1	3	3	3	15.38	-12.26	21.6	-6.04
8	1	3	2	3	2	1	3	1	16.4	-13.35	22.51	-7.24
9	1	3	3	1	3	2	1	2	17.01	-14.09	22.84	-8.26
10	2	1	1	3	3	2	2	1	16.82	-12.57	25.32	-4.07
11	2	1	2	1	1	3	3	2	16.05	-12.19	23.02	-4.44
12	2	1	3	2	2	1	1	3	17.21	-12.94	27.23	-4.4
13	2	2	1	2	3	1	3	2	16.43	-12.61	24.07	-4.97
14	2	2	2	3	1	2	1	3	16.55	-13.06	23.51	-6.09
15	2	2	3	1	2	3	2	1	16.58	-13.57	22.59	-7.56
16	2	3	1	3	2	3	1	1	15.82	-12.66	22.17	-6.3
17	2	3	2	1	3	1	2	3	16.48	-13.29	22.85	-6.93
18	2	3	3	2	1	2	3	1	16.36	-13.63	21.83	-8.16

さて、以下でタグチデザインオブジェクトを作成する。

tdo = taguchiDesign(design="L18_2",randomize=F,replicates=4)
tdo

   StandOrder RunOrder Replicate A B C D E F G H  y
1           1        1         1 1 1 1 1 1 1 1 1 NA
2           2        2         1 1 1 2 2 2 2 2 2 NA
3           3        3         1 1 1 3 3 3 3 3 3 NA
4           4        4         1 1 2 1 1 2 2 3 3 NA
5           5        5         1 1 2 2 2 3 3 1 2 NA
6           6        6         1 1 2 3 3 1 1 2 1 NA
7           7        7         1 1 3 1 2 1 3 2 3 NA
8           8        8         1 1 3 2 3 2 1 3 1 NA
9           9        9         1 1 3 3 1 3 2 1 2 NA
10         10       10         1 2 1 1 3 3 2 2 1 NA
11         11       11         1 2 1 2 1 1 3 3 2 NA
12         12       12         1 2 1 3 2 2 1 1 3 NA
13         13       13         1 2 2 1 2 3 1 3 2 NA
14         14       14         1 2 2 2 3 1 2 1 3 NA
15         15       15         1 2 2 3 1 2 3 2 1 NA
16         16       16         1 2 3 1 3 2 3 1 2 NA
17         17       17         1 2 3 2 1 3 1 2 3 NA
18         18       18         1 2 3 3 2 1 2 3 1 NA
19         19       19         2 1 1 1 1 1 1 1 1 NA
20         20       20         2 1 1 2 2 2 2 2 2 NA
21         21       21         2 1 1 3 3 3 3 3 3 NA
22         22       22         2 1 2 1 1 2 2 3 3 NA
23         23       23         2 1 2 2 2 3 3 1 2 NA
24         24       24         2 1 2 3 3 1 1 2 1 NA
25         25       25         2 1 3 1 2 1 3 2 3 NA
26         26       26         2 1 3 2 3 2 1 3 1 NA
27         27       27         2 1 3 3 1 3 2 1 2 NA
28         28       28         2 2 1 1 3 3 2 2 1 NA
29         29       29         2 2 1 2 1 1 3 3 2 NA
30         30       30         2 2 1 3 2 2 1 1 3 NA
31         31       31         2 2 2 1 2 3 1 3 2 NA
32         32       32         2 2 2 2 3 1 2 1 3 NA
33         33       33         2 2 2 3 1 2 3 2 1 NA
34         34       34         2 2 3 1 3 2 3 1 2 NA
35         35       35         2 2 3 2 1 3 1 2 3 NA
36         36       36         2 2 3 3 2 1 2 3 1 NA
37         37       37         3 1 1 1 1 1 1 1 1 NA
38         38       38         3 1 1 2 2 2 2 2 2 NA
39         39       39         3 1 1 3 3 3 3 3 3 NA
40         40       40         3 1 2 1 1 2 2 3 3 NA
41         41       41         3 1 2 2 2 3 3 1 2 NA
42         42       42         3 1 2 3 3 1 1 2 1 NA
43         43       43         3 1 3 1 2 1 3 2 3 NA
44         44       44         3 1 3 2 3 2 1 3 1 NA
45         45       45         3 1 3 3 1 3 2 1 2 NA
46         46       46         3 2 1 1 3 3 2 2 1 NA
47         47       47         3 2 1 2 1 1 3 3 2 NA
48         48       48         3 2 1 3 2 2 1 1 3 NA
49         49       49         3 2 2 1 2 3 1 3 2 NA
50         50       50         3 2 2 2 3 1 2 1 3 NA
51         51       51         3 2 2 3 1 2 3 2 1 NA
52         52       52         3 2 3 1 3 2 3 1 2 NA
53         53       53         3 2 3 2 1 3 1 2 3 NA
54         54       54         3 2 3 3 2 1 2 3 1 NA
55         55       55         4 1 1 1 1 1 1 1 1 NA
56         56       56         4 1 1 2 2 2 2 2 2 NA
57         57       57         4 1 1 3 3 3 3 3 3 NA
58         58       58         4 1 2 1 1 2 2 3 3 NA
59         59       59         4 1 2 2 2 3 3 1 2 NA
60         60       60         4 1 2 3 3 1 1 2 1 NA
61         61       61         4 1 3 1 2 1 3 2 3 NA
62         62       62         4 1 3 2 3 2 1 3 1 NA
63         63       63         4 1 3 3 1 3 2 1 2 NA
64         64       64         4 2 1 1 3 3 2 2 1 NA
65         65       65         4 2 1 2 1 1 3 3 2 NA
66         66       66         4 2 1 3 2 2 1 1 3 NA
67         67       67         4 2 2 1 2 3 1 3 2 NA
68         68       68         4 2 2 2 3 1 2 1 3 NA
69         69       69         4 2 2 3 1 2 3 2 1 NA
70         70       70         4 2 3 1 3 2 3 1 2 NA
71         71       71         4 2 3 2 1 3 1 2 3 NA
72         72       72         4 2 3 3 2 1 2 3 1 NA

72列あるのでL18じゃないように見えるが、これはreplicates=4を指定しているため(18x4=72)。
2元配置実験なので、実験値は u1xN1, u1xN2, u2xN1, u2xN2の4通りある。したがって各パターンについて4つの実験値が得られている。これがreplicates=4の理由。

以下で要因効果図(SN比と感度)を描画する。

tdo = taguchiDesign(design="L18_2",randomize=F,replicates=4)
tdo
write.csv(tdo,"L18_2.csv",row.names = F)
d =read.table("L18_2.csv",sep=",",header = TRUE)
y=d$y
response(tdo)=y
#type="nominal: Creates a nominal-the-best signal-to-noise-ratio plot. 
#type="smaller" for smaller is the best
#type="larger" for larger is the best
#“nominal”: SN = 10*log(mean(y)/var(y)) 
#“smaller”: SN = -10*log((1/n)*sum(y^2)) 
#“larger”: SN = -10*log((1/n)*sum(1/y^2))

snPlot(tdo,
       # type="larger",
       # type="smaller",
       type="nominal",
       # factors=c('B','C','D','E','F','G','H'),
       # points = TRUE, 
       col = "black", 
       single=TRUE,
       pch = 16,
       lwd=5, 
       lty = 1,
       ylab = "Mean of S/N ratio"
      )
par(mfrow = c(1,8)) #1行にする

effectPlot(tdo,
           single=TRUE,
           # points = TRUE,
           col='black',
           pch=16,
           lwd=5, 
           lty=1,
           ylab = "mean of y"
           )
par(mfrow = c(1,8)) #1行にする

SN比

感度

SN比についてはnominalを指定した。参考にした記事とグラフのトレンドは合っているが、絶対値については確認していない。元記事では変動を用いており、qualitytoolsでは分散を使っているようなので、定数倍の違いはありそうである(未確認)。
感度についてもトレンドはあっているが、qualitytoolsの実装の中身を、感度の定義と照らし合わせて確認はできていない。

注意点として、元記事では直交表が[未使用,A,B,C,...,G]となっているところ、qualitytoolsでは[A,B,C,...,G,H]となっている。
ラベルが1つずれているのでB→Aのようにシフトして読み替える必要がある点に注意を要する。したがって要因効果図のAは「未使用」にシフトされるので、これは無視する。




以上の内容はhttps://seinzumtode.hatenadiary.jp/entry/2024/09/05/213130より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14