แสดงบทความที่มีป้ายกำกับ DOE แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ DOE แสดงบทความทั้งหมด

วันเสาร์ที่ 14 พฤศจิกายน พ.ศ. 2558

วิเคราะห์ RSM ด้วย R (How to do RSM in R) (ตอนที่ 2)

   ในโพสต์ก่อนหน้านี้ได้กล่าวถึงการสร้างแผนการทดลองแบบ central composite design สำหรับการวิเคราะห์ RSM ในคราวนี้จะขอแนะนำวิธีการสร้างแผนการทดลองอีกแบบที่ได้รับความนิยมคือ Box-Behnken design โดยใช้ฟังก์ชั่น bbd ในแพจเกจ rsm เช่นกัน โดยฟังก์ชั่นนี้มีรูปแบบการใช้งานคือ

bbd(k, n0 = 4, block = (k == 4 | k == 5), randomize = TRUE, coding)
  

    สมมติว่าเราต้องการออกแบบการทดลองแบบ Box-Behnken design  สำหรับตัวแปร 3 ตัว และให้มีจุดกึ่งกลางซ้ำจำนวน 4 ครั้ง
http://www.weibull.com/hotwire/issue130/ht130-1.gif


> library(rsm)
> bbd(3,n0=4)
   run.order std.order x1.as.is x2.as.is x3.as.is
1          1        11        0       -1        1
2          2         4        1        1        0
3          3         7       -1        0        1
4          4        14        0        0        0
5          5        12        0        1        1
6          6        16        0        0        0
7          7         1       -1       -1        0
8          8         2        1       -1        0
9          9         5       -1        0       -1
10        10         9        0       -1       -1
11        11         8        1        0        1
12        12         3       -1        1        0
13        13        15        0        0        0
14        14        10        0        1       -1
15        15        13        0        0        0
16        16         6        1        0       -1

Data are stored in coded form using these coding formulas ...
x1 ~ x1.as.is
x2 ~ x2.as.is
x3 ~ x3.as.is


   เช่นเดิมถ้าเราต้องการใส่ค่าจริงของตัวแปร  ด้วย coding

> bbd(3,n0=4,coding=list(x1~(Temp-150)/10,x2~(Pres-50)/5,x3~(Time-10)/2))
   run.order std.order Temp Pres Time
1          1        16  150   50   10
2          2        13  150   50   10
3          3        11  150   45   12
4          4        15  150   50   10
5          5         5  140   50    8
6          6         9  150   45    8
7          7         3  140   55   10
8          8         1  140   45   10
9          9         4  160   55   10
10        10        10  150   55    8
11        11        12  150   55   12
12        12         7  140   50   12
13        13         6  160   50    8
14        14         8  160   50   12
15        15         2  160   45   10
16        16        14  150   50   10

Data are stored in coded form using these coding formulas ...
x1 ~ (Temp - 150)/10
x2 ~ (Pres - 50)/5
x3 ~ (Time - 10)/2

วันศุกร์ที่ 13 พฤศจิกายน พ.ศ. 2558

วิเคราะห์ RSM ด้วย R (How to do RSM in R) (ตอนที่ 1)

    แพกเกจที่น่าสนใจมากอีกอันหนึ่งของ R คือ rsm ซึ่งสามารถใช้ในการวิเคราะห์พื้นผิวตอบสนองหรือที่รู้จักกันดีในชื่อ response surface methodology (RSM) ซึ่งเราสามารถติดตั้งด้วยฟังก์ชั่น install.packages() ตามที่เคยเขียนไปก่อนหน้านี้

     ในวันนี้ผมจะพูดถึงการออกแบบแบบการทดลองสำหรับวิเคราะห์ RSM ก่อนจะไปถึงการวิเคราะห์ต่อไปในอนาคต แพกเกจ rsm มาพร้อมกับฟังก์ชั่นในการสร้างแผนการทดลองที่เหมาะสำหรับ RSM เช่น CCD (central composite design)โดยใช้ฟังก์ชั่น ccd  เช่นหากต้องการออกแบบแผนการทดลองที่มี 3 ตัวแปร มีจุดกึ่งกลาง (center point) ซ้ำ 4 ครั้ง


http://doi.ieeecomputersociety.org/cms/Computer.org/dl/trans/tm/2006/06/figures/h06273.gif


   จากรูปแบบการใช้ฟังก์ชั่น ccd
 
ccd(basis, generators, blocks = "Block", n0 = 4, alpha = "orthogonal", 
    wbreps = 1, bbreps = 1, randomize = TRUE, inscribed = FALSE, 
    coding, oneblock = FALSE)

เราจะใส่ค่า basis ซึ่งคือจำนวนปัจจัยเป็น 3 ค่า n0=c(4,0) เนื่องจากสำหรบ ccd นั้นจะใส่ค่าเป็นเว็คเตอร์ และค่า oneblock=TRUE เพื่อให้สร้างแผนการทดลองแบบบล็อกเดียว

 > ccd(3,n0=c(4,0),alpha="rotatable",oneblock=TRUE)
   run.order std.order  x1.as.is  x2.as.is  x3.as.is
1          1         7 -1.000000  1.000000  1.000000
2          2         1 -1.000000 -1.000000 -1.000000
3          3         3 -1.000000  1.000000 -1.000000
4          4         3  0.000000 -1.681793  0.000000
5          5         2  1.681793  0.000000  0.000000
6          6         2  1.000000 -1.000000 -1.000000
7          7         4  1.000000  1.000000 -1.000000
8          8        11  0.000000  0.000000  0.000000
9          9         6  1.000000 -1.000000  1.000000
10        10         5 -1.000000 -1.000000  1.000000
11        11         5  0.000000  0.000000 -1.681793
12        12        10  0.000000  0.000000  0.000000
13        13         8  1.000000  1.000000  1.000000
14        14        12  0.000000  0.000000  0.000000
15        15         9  0.000000  0.000000  0.000000
16        16         6  0.000000  0.000000  1.681793
17        17         4  0.000000  1.681793  0.000000
18        18         1 -1.681793  0.000000  0.000000

Data are stored in coded form using these coding formulas ...
x1 ~ x1.as.is
x2 ~ x2.as.is
x3 ~ x3.as.is


    จะเห็นได้ว่าเราได้แผนการทดลองที่มีจำนวนทั้งสิ้น 18 การทดลองโดยมีการซ้ำที่จุดกึ่งกลาง (0,0,0) จำนวน 4 ซ้ำ สำหรับแผนที่ได้จะเป็นค่าที่เป็น code ไม่ใช่ค่าจริงของปัจจัย  สำหรับค่าจริงนั้นสมมติว่าปัจจัย x1 คือ Temp มีค่า 140-160, x2 คือ Press มีค่า 45 - 55, x3 คือ Time มีค่า 8-12 เราจะใส่ในส่วน coding ดังนี้

> ccd(3,n0=c(4,0),alpha="rotatable",oneblock=TRUE,coding=list(x1~(Temp-150)/10,x2~(Pres-50)/5,x3~(Time-10)/2))
   run.order std.order     Temp     Pres      Time
1          1         9 150.0000 50.00000 10.000000
2          2         6 160.0000 45.00000 12.000000
3          3        11 150.0000 50.00000 10.000000
4          4         7 140.0000 55.00000 12.000000
5          5         5 150.0000 50.00000  6.636414
6          6         6 150.0000 50.00000 13.363586
7          7         5 140.0000 45.00000 12.000000
8          8         3 150.0000 41.59104 10.000000
9          9         2 160.0000 45.00000  8.000000
10        10         2 166.8179 50.00000 10.000000
11        11        12 150.0000 50.00000 10.000000
12        12        10 150.0000 50.00000 10.000000
13        13         3 140.0000 55.00000  8.000000
14        14         1 140.0000 45.00000  8.000000
15        15         1 133.1821 50.00000 10.000000
16        16         4 150.0000 58.40896 10.000000
17        17         4 160.0000 55.00000  8.000000
18        18         8 160.0000 55.00000 12.000000

Data are stored in coded form using these coding formulas ...
x1 ~ (Temp - 150)/10
x2 ~ (Pres - 50)/5
x3 ~ (Time - 10)/2