Planowanie eksperymentu 2 (k p) w 2 r blokach Stanisław Jaworski, Wojciech Zieliński 1. Wstęp W praktyce często możemy spotkać się z sytuacją, kiedy nie jest możliwe wykonanie pełnego eksperymentu czynnikowego 2 k (nawet w jednym powtórzeniu), tzn. wykonanie wszystkich możliwych kombinacji lub wykonanie tego eksperymentu w jednym bloku, ze względu na przykład na brak jednorodności jednostek doświadczalnych. Dla doświadczeń typu 2 k istnieje metoda, opisana między innymi przez Federera (1955) i Montgomery ego (1976), która polega na kontrolowanej redukcji jednostek doświadczalnych lub na ich kontrolowanym rozłożeniu w równoliczne bloki. Celem pracy jest przedstawienie procedur, które mogą być przydatne w planowaniu doświadczenia typu 2 k w 2 r blokach, zredukowanego do 2 (k p) jednostek doświadczalnych. 2. Metoda W doświadczeniu typu 2 k mamy k czynników A 1, A 2, A 3,..., A k, z których każdy może występować na jednym z dwóch poziomów: x = 0 (niski poziom) lub x = 1 (wysoki poziom). Jednostka doświadczalna reprezentowana jest przez wektor (x 1, x 2,..., x k ) {0, 1} k. W takim doświadczeniu występują następujące efekty (zwane dalej efektami podstawowymi): - główne: A 1, A 2, A 3,..., A k - współdziałania 1. rzędu: A 1 A 2, A 1 A 3,..., A k 1 A k - współdziałania 2. rzędu: A 1 A 2 A 3, A 1 A 2 A 4,..., A k 2 A k 1 A k... - współdziałania (k 1)-ego rzędu: A 1 A 2... A k. Podobnie jak jednostka doświadczalna. także efekt może być reprezentowany przez wektor z przestrzeni {0, 1} k. Na przykład efekt A 1 A 4 reprezentowany jest przez wektor (1, 0, 0, 1, 0,..., 0). Niech L oznacza zbiór takich wektorów. Dokładniej, niech L = ({0, 1} k,, ) będzie przestrzenią liniową nad ciałem liczb Z 2. Dodawanie zdefiniowane jest jako dodawanie po współrzędnych modulo 2. Mnożenie zdefiniowane jest jako mnożenie wektora przez skalar. W planowaniu doświadczeń typu 2 k brane są pod uwagę dwa problemy: 1) dostępna liczba jednostek eksperymentalnych, 2) precyzja estymacji poszczególnych efektów. Doświadczenia typu 2 k planuje się na 2 (k p) jednostkach eksperymentalnych rozłożonych w 2 r blokach w taki sposób, by wszystkie estymowalne współdziałania tego samego rzędu były estymowane z tą samą precyzją. Jeżeli p 0, to doświadczenie nazywa się 1/2 p -replikowane. Od strony formalnej planowanie doświadczenia polega na wybraniu 2 (k p) wektorów z przestrzeni L i pogrupowaniu ich w 2 r bloków. Dokładniej wszystkie 2 k wektory z przestrzeni L dzielone są najpierw na 2 p równoliczne grupy (proces nazywany jest redukcją), wybierana jest jedna z tych grup i ona jest dzielona na 2 r bloki. Okazuje się, że do dokonania podziału na 2 p grupy wystarczy wybrać p liniowo niezależnych wektorów. natomiast do podziału na 2 r bloki - wybór r liniowo niezależnych wektorów. Wybór jednej z 2 p grup determinowany jest wyborem jednego wektora ze zbioru {0, 1} p. Ponieważ każdy z wektorów z przestrzeni L ma swoją konkretną interpretację merytoryczną (związaną z konkretnym problemem praktycznym), więc wybór p + r wektorów musi wynikać z analizy badanego zjawiska. Niech f 1, f 2,..., f b, b 1,..., b r {0, 1} k oraz a 0 {0, 1} p będą wybranymi przez nas wektorami (oczywiście wektor a 0 wybieramy tylko wtedy, kiedy p > 0). Wektory te dominują wybór 2 (k p) jednostek doświadczalnych i rozlokowanie ich do 2 r równolicznych bloków. Konkretnie, plan eksperymentu przyjmuje następującą postać: { ( ) P = e Z r a,b Z p 0 1,...,b0 r a 0,f1 0,...,f : a {0, 1} r}, p 0 gdzie Z k a,w 1,...,w r = { v {0, 1} k : ( v, w 1,, v, w r ) = a } oraz, jest naturalnym iloczynem skalarnym w przestrzeni L. 1
Dla danego a {0, 1} r jednostki doświadczalne ze zbioru Z r Z p a,b 0 1,...,b0 r a 0,f1 0,...,f tworzą jeden blok. Wszystkie p 0 jednostki doświadczalne wybrane do eksperymentu należą do zbioru Z p a 0,f 1,...,f p. Wektory f 1,..., f p odpowiadają zatem za redukcję, a wektory b 1,..., b r za blokowanie. Konsekwencją redukcji jest, że efekty ze zbioru F = {E(v) : v H}, gdzie H = Lin{f 1,..., f p } nie będą estymowalne ani nie będą składnikami estymowalnych kombinacji liniowych efektów podstawowych. Konsekwencją blokowania jest to. że efekty ze zbioru B = {E(v) : v G}, gdzie G = Lin{g 1,..., g p } będą uwikłane z efektem blokowym. Estymowalnymi kombinacjami liniowymi efektów podstawowych będą kombinacje liniowe ze zbioru: KL = { KL(v) : v {0, 1} k \ G H }, gdzie KL(v) = k E v h g ( α h, a 0 ) g h H j=1 h j, g(0) = 1, g(1) = 1 oraz h j, j = 1,..., k, są współrzędnymi wektora h. Wektor α h = (α hl,..., α hp ) jest takim wektorem, że h = p i=1 (α hi f i ). Jeżeli H = 0 (tzn. p = 0), to przyjmujemy, że KL(v) = E(v). Uwikłane z efektem blokowym kombinacje liniowe efektów podstawowych będą należeć do zbioru BKL = {KL(v) : v G \ {0}}. Zbiory F, B, KL, BKL oraz P są ze sobą ściśle powiązane. Znając postać zbiorów F oraz B, znamy też pozostałe. Znane autorom tej pracy programy komputerowe, które podają plan doświadczenia typu 2 (k p) w 2 r blokach, zbiory F oraz B zadają dokładnie w jeden sposób. Nie mamy więc pełnej kontroli nad eksperymentem. Dotyczy to konsekwencji redukowania eksperymentu i dzielenia go na bloki. Wydaje się zatem. że istnieje potrzeba posiadania procedur. które byłyby najbardziej przydatne w realizowaniu istotnych punktów planowania doświadczeń rozważanego typu. 3. Opis procedur Wprowadzenie. Za najbardziej przydatne autorzy uznali: procedurę badania liniowej niezależności wektorów oraz procedurę podającą plan doświadczenia. Algorytm zastosowany do badania liniowej niezależności wektorów oparty jest na definicji liniowej niezależności wektorów: wektory w 1,..., w n są liniowo niezależne, jeżeli nie istnieje taki niezerowy wektor współczynników (α 1,..., α n ), że α i w i = 0. Algorytm badania liniowej niezależności oparty jest na odnajdywaniu wszystkich kombinacji liniowych wektorów w 1,..., w n o niezerowym wektorze współczynników. W programie jest to realizowane przez procedurę Fill Up. Plan doświadczenia konstruowany jest dwustopniowo. W pierwszym kroku dokonywany jest wybór tych jednostek doświadczalnych, które należą do zbioru e ) (Z pa0,f1,...,fp. Następnie wybrane jednostki dzielone są na bloki. Realizowane jest to przez dwie procedury reduction oraz groups d. Efekty oraz jednostki doświadczalne występują w procedurach w postaci liczb naturalnych, których reprezentacja bitowa (pierwsze k miejsc) odpowiada wektorom ze zbioru {0, 1} k. Na przykład liczba 3 reprezentuje efekt A 1 A 2, a liczba 7 efekt A 1 A 2 A 3. W opisie parametrów procedur występują pojęcia B-generatorów (są to efekty E(b 1 ),..., E(b r )) oraz F -generatorów (są to efekty ( 1) a01 E(f i ), i = 1,..., p). Na przykład F -generator A 2 A 3 reprezentowany jest przez liczbę 6. Funkcja pomocnicza. W procedurach reduction oraz groups d występuje funkcja suma, która ma za zadanie zliczać pierwsze i 1 niezerowe bity liczby i 2. Jej treść jest następująca: 2
function suma(i1,i2: integer): integer; var i, poms, helps: integer; begin poms:=0; helps:=i1-1; for i:=0 to helps do if not((abs(i2) and (1 shl i)=0) then poms:=poms+l; suma: =poms; end; Procedura Fill Up. Procedura odnajduje wszystkie, o niezerowym wektorze współczynników, kombinacje liniowe pierwszych lg wektorów z tablicy rntab. W tablicy rntab mogą się znajdować liczby prezentujące także F -generatory, a więc liczby ujemne. W takim przypadku F -generatory są traktowane jak efekty (wektory), od których pochodzą. Parametry wejściowe: lg - liczba wektorów, rntab - tablica wektorów. Wyniki procedury: OutTab - tablica kombinacji liniowych wektorów z tablicy rntab, o niezerowym wektorze współczynników. Procedura reduction. Procedura dokonuje wyboru jednostek doświadczalnych do zredukowanego eksperymentu. Parametry wejściowe: lc - liczba czynników, lf - liczba F -generatorów, rntab - tablica F -generatorów. Wyniki procedury: OutTab - tablica jednostek doświadczalnych w zredukowanym eksperymencie, le - liczba jednostek doświadczalnych w zredukowanym eksperymencie. Procedura groups d. Procedura dzieli wybrane do eksperymentu jednostki doświadczalne na bloki. Parametry wejściowe: lc - liczba czynników, lb - liczba B-generatorów, InTab1 - tablica B-generatorów, le - liczba jednostek doświadczalnych w zredukowanym eksperymencie, InTab2 - tablica jednostek doświadczalnych w zredukowanym eksperymencie. Wyniki procedury: OutTab - tablica przynależności jednostek doświadczalnych do bloków. Na przykład OutTab^[i]=5 oznacza, że i-ta jednostka doświadczalna w tablicy jednostek doświadczalnych, w zredukowanym eksperymencie, należy do bloku piątego. Numery bloków oznaczane są kolejnymi liczbami naturalnymi. Ograniczenia procedur. Liczba czynników lc nie może być większa od 14. Pozostałe ograniczenia wynikają z teorii planowania doświadczeń. tzn. musi zachodzić nierówność 0 lf + lb < lc. Program wykorzystujący omawiane procedury powinien zawierać następujące deklaracje: Const n=16384; Type PTAB=^TABLICA; TABLICA=Array [1..n] Of Integer; Literatura Federer W.T. (1955): Experimental design. Macmillan. New York. Montgomery D.G. (1976): Design and analysis of experiments. Wiley, New York. 3
Procedury Procedure Fill Up(lg: Integer; InTab: PTAB; var OutTab: PTAB); {Input: 19: liczba wektorów, InTab: tablica wektorów. Output: Out Tab: tablica kombinacji liniowych wektorów, z tablicy InTab, o niezerowym wektorze współczynników.} lg help,koniec,poprzedni,i,ii: Integer; in: Booleanj lg help:=lg-l; For i:=o To lg help Do koniec:=l hl i; OutTabA[koniec]:=InTabA[i+1]; poprzedni:=koniec-1; For ii:=l To poprzedni Do OutTabA[koniec+ii]:=ab (OutTabA[ii]) xor ab (OutTabA[koniec]); If OutTab [ii]<o Then If OutTab [koniec]<o Then min:=fal e Else min:=true; Else If OutTab [koniec]<o Then min:=true Else min:=false; If min Then OutTabA[koniec+ii]:= -OutTab [koniec+ii]; Procedure reduction( lc, 19: lnteger; InTab: PTab; Val" leo Integer; OutTab: PTab); {Input: lc: liczba czynników, lg: liczba F-generatorów, InTab: tablica F-generatorów. Output: OutTab: tablica jednostek doświadczalnych w zredukowanym eksperymencie, le: liczba jednostek doświadczalnych w zredukowanym eksperymencie.} licznik,i,ii,help,helpbis,wsk,pomtab: Integer; warunek: Boolean; leo =lc-lg; If le<1 Then le:=o Else leo=1 shl le; help:=(1 shl lc)-1, licznik: =0; For i:=0 To help Do ii: =0; Repeat 4
li: =ii+l; pomtab:=intab^[ii]; If pomtab<o Then wsk: =1 Else wsk: =0; helpbis:=i and abs(pomtab); helpbis:=suma(lc,helpbis) mod 2; warunek:=(helpbis=wsk); Until ((not warunek) or (li=lg)); If warunek Then licznik:=licznik+l; OutTab^[licznik]:=i; Procedure groups d(lc,lg:integer;intab1:ptab;le: Integer; InTab2:PTab; OutTab:PTab); {Input: lc: liczba czynników, lg: liczba B-generatorów, InTab1: tablica B-generatorów, leo: liczba jednostek doświadczalnych w zredukowanym eksperymencie, InTab2: tablica Jednostek doświadczalnych w zredukowanym eksperymencie. Output: OutTab:-tablica przynależności Jednostek doświadczalnych do bloków. Na przykład, OutTab^[i]=5 oznacza, że i-ta jednostka doświadczalna w tablicy jednostek doświadczalnych, w zredukowanym eksperymencie, należy do bloku piątego. Numery bloków oznaczane są kolejnymi liczbami naturalnymi.} i,ii,help,helpbis:integer; For i: =1 To le Do helpbis: =0; For ii:=l To 19 Do help:=suma(lc,intab1^[ii] and InTab2^ [i]) mod 2; If help>o Then helpbis:=helpbis+(1 shl(li-l)); OutTab^[i]: =helpbis+1; 5