Tilastollinen vastepintamallinnus: kokeiden suunnittelu, regressiomallin analyysi, ja vasteen optimointi. Esimerkit laskettu Matlabilla

Samankaltaiset tiedostot
Tilastollinen vastepintamallinnus: kokeiden suunnittelu, regressiomallin analyysi, ja vasteen optimointi. Esimerkit laskettu JMP:llä

Tilastollinen vastepintamallinnus: kokeiden suunnittelu, regressiomallin analyysi ja vasteen optimointi

Keskipisteen lisääminen 2 k -faktorikokeeseen (ks. Montgomery 9-6)

Vastepintamenetelmä. Kuusinen/Heliövaara 1

Vastepintamenetelmä. Heliövaara 1

TILASTOLLINEN KOKEIDEN SUUNNITTELU JA OTANTA. Keijo Ruohonen

Tässä dokumentissa on ensimmäisten harjoitusten malliratkaisut MATLABskripteinä. Voit kokeilla itse niiden ajamista ja toimintaa MATLABissa.

Vastepintamenetelmä. Vilkkumaa / Kuusinen 1

Regressioanalyysi. Vilkkumaa / Kuusinen 1

Koesuunnittelu Vastepintamenetelmä. TKK (c) Ilkka Mellin (2005) 1

VARIANSSIANALYYSI ANALYSIS OF VARIANCE

Lineaarialgebra ja differentiaaliyhtälöt Harjoitus 4 / Ratkaisut

MS-A0204 Differentiaali- ja integraalilaskenta 2 (ELEC2) Luento 7: Pienimmän neliösumman menetelmä ja Newtonin menetelmä.

Harha mallin arvioinnissa

Regressioanalyysi. Kuusinen/Heliövaara 1

Latinalaiset neliöt. Latinalaiset neliöt. Latinalaiset neliöt. Latinalaiset neliöt: Mitä opimme? Latinalaiset neliöt

Mat Tilastollisen analyysin perusteet, kevät 2007

Tilastollisen analyysin perusteet Luento 9: Moniulotteinen lineaarinen. regressio

4.2 Useampi selittävä muuttuja (kertausta)

mlvektori 1. Muista, että Jacobin matriisi koostuu vektori- tai skalaariarvoisen funktion F ensimmäisistä

805324A (805679S) Aikasarja-analyysi Harjoitus 3 (2016)

xi = yi = 586 Korrelaatiokerroin r: SS xy = x i y i ( x i ) ( y i )/n = SS xx = x 2 i ( x i ) 2 /n =

Lohkoasetelmat. Vilkkumaa / Kuusinen 1

805324A (805679S) Aikasarja-analyysi Harjoitus 4 (2016)

Identifiointiprosessi

USEAN MUUTTUJAN REGRESSIOMALLIT JA NIIDEN ANA- LYYSI

ELEC-C5210 Satunnaisprosessit tietoliikenteessä Harjoitus M1,

Todennäköisyyden ominaisuuksia

805324A (805679S) Aikasarja-analyysi Harjoitus 6 (2016)

Sovellettu todennäköisyyslaskenta B

MS-C2103 Koesuunnittelu ja tilastolliset mallit (5 op)

MS-C2103 Koesuunnittelu ja tilastolliset mallit (5 op)

Identifiointiprosessi

031021P Tilastomatematiikka (5 op) kertausta 2. vk:een

MS-A0205/MS-A0206 Differentiaali- ja integraalilaskenta 2 Luento 6: Ääriarvojen luokittelu. Lagrangen kertojat.

Harjoitusten 5 vastaukset

Harjoitus 1: Matlab. Harjoitus 1: Matlab. Mat Sovelletun matematiikan tietokonetyöt 1. Syksy 2006

1. PÄÄTTELY YHDEN SELITTÄJÄN LINEAARISESTA REGRESSIOMALLISTA

DI matematiikan opettajaksi: Täydennyskurssi, kevät 2010 Luentorunkoa ja harjoituksia viikolle 13: ti klo 13:00-15:30 ja to 1.4.

Lohkoasetelmat. Heliövaara 1

MS-A0207 Differentiaali- ja integraalilaskenta 2 (Chem) Yhteenveto, osa I

pisteet Frekvenssi frekvenssi Yhteensä

MS-A0204 Differentiaali- ja integraalilaskenta 2 (ELEC2) Luento 6: Ääriarvojen luokittelu. Lagrangen kertojat.

Matlabin perusteita Grafiikka

SAS/IML käyttö ekonometristen mallien tilastollisessa päättelyssä. Antti Suoperä

Lohkoasetelmat. Kuusinen/Heliövaara 1

Differentiaali- ja integraalilaskenta 2 (CHEM) MS-A0207 Hakula/Vuojamo Kurssitentti, 12.2, 2018, arvosteluperusteet

Harjoitus 7: NCSS - Tilastollinen analyysi

Ratkaisuehdotukset LH 7 / vko 47

Kertausluento. Vilkkumaa / Kuusinen 1

Tilastollisen analyysin perusteet Luento 8: Lineaarinen regressio, testejä ja luottamusvälejä

INFO / Matemaattinen Analyysi, k2016, L0

FoA5 Tilastollisen analyysin perusteet puheentutkimuksessa. 9. luento. Pertti Palo

Logistinen regressio, separoivat hypertasot

Harjoitus 3: Regressiomallit (Matlab)

1 Rajoittamaton optimointi

Tieteellinen laskenta 2 Törmäykset

Kaksisuuntainen varianssianalyysi. Heliövaara 1

Keskeiset tulokset heikko duaalisuus (duaaliaukko, 6.2.1) vahva duaalisuus (6.2.4) satulapisteominaisuus (6.2.5) yhteys KKT ehtoihin (6.2.

Matriisit ovat matlabin perustietotyyppejä. Yksinkertaisimmillaan voimme esitellä ja tallentaa 1x1 vektorin seuraavasti: >> a = 9.81 a = 9.

Koesuunnittelu 2 k -faktorikokeet. TKK (c) Ilkka Mellin (2005) 1

Lisätehtäviä ratkaisuineen luentomonisteen lukuun 6 liittyen., jos otoskeskiarvo on suurempi kuin 13,96. Mikä on testissä käytetty α:n arvo?

Korrelaatiokertoinen määrittely 165

Diskriminanttianalyysi I

. Kun p = 1, jono suppenee raja-arvoon 1. Jos p = 2, jono hajaantuu. Jono suppenee siis lineaarisesti. Vastaavasti jonolle r k+1 = r k, suhde on r k+1

Laskennallinen data-analyysi II

KURSSIN TILASTOMATEMATIIKKA KAAVOJA

9. laskuharjoituskierros, vko 12-13, ratkaisut

Laskuharjoitus 9, tehtävä 6

Pienimmän neliösumman menetelmä

Ilkka Mellin Tilastolliset menetelmät. Osa 4: Lineaarinen regressioanalyysi. Yleinen lineaarinen malli. TKK (c) Ilkka Mellin (2007) 1

Harjoitus 9: Optimointi I (Matlab)

MS-C2103 Koesuunnittelu ja tilastolliset mallit (5 op)

Estimointi. Vilkkumaa / Kuusinen 1

Toimittaja Erä

HY / Matematiikan ja tilastotieteen laitos Vektorianalyysi I, syksy 2017 Harjoitus 1 Ratkaisuehdotukset. I.1. Todista Cauchyn-Schwarzin epäyhtälö

Konjugaattigradienttimenetelmä

Kohdeyleisö: toisen vuoden teekkari

806109P TILASTOTIETEEN PERUSMENETELMÄT I Hanna Heikkinen Esimerkkejä estimoinnista ja merkitsevyystestauksesta, syksy (1 α) = 99 1 α = 0.

Johdatus varianssianalyysiin. Vilkkumaa / Kuusinen 1

Matemaattiset ohjelmistot A. Osa 2: MATLAB

Luottamisvälin avulla voidaan arvioida populaation tuntematonta parametria.

Tilastollinen testaus. Vilkkumaa / Kuusinen 1

MS-C1340 Lineaarialgebra ja differentiaaliyhtälöt

Kaksisuuntainen varianssianalyysi. Vilkkumaa / Kuusinen 1

Johdatus tilastotieteeseen Yleinen lineaarinen malli. TKK (c) Ilkka Mellin (2004) 1

2 k -faktorikokeet. Vilkkumaa / Kuusinen 1

Väliestimointi (jatkoa) Heliövaara 1

Estimointi populaation tuntemattoman parametrin arviointia otossuureen avulla Otossuure satunnaisotoksen avulla määritelty funktio

Yhden selittäjän lineaarinen regressiomalli (jatkoa) Ensi viikolla ei pidetä luentoa eikä harjoituksia. Heliövaara 1

Esim Brand lkm keskiarvo keskihajonta A ,28 5,977 B ,06 3,866 C ,95 4,501

ARMA(p, q)-prosessin tapauksessa maksimikohdan määrääminen on moniulotteinen epälineaarinen optimointiongelma.

Sovellettu todennäköisyyslaskenta B

Matematiikan tukikurssi

Yleinen lineaarinen malli eli usean selittäjän lineaarinen regressiomalli

Sovellettu todennäköisyyslaskenta B

Johdatus tilastotieteeseen Estimointi. TKK (c) Ilkka Mellin (2005) 1

Harjoitus 6 -- Ratkaisut

Luento 8: Epälineaarinen optimointi

Seuraavassa taulukossa on annettu mittojen määritelmät ja sijoitettu luvut. = 40% = 67% 6 = 0.06% = 99.92% 6+2 = 0.

Transkriptio:

Tilastollinen vastepintamallinnus: kokeiden suunnittelu, regressiomallin analyysi, ja vasteen optimointi Esimerkit laskettu Matlabilla Antti Hyttinen Tampereen teknillinen yliopisto 29.12.2003

ii Ohjelmien versiotietoja: MATLAB Version 6.5.0.185000 (R13) Statistics Toolbox Version 4.0 (R13) Operating System: Darwin 6.6 Darwin Kernel Version 6.6: Power Macintosh Java VM Version: Java 1.3.1 with Apple Computer

Luku 1 Regressio 1.1 Matriisilaskentaa ja multinormaalijakauma Ei esimerkkiä. 1.2 Lineaarinen regressiomalli Ensin syötetään datamatriisi ja vastevektori. >> x1=[0.3,0.3,0.7,0.7,0.3,0.3,0.7,0.7,0.3,0.3,0.7,0.7] ; >> x2=[1,1,1,1,5,5,5,5,9,9,9,9] ; >> X=[ones(size(x1)),x1,x2]; >> y=[5.63,6.42,1.38,1.94,11.57,12.16,5.72,4.69,12.68,13.31,8.28,7.73] ; >> N=length(y); >> k=2; Parametrien estimaatit voidaan laskea suoraan kaavasta: >> C=inv(X *X) C = 0.7995-1.0417-0.0391-1.0417 2.0833 0.0000-0.0391-0.0000 0.0078 >> b=c*x *y b = 10.1378-13.3458 0.8322 1

2 LUKU 1. REGRESSIO tai QR-hajotelmaa käyttäen Matlabin kenoviivaoperaattorin kautta: >> b=x\y b = 10.1378-13.3458 0.8322 Estimoidaan parametrien keskihajonnat: >> y_hat=x*b; >> r=y-y_hat; >> SSE=r *r SSE = 9.2981 >> s2=sse/(n-k-1) s2 = 1.0331 >> se=sqrt(diag(c)*s2) se = 0.9088 1.4671 0.0898 Ennustettu arvo tasoilla x 1 =0.5, x 2 =4ja ennusteen estimoitu keskihajonta: >> xi=[ 1; 0.5; 4 ]; >> y_hat=xi *b y_hat = 6.7936 >> se_y_hat=sqrt(s2*xi *C*xi) se_y_hat = 0.3069 Mallin ja datan visualisointia esimerkiksi näin:

1.2. LINEAARINEN REGRESSIOMALLI 3 >> I3=find(X(:,2)==0.3); >> I7=find(X(:,2)==0.7); >> x2=linspace(0,10) ; >> e=ones(size(x2)); >> X03=[e, 0.3*e, x2]; >> X07=[e, 0.7*e, x2]; >> plot(x(i3,3),y(i3), bo,x(i7,3),y(i7),... gx,x2, X03*b, b-,x2, X07*b, g-- ); >> xlabel( x_2 ); >> ylabel( y, Rotation,0); >> box off y 15 10 5 0 0 2 4 6 8 10 x 2

4 LUKU 1. REGRESSIO 1.3 Hypoteesien testaaminen Luodaan datamatriisi ja vastevektori. >> x1=[0.3,0.3,0.7,0.7,0.3,0.3,0.7,0.7,0.3,0.3,0.7,0.7] ; >> x2=[1,1,1,1,5,5,5,5,9,9,9,9] ; >> X=[ones(size(x1)),x1,x2,x1.*x2,x2.ˆ2,x1.*x2.ˆ2] >> y=[5.63,6.42,1.38,1.94,11.57,12.16,5.72,4.69,12.68,13.31,8.28,7.73] ; >> N=length(y); >> k=5; Lasketaan parametrien estimaatit: >> b=x\y b = 6.2079-7.9293 3.3310-3.2930-0.2401 0.3098 Estimoidaan virheen varianssi ja parametrien keskihajonnat: >> y_hat=x*b; >> r=y-y_hat; >> SSE=r *r SSE = 1.5231 >> s2=sse/(n-k-1) s2 = 0.2538 >> C=inv(X *X); >> se=sqrt(diag(c)*s2) se = 1.0328 1.9178 0.5329 0.9895 0.0519 0.0964 Testataan faktorin x 1 x 2 2 tarpeellisuus. F- ja t -jakaumien kertymäfunktioiden arvot saadaan Statistics Toolboxin komennoilla fcdf ja tcdf.

1.3. HYPOTEESIEN TESTAAMINEN 5 >> a=[0 0 0 0 0 1] ;d=0; >> F=1/s2*(a *b-d)ˆ2/(a *C*a) F = 10.3222 >> alpha_f=1-fcdf(f,1,n-k-1) alpha_f = 0.0183 >> t=(a *b-d)/sqrt(s2*a *C*a) t = 3.2128 >> alpha_t=2*(1-tcdf(t,n-k-1)) alpha_t = 0.0183 Koko mallin käyttökelpoisuuden testaus: >> A=[zeros(k,1),eye(k)];d=zeros(k,1); >> F=(N-k-1)/(5*SSE)*(A*b-d) *inv(a*c*a )*(A*b-d) F = 143.3280 >> alpha=1-fcdf(f,5,n-k-1) alpha = 3.7212e-06 ANOVA-taulun vielä laskemattomat neliösummat: >> M=eye(N)-1/N*ones(N,N); >> SSR=y_hat *M*y_hat SSR = 181.9130 >> SST=SSE+SSR SST = 183.4361 ANOVA-taulun keskineliöt:

6 LUKU 1. REGRESSIO >> MSE=SSE/(N-k-1) MSE = 0.2538 >> MSR=SSR/k MSR = 36.3826 >> MST=SST/(N-1) MST = 16.6760 Vaihtoehtoisen kaavan käyttö F-suureen laskemisessa: >> F=MSR/MSE F = 143.3280 Determinaatiokerroin R 2 ja korjattu determinaatiokerroin R 2 A : >> R2=SSR/SST R2 = 0.9917 >> R2_A=1-MSE/MST R2_A = 0.9848 Valtaosa tuloksista saadaan myös komennolla regress. Vektorissa STATS on determinaatiokerroin R 2,kokomallin käyttökelpoisuuden F-testisuure ja merkitsevyys. >> [B,BINT,R,RINT,STATS]=regress(y,X);B,STATS B = 6.2079-7.9293 3.3310-3.2930-0.2401 0.3098 STATS = 0.9917 143.3280 0.0000

1.4. MALLIN EPÄSOPIVUUDEN TESTAUS TOISTOKOKEIN 7 1.4 Mallin epäsopivuuden testaus toistokokein Matlabilla laskut suoritetaan näin. Ensin on kerrattu tarvittavat, jo kohdan 1.2 esimerkissäkin lasketut matriisit. >> x1=[0.3,0.3,0.7,0.7,0.3,0.3,0.7,0.7,0.3,0.3,0.7,0.7] ; >> x2=[1,1,1,1,5,5,5,5,9,9,9,9] ; >> X=[ones(size(x1)),x1,x2]; >> y=[5.63,6.42,1.38,1.94,11.57,12.16,5.72,4.69,12.68,13.31,8.28,7.73] ; >> N=length(y);k=2; >> b=x\y;y_hat=x*b;r=y-y_hat;sse=r *r SSE = 9.2981 >> MSE=SSE/(N-k-1) MSE = 1.0331 Sitten syötetään matriisi T ja tarkistetaan se. >> m=6; >> I=eye(m); >> T=I([1,1,2,2,3,3,4,4,5,5,6,6],:); >> X1=X([1:2:12],:); >> norm(x-t*x1) ans = 0 Mallin II residuaali: >> R=eye(N)-T*inv(T *T)*T ; >> rii=r*y; Neliösummat: >> SSPE=rII *rii SSPE = 1.5230 >> SSLOF=SSE-SSPE SSLOF = 7.7750

8 LUKU 1. REGRESSIO Ja keskineliöt: >> MSPE=SSPE/(N-m) MSPE = 0.2538 >> MSLOF=SSLOF/(m-k-1) MSLOF = 2.5917 F-testisuure ja α: >> F=MSLOF/MSPE F = 10.2098 >> fcdf(f,m-k-1,n-m) ans = 0.9910 >> alpha=1-fcdf(f,m-k-1,n-m) alpha = 0.0090

1.5. MALLIN RIITTÄVYYS 9 1.5 Mallin riittävyys Järjestetään data uudelleen. >> N=12;k=2; >> x1=[0.3,0.3,0.7,0.7,0.3,0.3,0.7,0.7,0.3,0.3,0.7,0.7] ; >> x2=[1,1,1,1,5,5,5,5,9,9,9,9] ; >> y=[5.63,6.42,1.38,1.94,11.57,12.16,5.72,4.69,12.68,13.31,8.28,7.73] ; >> j=[12,9,3,10,4,7,2,11,8,6,1,5]; >> x1=x1(j);x2=x2(j);y=y(j); Sitten sovitetaan malli ja tarkistetaan ulkolaiset. >> X=[ones(size(x1)),x1,x2]; >> b=x\y;y_hat=x*b;r=y-y_hat;sse=r *r;mse=sse/(n-k-1); >> H=X*inv(X *X)*X ; >> e=1./sqrt(mse*(1-diag(h))).*r e = -0.6493-1.1032-0.2898-0.3668 0.3648 0.8227-0.6386-0.0063-0.2874 2.0100-1.5620 1.3741 Viimeiseksi tekstin kaltaiset kuvat saadaan näin. Normaalitodennäköisyyskuvio saadaan suoraan Statistics Toolboxin komennolla normplot. >> plot(y_hat,r) >> plot(y_hat,r, o ) >> plot(1:12,r, o )

10 LUKU 1. REGRESSIO

Luku 2 KOESUUNNITTELUT 2.1 Datan muunnokset Aluksi määrityksiä: >> x1=[0.3,0.3,0.7,0.7,0.3,0.3,0.7,0.7,0.3,0.3,0.7,0.7] ; >> x2=[1,1,1,1,5,5,5,5,9,9,9,9] ; >> y=[5.63,6.42,1.38,1.94,11.57,12.16,5.72,4.69,12.68,13.31,8.28,7.73] ; >> N=length(y);k=2; >> X=[ones(size(x1)),x1,x2]; >> D=X(:,2:3); Standardoinnin keskiarvo saadaan helposti komennolla mean ja otoshajonta komennolla std: >> p_s=std(d) p_s = 0.2089 3.4112 >> l_s=-mean(d)./p_s l_s = -2.3936-1.4658 >> L_s=[1,l_s ;zeros(k,1),diag(1./p_s)] L_s = 1.0000-2.3936-1.4658 0 4.7871 0 0 0 0.2932 Standardoidaan datamatriisi: 11

12 LUKU 2. KOESUUNNITTELUT >> X_s=X*L_s X_s = 1.0000-0.9574-1.1726 1.0000-0.9574-1.1726 1.0000 0.9574-1.1726 1.0000 0.9574-1.1726 1.0000-0.9574 0.0000 1.0000-0.9574 0.0000 1.0000 0.9574 0.0000 1.0000 0.9574 0.0000 1.0000-0.9574 1.1726 1.0000-0.9574 1.1726 1.0000 0.9574 1.1726 1.0000 0.9574 1.1726 Estimoidut parametrit ja niiden keskihajonnat: >> b_s=x_s\y b_s = 7.6258-2.7879 2.8388 >> C_s=inv(X_s *X_s) C_s = 0.0833 0.0000-0.0000 0.0000 0.0909-0.0000-0.0000-0.0000 0.0909 >> y_hat_s=x_s*b_s;r_s=y-y_hat_s;sse_s=r_s *r_s,s2_s=sse_s/(n-k-1) SSE_s = s2_s = 9.2981 1.0331 >> se_s=sqrt(diag(c_s)*s2_s) se_s = 0.2934 0.3065 0.3065 Koodattaessa komennot max ja min ovat käteviä: >> p_c=(max(d) -min(d) )/2 p_c = 0.2000 4.0000

2.1. DATAN MUUNNOKSET 13 >> l_c=-1./p_c.*(min(d) +max(d) )./2 l_c = -2.5000-1.2500 >> L_c=[1,l_c ;zeros(2,1),diag(1./p_c)] L_c = 1.0000-2.5000-1.2500 0 5.0000 0 0 0 0.2500 Koodataan datamatriisi: >> X_c=X*L_c X_c = 1.0000-1.0000-1.0000 1.0000-1.0000-1.0000 1.0000 1.0000-1.0000 1.0000 1.0000-1.0000 1.0000-1.0000 0 1.0000-1.0000 0 1.0000 1.0000 0 1.0000 1.0000 0 1.0000-1.0000 1.0000 1.0000-1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 Estimoidut parametrit ja niiden keskihajonnat: >> b_c=x_c\y b_c = 7.6258-2.6692 3.3287 >> C_c=inv(X_c *X_c) C_c = 0.0833 0.0000 0 0.0000 0.0833 0 0 0 0.1250 >> y_hat_c=x_c*b_c;r_c=y-y_hat_c;sse_c=r_c *r_c,s2_c=sse_c/(n-k-1) SSE_c = 9.2981 s2_c = 1.0331

14 LUKU 2. KOESUUNNITTELUT >> se_c=sqrt(diag(c_c)*s2_c) se_c = 0.2934 0.2934 0.3594

2.2. ORTOGONAALISUUS JA KIERTOSYMMETRISYYS 15 2.2 Ortogonaalisuus ja kiertosymmetrisyys Kerrataan vanhat määritykset: >> x1=[0.3,0.3,0.7,0.7,0.3,0.3,0.7,0.7,0.3,0.3,0.7,0.7] ; >> x2=[1,1,1,1,5,5,5,5,9,9,9,9] ; >> y=[5.63,6.42,1.38,1.94,11.57,12.16,5.72,4.69,12.68,13.31,8.28,7.73] ; >> N=length(y);k=2; >> X=[ones(size(x1)),x1,x2];D=X(:,2:3); >> p_s=std(d) ;l_s=-mean(d)./p_s;l_s=[1,l_s ;zeros(k,1),diag(1./p_s)];... X_s=X*L_s;D_s=X_s(:,2:3); >> p_c=(max(d) -min(d) )/2;l_c=-1./p_c.*(min(D) +max(d) )./2;... L_c=[1,l_c ;zeros(2,1),diag(1./p_c)];x_c=x*l_c;d_c=x_c(:,2:3); Ortogonaalisuuden tarkistus: >> X *X ans = 12.0000 6.0000 60.0000 6.0000 3.4800 30.0000 60.0000 30.0000 428.0000 >> X_s *X_s ans = 12.0000-0.0000 0.0000-0.0000 11.0000 0.0000 0.0000 0.0000 11.0000 >> X_c *X_c ans = 12.0000-0.0000 0-0.0000 12.0000 0 0 0 8.0000 Kiertosymmetrisyyden ensimmäinen ehto: >>e=ones(n,1); >> e *D ans = 6 60 >> e *D_s ans = 1.0e-14 *

16 LUKU 2. KOESUUNNITTELUT -0.1332 0.1776 >> e *D_c ans = 1.0e-14 * -0.1332 0 Kiertosymmetrisyyden toinen ehto: >> D_s *D_s ans = 11.0000 0.0000 0.0000 11.0000 >> D_c *D_c ans = 12 0 0 8

2.3. SIMPLEX-KOE 17 2.3 Simplex-koe Matlabilla Simplex-koe: >> k=3; >> W=[1,0,0,0;1,1,0,0;1,0,1,0;1,0,0,1] W = 1 0 0 0 1 1 0 0 1 0 1 0 1 0 0 1 QR-hajotelma onnistuu komennolla qr: >> [Q,R]=qr(W) Q = -0.5000 0.2887 0.4082-0.7071-0.5000-0.8660 0.0000-0.0000-0.5000 0.2887-0.8165-0.0000-0.5000 0.2887 0.4082 0.7071 R = -2.0000-0.5000-0.5000-0.5000 0-0.8660 0.2887 0.2887 0 0-0.8165 0.4082 0 0 0 0.7071 Lopullinen datamatriisi: >> X=-sqrt(k+1)*Q X = 1.0000-0.5774-0.8165 1.4142 1.0000 1.7321-0.0000 0.0000 1.0000-0.5774 1.6330 0.0000 1.0000-0.5774-0.8165-1.4142 Plackett-Burman-kokeen Hadamardin matriisin voi muodostaa suoraan käyttämällä Matlabin komentoa hadamard: >> k=9;n=24; >> H=hadamard(N); >> X=[ones(N,1),H(:,N/2+(1:k))] X = 1 1 1 1 1 1 1 1 1 1 1 1-1 1-1 1 1 1-1 -1 1 1-1 -1 1-1 1 1 1-1 1 1 1-1 -1 1-1 1 1 1 1 1-1 1-1 -1 1-1 1 1

18 LUKU 2. KOESUUNNITTELUT 1 1-1 -1 1-1 -1 1-1 1 1 1-1 -1-1 1-1 -1 1-1 1 1 1-1 -1-1 1-1 -1 1 1 1 1 1-1 -1-1 1-1 -1 1 1 1 1 1-1 -1-1 1-1 1 1-1 1 1 1-1 -1-1 1 1 1 1-1 1 1 1-1 -1-1 1-1 -1-1 -1-1 -1-1 -1-1 1-1 1-1 1-1 -1-1 1 1 1-1 1 1-1 1-1 -1-1 1 1-1 -1 1 1-1 1-1 -1-1 1-1 1-1 1 1-1 1-1 -1 1-1 1 1-1 1 1-1 1-1 1-1 1 1 1-1 1 1-1 1 1-1 -1 1 1 1-1 1 1-1 1-1 -1-1 1 1 1-1 1 1 1-1 -1-1 -1 1 1 1-1 1 1-1 1-1 -1-1 1 1 1-1 1-1 -1 1-1 -1-1 1 1 1

2.4. KAHDEN TASON KOKEET 19 2.4 Kahden tason kokeet Matlabilla kaikki mahdolliset arvot faktoreille x 1, x 2 ja x 3 saadaan Statistics Toolboxin funktiosta ff2n. >> f=2*ff2n(3)-1; f = -1-1 -1-1 -1 1-1 1-1 -1 1 1 1-1 -1 1-1 1 1 1-1 1 1 1 Sitten datamatriisissa astetetaan x 4 = x 1 x 2 ja x 5 = x 1 x 3 : >> X=[ones(8,1) f f(:,1).*f(:,2) f(:,1).*f(:,3)] X = 1-1 -1-1 1 1 1-1 -1 1 1-1 1-1 1-1 -1 1 1-1 1 1-1 -1 1 1-1 -1-1 -1 1 1-1 1-1 1 1 1 1-1 1-1 1 1 1 1 1 1

20 LUKU 2. KOESUUNNITTELUT 2.5 Toisen kertaluvun regressiomalli Ei laskettu Matlabilla. 2.6 CCD-kokeet Suunnittelun 2. kertaluvun datamatriisin luonti Matlabilla. >> k=2;f=2ˆk; >> alpha=fˆ(1/4); >> n0=4-2*k+4*sqrt(f) n0 = 8 >> N=f+2*k+n0 N = 16 >> S=sqrt(1/N*(f+2*alphaˆ2)); >> x=1/s*[2*ff2n(k)-1;alpha*eye(k);-alpha*eye(k);zeros(n0,2)]; >> X=[ones(N,1) x x.ˆ2 x(:,1).*x(:,2)] X = 1.0000-1.4142-1.4142 2.0000 2.0000 2.0000 1.0000-1.4142 1.4142 2.0000 2.0000-2.0000 1.0000 1.4142-1.4142 2.0000 2.0000-2.0000 1.0000 1.4142 1.4142 2.0000 2.0000 2.0000 1.0000 2.0000 0 4.0000 0 0 1.0000 0 2.0000 0 4.0000 0 1.0000-2.0000 0 4.0000 0 0 1.0000 0-2.0000 0 4.0000 0 1.0000 0 0 0 0 0 1.0000 0 0 0 0 0 1.0000 0 0 0 0 0 1.0000 0 0 0 0 0 1.0000 0 0 0 0 0 1.0000 0 0 0 0 0 1.0000 0 0 0 0 0 1.0000 0 0 0 0 0 Data on nyt kiertosymmetristä jaortogonaalista kuten momenttimatriisista käy ilmi. >> 1/N*X *X ans = 1.0000 0 0 1.0000 1.0000 0 0 1.0000 0.0000 0 0.0000 0.0000

2.7. OPTIMAALISET KOKEET 21 0 0.0000 1.0000 0.0000 0 0.0000 1.0000 0 0.0000 3.0000 1.0000 0.0000 1.0000 0.0000 0 1.0000 3.0000 0.0000 0 0.0000 0.0000 0.0000 0.0000 1.0000 Seuraavalla scriptillä saadaan tekstissä ollut kuva, jossa näkyvät ennusteen varianssi origontoistojen määrään ja datavektorin ensimmäisen kertaluvun osan pituuden funktiona. k=2; f=2ˆk; alpha=fˆ(1/4); NvarYhat=[]; for n0=1:8 N=f+2*k+n0; S=sqrt((f+2*alphaˆ2)/N); x=[(2*ff2n(2)-1)/s;alpha*eye(2)/s;-alpha*eye(k)/s;zeros(n0,2)]; X=[ones(N,1) x x.ˆ2 x(:,1).*x(:,2)]; C=inv(X *X); npts=21; x1=0; x2=linspace(0,1.1,npts) ; [X1,X2]=meshgrid(x1,x2); e=ones(size(x1)); XI=[e X1(:) X2(:) X1(:).ˆ2 X2(:).ˆ2 X1(:).*X2(:)] ; NvarYhat(:,n0)=N*diag(XI *C*XI); end plot(x2,nvaryhat, b-, linewidth,2) set(gca, tickdir, out, PlotBoxAspectRatio,[8 5 1],... ytick,0:9, yticklabel,[ 0 ; ; ; ; ; ; ; ; ; 9 ],... xtick,0:1, fontname, Times, fontsize,14, position,[.2.11.7.8]) box off axis([0 1.1 0 9.2]) text(0.1,9.1, {\it n}_0=1, fontname, Times, fontsize,16) text(0.1,5.1, {\it n}_0=2, fontname, Times, fontsize,16) text(0.1,3.8, {\it n}_0=3, fontname, Times, fontsize,16) text(0.1,1.7, {\it n}_0=8, fontname, Times, fontsize,16) xlabel( ({\it \xi}_1ˆ2+{\it \xi}_2ˆ2)ˆ{1/2}, fontname, Times, fontsize,18) ylabel([ {\it N} Var({\it y}) ; {\it \sigma }ˆ{2} ],... fontname, Times, fontsize,18,... rotation,0, horizontalalignment, right ); 2.7 Optimaaliset kokeet Ei laskettu Matlabilla.

22 LUKU 2. KOESUUNNITTELUT

Luku 3 VASTEEN OPTIMOINTI 3.1 Gradienttimenetelmä Matlabilla ensimmäinen askel suoritetaan seuraavasti. Ensin suunnitellaan täydellinen kahden tason koe. >> f=2*ff2n(2)-1;x1=f(:,1),x2=f(:,2) X1 = X2 = -1-1 1 1-1 1-1 1 Palautetaan arvot koodatuista, jotta pystymme suorittamaan kokeet. >> x1=(90-70)*x1/2+80,x2=(90-30)*x2/2+60 x1 = x2 = 70 70 90 90 30 90 30 90 Kokeet suoritetaan 2 kertaa(satunnaisessa järjestyksessä), ja vasteen arvot syötetään sisään. 23

24 LUKU 3. VASTEEN OPTIMOINTI >> j=[1,1,2,2,3,3,4,4]; >> kokeet=[x1(j),x2(j)] kokeet = 70 30 70 30 70 90 70 90 90 30 90 30 90 90 90 90 >> y=[49.8,48.1,65.7,69.4,57.3,52.3,73.1,77.8] y = 49.8000 48.1000 65.7000 69.4000 57.3000 52.3000 73.1000 77.8000 Sitten sovitetaan 1. kertaluvun malli. >> N=8;k=2; >> X=[ones(N,1),X1(j),X2(j)] X = 1-1 -1 1-1 -1 1-1 1 1-1 1 1 1-1 1 1-1 1 1 1 1 1 1 >> C=inv(X *X);b=X\y b = 61.6875 3.4375 9.8125 Testataan mallin epäsopivuus toistokokein. >> y_hat=x*b;r=y-y_hat; >> SSE=r *r,mse=sse/(n-k-1),df=n-k-1 SSE = 33.9363

3.1. GRADIENTTIMENETELMÄ 25 MSE = df = 6.7873 5 >> m=4;i=eye(2ˆk);t=[i(j,:)]; >> R=eye(N)-T*inv(T *T)*T ;rii=r*y; >> SSPE=rII *rii,mspe=sspe/(n-m),df=n-m SSPE = MSPE = df = 31.8350 7.9588 4 >> SSLOF=SSE-SSPE,MSLOF=SSLOF/(m-k-1),df=m-k-1 SSLOF = MSLOF = df = 2.1012 2.1012 1 >> F=MSLOF/MSPE F = 0.2640 >> alpha=1-fcdf(f,m-k-1,n-m) alpha = 0.6345 Seuraavaksi varianssianalyysi. >> M=eye(N)-1/N*ones(N); >> SSR=y_hat *M*y_hat,MSR=SSR/k,df=k SSR = 864.8125

26 LUKU 3. VASTEEN OPTIMOINTI MSR = 432.4063 df = 2 >> SST=SSE+SSR,MST=SST/(N-1),df=N-1 SST = 898.7488 MST = 128.3927 df = 7 >> F=MSR/MSE F = 63.7086 >> alpha=1-fcdf(f,k,n-k-1) alpha = 2.7705e-04 Faktorien tarpeellisuustestit. >> t1=(b(2)-0)/sqrt(mse*c(2,2)) t1 = 3.7320 >> alpha=2*(1-tcdf(t1,n-k-1)) alpha = 0.0135 >> t2=(b(3)-0)/sqrt(mse*c(3,3)) t2 = 10.6531 >> alpha=2*(1-tcdf(t2,n-k-1)) alpha = 1.2611e-04 Sitten lasketaan viettosuunta ja valitaan askelpituus.

3.1. GRADIENTTIMENETELMÄ 27 >> n=1/norm(b(2:3))*b(2:3) n = 0.3306 0.9438 >> delta=1.5/n(2) delta = 1.5894 Lasketaan suoritettavia kokeita. >> i=[1:4]; x1=80+10*i*n(1)*delta, x2=60+30*i*n(2)*delta x1 = x2 = 85.2548 90.5096 95.7643 101.0191 105.0000 150.0000 195.0000 240.0000 Viimeiseksi suunnitellaan seuraavan vaiheen kokeet. >> f=2*ff2n(2)-1;x1=[f(:,1);0;0],x2=[f(:,2);0;0] X1 = X2 = -1-1 1 1 0 0-1 1-1 1 0 0 >> x1=(105.9-85.9)*x1/2+95.9,x2=(225-165)*x2/2+195 x1 = 85.9000 85.9000 105.9000 105.9000 95.9000 95.9000 x2 = 165 225

28 LUKU 3. VASTEEN OPTIMOINTI 165 225 195 195

3.2. ÄÄRIARVOTARKASTELU 29 3.2 Ääriarvotarkastelu Suunnitellaan kokeet ja sovitetaan ensimmäisen kertaluvun malli. >> f=2*ff2n(2)-1;x1=[f(:,1);0;0];x2=[f(:,2);0;0]; >> x1=(145.9-125.9)*x1/2+135.9,x2=(218.1-171.9)*x2/2+195 x1 = 125.9000 125.9000 145.9000 145.9000 135.9000 135.9000 x2 = 171.9000 218.1000 171.9000 218.1000 195.0000 195.0000 >> y=[93.6,91.7,92.5,92.9,96.2,97.0] ; >> N=length(x1);k=2; >> X=[ones(size(X1)),X1,X2]; >> b=x\y b = 93.9833 0.0250-0.3750 Epäsopivuuden testaus toistokokein. >> y_hat=x*b;r=y-y_hat; >> SSE=r *r,mse=sse/(n-k-1),df=n-k-1 SSE = MSE = df = 22.1833 7.3944 3 >> m=5;i=eye(m);t=[i([1,2,3,4,5,5],:)]; >> R=eye(N)-T*inv(T *T)*T ;rii=r*y;

30 LUKU 3. VASTEEN OPTIMOINTI >> SSPE=rII *rii,mspe=sspe/(n-m),df=n-m SSPE = 0.3200 MSPE = 0.3200 df = 1 >> SSLOF=SSE-SSPE,MSLOF=SSLOF/(m-k-1),df=m-k-1 SSLOF = 21.8633 MSLOF = 10.9317 df = 2 >> F=MSLOF/MSPE F = 34.1615 >> alpha=1-fcdf(f,m-k-1,n-m) alpha = 0.1201 Varianssianalyysi. >> M=eye(N)-1/N*ones(N); >> SSR=y_hat *M*y_hat,MSR=SSR/k,df=k SSR = 0.5650 MSR = 0.2825 df = 2 >> SST=SSE+SSR,MST=SST/(N-1),df=N-1 SST =

3.2. ÄÄRIARVOTARKASTELU 31 MST = df = 22.7483 4.5497 5 >> F=MSR/MSE F = 0.0382 >> alpha=1-fcdf(f,k,n-k-1) alpha = 0.9630 Lisäkokeet. >> X1l=[-sqrt(2);sqrt(2);0;0];X2l=[0;0;-sqrt(2);sqrt(2)]; >> x1l=(145.9-125.9)*x1l/2+135.9,x2l=(218.1-171.9)*x2l/2+195 x1l = 121.7579 150.0421 135.9000 135.9000 x2l = 195.0000 195.0000 162.3317 227.6683 >> yl=[92.7;92.8;93.4;92.7]; Toisen asteen mallin sovitus. >> X1=[X1;X1l];X2=[X2;X2l];y=[y;yl]; >> N=length(X1);k=5; >> X=[ones(size(X1)),X1,X2,X1.ˆ2,X2.ˆ2,X1.*X2]; >> b=x\y b = 96.6000 0.0302-0.3112-1.9813

32 LUKU 3. VASTEEN OPTIMOINTI -1.8313 0.5750 Mallin epäsopivuuden testaus. >> y_hat=x*b;r=y-y_hat; >> SSE=r *r,mse=sse/(n-k-1),df=n-k-1 SSE = MSE = df = 0.4540 0.1135 4 >> m=9;i=eye(m);t=[i([1,2,3,4,5,5,6,7,8,9],:)]; >> R=eye(N)-T*inv(T *T)*T ;rii=r*y; >> SSPE=rII *rii,mspe=sspe/(n-m),df=n-m SSPE = MSPE = df = 0.3200 0.3200 1 >> SSLOF=SSE-SSPE,MSLOF=SSLOF/(m-k-1),df=m-k-1 SSLOF = MSLOF = df = 0.1340 0.0447 3 >> F=MSLOF/MSPE F = 0.1396 >> alpha=1-fcdf(f,m-k-1,n-m) alpha =

3.2. ÄÄRIARVOTARKASTELU 33 0.9247 Varianssianalyysi. >> M=eye(N)-1/N*ones(N); >> SSR=y_hat *M*y_hat,MSR=SSR/k,df=k SSR = MSR = df = 25.4510 5.0902 5 >> SST=SSE+SSR,MST=SST/(N-1),df=N-1 SST = MST = df = 25.9050 2.8783 9 >> F=MSR/MSE F = 44.8492 >> alpha=1-fcdf(f,k,n-k-1) alpha = 0.0013 Malli uuteen muotoon. >> E=[b(4),1/2*b(6);1/2*b(6),b(5)],b=b(1:3) E = b = -1.9813 0.2875 0.2875-1.8313 96.6000 0.0302-0.3112

34 LUKU 3. VASTEEN OPTIMOINTI Kriittinen piste löytyy gradientin nollakohdasta, sen laatu nähdään E:n ominaisarvoista. >> z=-1/2*inv(e)*b(2:3) z = -0.0048-0.0857 >> eig(e) ans = -2.2034-1.6091 Kun puretaan koodaus, nähdään alkuperäisten faktorien tasot. Lasketaan myös maksimivaste. >> x1=(145.9-125.9)*z(1)/2+135.9,x2=(218.1-171.9)*z(2)/2+195 x1 = x2 = 135.8517 193.0194 >> y0=[1,z ]*b+z *E*z y0 = 96.6133 Kanonista muotoa varten tarvittava Schurin hajotelma saadaan Matlabin komennolla schur. >> [Q,LAMBDA]=schur(E) Q = -0.7913-0.6114 0.6114-0.7913 LAMBDA = -2.2034 0 0-1.6091 Tekstissäollut kuva piirretään seuraavalla scriptillä(alussa on toistettu jo lasketut laskut). f=2*ff2n(2)-1; X1=[f(:,1);0;0]; X2=[f(:,2);0;0]; y=[93.6,91.7,92.5,92.9,96.2,97.0] ; X1l=[-sqrt(2);sqrt(2);0;0]; X2l=[0;0;-sqrt(2);sqrt(2)];

3.2. ÄÄRIARVOTARKASTELU 35 yl=[92.7;92.8;93.4;92.7]; X1=[X1;X1l]; X2=[X2;X2l]; y=[y;yl]; N=length(X1); k=5; X=[ones(size(X1)),X1,X2,X1.ˆ2,X2.ˆ2,X1.*X2]; b=x\y; E=[b(4),1/2*b(6);1/2*b(6),b(5)]; bb=b(1:3); z=-1/2*inv(e)*bb(2:3); y0=[1,z ]*bb+z *E*z; [Q,LAMBDA]=schur(E); [xx_1,xx_2]=meshgrid(-2.0:0.05:2.0,-2.0:0.05:2.0); XX=[ones(size(xx_1(:))) xx_1(:) xx_2(:) xx_1(:).ˆ2 xx_2(:).ˆ2 xx_1(:).*xx_2(:)]; Y=reshape(XX*b,size(xx_1)); clf [C,H]=contour(xx_1,xx_2,Y,[78:3:96], b ); set(gca, PlotBoxAspectRatio,[1,1,1], XTick,[-2,-1,0,1,2], YTick,[-2,-1,0,1,2],... tickdir, out, fontname, Times, fontsize,16, linewidth,1); set(h, LineWidth,2); xlabel( {\it X}_1, fontname, Times, fontsize,20); ylabel( {\it X}_2, Rotation,0, fontname, Times, fontsize,20); hold on;plot(z(1),z(2), rx, markersize,12); hold on;plot(x1,x2, ko, markerfacecolor, k, markersize,12); q1=10*q(:,1);q2=10*q(:,2); q1x=[z(1)+q1(1),z(1)-q1(1)];q1y=[z(2)+q1(2),z(2)-q1(2)]; q2x=[z(1)+q2(1),z(1)-q2(1)];q2y=[z(2)+q2(2),z(2)-q2(2)]; hold on;plot(q1x,q1y, r--,q2x,q2y, r--, linewidth,2); box off HL=clabel(C,H, manual ); for i=1:length(hl),set(hl(i), fontsize,14, fontname, times );end

36 LUKU 3. VASTEEN OPTIMOINTI 3.3 Harjuanalyysi Matlabilla laskut menevät seuraavasti. >> b_breve=[0.93;0.38]; >> E=-1*[0.96,0.21;0.21,0.04]; >> d0=[0;0]; E:n kääntyvyys ja kriittinen piste. >> det(e) ans = -0.0057 >> z=-1/2*inv(e)*b_breve z = 3.7368-14.8684 Schurin hajotelma ja vektori p. >> [Q,LAMBDA]=schur(E) Q = -0.9772 0.2125-0.2125-0.9772 LAMBDA = -1.0057 0 0 0.0057 >> p=q *(-1/2*b_breve-E*d0) p = 0.4948 0.0868 Kuvan piirtäminen sujuu pääpiirteittäin näin. >> mu=linspace(0.01,0.5); >> r_inv=1./sqrt((lambda(1,1)-mu).ˆ(-2)*p(1)ˆ2+... (LAMBDA(2,2)-mu).ˆ(-2)*p(2)ˆ2); >> plot(mu,r_inv) Lasketaan vielä tarkemmat µ i :n arvot Matlabin komennolla fzero.ensin määritellään funktio, jolla on nollakohta paikassa, missä d i d 0 = i.

3.3. HARJUANALYYSI 37 >> f=inline(... 1./sqrt((lambda1-mu).ˆ(-2)*p1ˆ2+(lambda2-mu).ˆ(-2)*p2ˆ2)-r,... mu, lambda1, lambda2, p1, p2, r_inv ) f = Inline function: f(mu,lambda1,lambda2,p1,p2,r_inv) = 1./sqrt((lambda1-mu).ˆ(-2)*p1ˆ2 +(lambda2-mu).ˆ(-2)*p2ˆ2)-r_inv Laitetaan turha varoitus pois päältä, jonka jälkeen saadaan tarkemmat µ i :n arvot. fzero:n parametrit ovat järjestyksessä funktio, lähellä nollakohtaa oleva piste, tarkkuusehdot sisältävä matriisi (tässä tyhjä, eli käytetään oletuksia) ja loput f:n parametreista. >> warning off MATLAB:fzero:UndeterminedSyntax >> mu1=fzero(f,0.28,[],lambda(1,1),lambda(2,2),p(1),p(2),2) mu1 = 0.2783 >> mu2=fzero(f,0.10,[],lambda(1,1),lambda(2,2),p(1),p(2),1) mu2 = 0.1027 Lasketaan pisteet. >> d1=d0+inv(e-mu1*eye(2))*(-1/2*b_breve-e*d0) d1 = 0.3088 0.3932 >> d2=d0+inv(e-mu2*eye(2))*(-1/2*b_breve-e*d0) d2 = 0.2460 0.9693 Tarkastetaan vielä, että pisteet todella ovat halutulla etäisyydellä d 0 :sta. >> norm(d1-d0) ans = 0.5000 >> norm(d2-d0) ans = 1.0000 Lopulta tekstin mukavat kuvat tulostuvat suunnilleen seuraavalla scriptillä:

38 LUKU 3. VASTEEN OPTIMOINTI [X,Y]=meshgrid(-2:0.05:2,-2:0.05:2);%lasketaan vastepinnan arvoja Z=zeros(size(X)); for i=1:size(x,1), for j=1:size(x,2), d=[x(i,j);y(i,j)]; Z(i,j)=b_breve *d+d *E*d; end end r1=0.5; %lasketaan ympyrät x11=[-r1:0.01:r1] ;x12=[r1:-0.01:-r1] ;x1=[x11;x12]; y1=[sqrt(r1ˆ2-x11.ˆ2);-sqrt(r1ˆ2-x12.ˆ2)]; r2=1; x21=[-r2:0.01:r2] ;x22=[r2:-0.01:-r2] ;x2=[x21;x22]; y2=[sqrt(r2ˆ2-x21.ˆ2);-sqrt(r2ˆ2-x22.ˆ2)]; figure;[c,h]=contour(x,y,z);box off;%tasa-arvokäyräkuva set(gca, PlotBoxAspectRatio,[1,1,1], XTick,[-2:0.5:2], YTick,[-2:0.5:2],... tickdir, out, fontname, Times, fontsize,14, linewidth,1); set(h, LineWidth,2); hold on;plot(x1,y1, k, linewidth,2); hold on;plot(x2,y2, k, linewidth,2); xlabel( X_1, fontname, Times, fontsize,16); ylabel( X_2, Rotation,0, fontname, Times, fontsize,16); plot( [d0(1),d1(1),d2(1)],[d0(1),d1(2),d2(2)], ko,... markerfacecolor, k, markersize,9); figure;surfc(x,y,z);shading interp;hold on; %3dkuva plot3([d0(1),d1(1),d2(1)],[d0(1),d1(2),d2(2)],... [0,d1 *b_breve+d1 *E*d1,d2 *b_breve+d2 *E*d2], ko,... markerfacecolor, k, markersize,9); set(gca, PlotBoxAspectRatio,[1,1,1], XTick,[-2:1:2], YTick,[-2:1:2],... tickdir, out, fontname, Times, fontsize,14, linewidth,1); xlabel( X_1, fontname, Times, fontsize,16); ylabel( X_2, Rotation,0, fontname, Times, fontsize,16);