• Tidak ada hasil yang ditemukan

V. KESIMPULAN DAN SARAN

5.2 Saran

Manfaat model GAMMI tidak terbatas pada masalah pemuliaan tanaman. Model-model peluang pada tabel dua arah secara umum dapat kita jumpai pada masalah-masalah kesehatan (epidemiologi), riset pemasaran, ataupun pada bidang keteknikan. Penerapan model bilinier terampat ini diharapkan membuka peluang pengembangan lebih lanjut.

52

DAFTAR PUSTAKA

Aunuddin, 2005. Statistika: Rancangan dan Analisis. IPB Press, Bogor.

Bartlet, M. S. 1949. Fitting A Straitght Line When Both Variables Are Subject To Error. Biometrics, 5:207-212.

Box, G. E. P, Hunter, W. G, & Hunter J. S. 1978. Statistics for Experimenters: An Introduction to Design, Data Analysis, and Model Building. John Wiley & Sons, Inc. Canada.

Crossa, J. 1990. Statistical Analysis for Multilocation Trials. Advance in Agronomy, 44: 55-85.

Digby, P.G.N. & Kempton, R.A. 1987. Multivariate Analysis of Ecological

Communities. Chapman & Hall, London.

Falguerolles, de A, 1996. Generalized Linear-Bilinear Models. An Abstract. Society of Computational Economics. 2nd International Conference on Computing and Finance. Genewa, Switzerland, 26–28 June 1996. http://www.unige.ch/ce/ce96/defalgue/defalgue.htm. [14 Juli 2005]

Gabriel, K. R., 1998, Generalised Bilinear Regression. Biometrika. 85 (3):689- 700.

Greenacre, M. J. 1984. Theory and Apllications of Correspondence Analysis. Academic Press. London.

Jolliffe, I T. 1986. Principal Component Analysis. Springer-Verlag. New York Lawes Agricultural Trust, 2003. The Guide to GenStat® Release 7.1 Part 2:

Statistics. VSN International, Wilkinson House, Jordan Hill Road, Oxford, UK.

Mattjik A. A. & Sumertajaya I. M. 2002. Perancangan Percobaan dengan Aplikasi SAS dan MINITAB. 2nd Ed. IPB Press. Bogor.

Mattjik A. A., 2005. Interaksi Genotipe dan Lingkungan dalam Penyediaan Suumberdaya Unggul. Naskah Orasi Ilmiah Guru Besar Biometrika. Fakultas Matematika dan Ilmu Pengetahuan Alam Institut Pertanian Bogor. Bogor.

McCullagh, P. and Nelder, J. A. 1989. Generalized Linear Models. 2nd ed. Chapman and Hall, London.

Rawling, J.O. Pantula S. G. & Dicky D. A, 1998. Applied Refression Analysis: A Research Tools. 2nd Ed. Sringer-Verlag, New York.

Sumertajaya, I M. 1998. Perbandingan Model AMMI dan Regresi Linier untuk Menerangkan Pengaruh Interaksi Percobaan Lokasi Ganda. Tesis. Program Studi Statistika Sekolah Pascasarjana IPB, Bogor

Tengkano, W & Soehardjan, M, 1993. Jenis Hama Utama pada Berbagai Fase Pertumbuhan Tanaman Kedelai, dalam S. Somaatmadja et al (eds.) Kedelai. Pusat Penelitian dan Pengembangan Tanaman Pangan. Bogor Van Eeuwijk, F A, 1995. Multiplicative Interaction in Generalized Linear

Lampiran

Lampiran 1. Data pengamatan populasi hama daun kedelai pada umur 14 hari setelah tanam

Hama Daun Genotipe Ulangan

Bemissia Emproosca Agomyza Lamprosema Longitarsaus

IAC-100 1 0 2 1 1 0 2 1 2 2 1 2 3 1 2 4 0 2 4 0 1 2 0 3 Rataan IAC-100 0.5 1.75 2.25 0.5 1.75 IAC-80 1 4 5 2 3 4 2 2 3 1 2 3 3 2 2 1 1 2 4 4 1 0 1 4 Rataan IAC-80 3 2.75 1 1.75 3.25 W/80 1 3 6 2 1 3 2 3 4 1 3 2 3 2 3 1 2 2 4 6 3 1 2 1 Rataan W/80 3.5 4 1.25 2 2 Wilis 1 6 3 0 2 4 2 5 3 0 3 4 3 1 3 2 1 5 4 4 3 2 1 3 Rataan Wilis 4 3 1 1.75 4

Lampiran 2. Nilai lambda dugaan dan log-likelihood transformasi Box-Cox data populasi hama daun

lambda Box-Cox Likelihood 1 -0.99 -22.22 2 -0.44 -16.28 3 0.11 -12.77 4 0.66 -11.67 5 1.21 -12.57 6 1.76 -14.95 7 2.31 -18.37 8 2.86 -22.53 9 3.41 -27.25 10 3.96 -32.41 11 4.50 -37.90 12 5.05 -43.68 13 5.60 -49.68 14 6.15 -55.87 15 6.70 -62.23 16 7.25 -68.72 17 7.80 -75.32 18 8.35 -82.03 19 8.90 -88.83 20 9.45 -95.70 21 10.00 -102.64

56

Lampiran

Lampiran 3. Plot sisaan model AMMI 2 data populasi hama daun ternormalkan.

Standardized residuals

-1.5

2.0 -2.0

Half -Normal plot

0.0 0.5 1.0 1.5 -2.0 2.0 -1.0 0.0 1.0 2.0 0.00 0.5 0.25 -0.5 0.50 -1.5 0.75 Normal plot 1.00 -0.5 1.25 0.5 1.50 1.5 1.75 0 2 4 6 1.5 2.0 -0.5 1.5 1.5 1.0 0.5 0.0 0.0 -0.5 -2.0 -1.0 0.0 -1.5 2.0 -2.0 1 5 -1.5 1.0 -1.0 2.002.252.50 7 1.75 1.50 0.5 1.25 -1.0 1.00 0.75 Fitted values 3 1.0 S ta n d a rd iz e d r e s id u a ls S ta n d a rd iz e d r e s id u a ls az az

Lampiran 4. Nilai lambda dugaan dan log-likelihood transformasi Box-Cox data proporsi gabah isi

lambda Box-Cox Likelihood 1 -0.99 150.29 2 -0.44 151.70 3 0.11 152.99 4 0.66 154.16 5 1.21 155.21 6 1.76 156.16 7 2.31 157.01 8 2.86 157.75 9 3.41 158.41 10 3.96 158.97 11 4.50 159.45 12 5.05 159.85 13 5.60 160.18 14 6.15 160.43 15 6.70 160.61 16 7.25 160.73 17 7.80 160.79 18 8.35 160.78 19 8.90 160.73 20 9.45 160.61 21 10.00 160.45

Lampiran

Lampiran 5. Diagnostik sisaan AMMI data gabah isi ternormalkan

-2 Standardized residuals 3.0 2 2.0 1 1.0 0 0.0 -1 -2 -3 2.0 1.0 0.0 1 -1 0.8 -3 0.7 0.6 0.5 0.4 2 0.3 0 0.2 Normal plot 0.1 Fitted values 1.5 -2 0.5 2.5 0.5 20 15 0 10 -3 5 0 1 1.5 -2 3 2 2 -1 2.5 Half-Normal plot 1 0 -1 S ta n d a rd iz e d r e s id u a ls S ta n d a rd iz e d r e s id u a ls pz pz

Lampiran 6. Biplot AMMI1: KUI1 vs rataan proporsi gabah isi ternormalkan

0.3 0.4 0.5 0.6 0.7 -0.4 -0.3 -0.2 -0.1 0.0 0.1 0.2 0.3 0.4 0.5

Gabah Isi Padi

KU I1 A B C D E F G H J K L M Jatibaru Maranu Maroangin Paritdalam Talang

58

Lampiran

Lampiran 7. Biplot AMMI1: KUI1 vs rataan populasi hama daun ternormalkan

1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0

-1 0 1

Populasi Hama Daun

KU I1 IAC-100 IAC-80 W/80 Wilis Bemissia Emproasca Agromyza Lamprosema Longitarsus

Lampiran 8. Karakteristik distribusi data hama daun

3.5 2.5 1.5 0.5 Variable: a Maximum 3rd Quartile Median 1st Quartile Minimum N Kurtosis Skewness Variance StDev Mean 4.00000 3.18750 2.00000 1.37500 0.50000 20 -1.05533 0.153511 1.28947 1.13555 2.25000

Descriptive Statistics

Lampiran 9. Contoh perintah GENSTAT untuk transformasi Box-Cox

YTRANSFORM [transform=powe;method=boxc;lower=- 0.99;upper=10]y=gbhisi;nbin=nY;\ save=bxc print bxc[1, 2, 3, 4]; variate Z calc Z=gbhisi**1.21

normtest [print=marg, critical]data=Z print Y, Z

Lampiran

Lampiran 10. Prosedur GAMMI pada GENSTAT 7 \next procedure

PROCEDURE 'GAMMI'

" Performs a generalized linear additive main effects and multiplicative interaction model analysis for row-by-COLUMN data; FAE 1/1/93"

" with compliments to scaffold RJOINT of PWL by PK 1/4/93" " all rights reserved by F.A. van Eeuwijk & L.C.P. Keizer" " CPRO-DLO Wageningen 30-MAY-1996 test version"

" Updated for full parameter names by LCPK 17/5/2005" " Updated for full model by AFHADI 21/8/2005"

" Other procedures used; RCHECK" OPTION \

'PRINT', "I: strings (model,summary,diagnostics,biplots,monitoring); output from procedure; default m,s,d,b"\

'DISTRIBUTION', "I:string (normal,poisson,binomial,gamma,

inversenormal);distribution for response;default n"\

'LINK', "I: string (canonical,identity,log,logit,reciprocal, power,squareroot,probit,complementaryloglog);

link function; default canonical"\

'EXPONENT', "I: scalar; exponent for power link; default -2"\ 'DISPERSION', "I: scalar; dispersion parameter; default * for DISTRIBUTION=n,g,i or 1 for DISTRIBUTION=p,b"\ 'WEIGHTS', "I: variate; holding the weights for each unit"\ 'AXES', "I: scalar; number of multiplicative axes to be used"\ 'MAINEFFECTS', "I: text; substract ROW and/or COLUMN main

effects before adding multiplicative terms"\ 'COVA_IMPL', "I: string; cova implemented before or after main effect or used for redundancy analysis"\

'TOLERANCE', "I: scalar; the convergence criterion; default 0.00001"\ 'SEED', "I: scalar; to initialize the COLUMN scores"\

'MAXCYCLE'; "I: scalar; maximum number of cycles; default 15"\ MODE =t,t,t,v,p,p,p,t,t,v,v,v;\ NVALUES =*,1,1,1,1,*,1,*,*,1,1,1;\ SET =n,y,y,y,n,n,y,y,y,y,y,y;\ VALUES =!t(MODEL,SUMMARY,DIAGNOSTICS,BIPLOTS,MONITORING),\ !t(NORMAL,POISSON,BINOMIAL,GAMMA,INVERSENORMAL),\ !t(CANONICAL,IDENTITY,LOGARITHM,LOGIT,RECIPROCAL,POWER,\ SQUAREROOT,PROBIT,COMPLEMENT),\ *,*,*,*,\ !t(ROW,COLUMN,BOTH,NONE),\ !t(BEFORE,AFTER,REDUNDANCY),\ *,*,*;\ DEFAULT =!t(MODEL,SUMMARY,DIAGNOSTICS,BIPLOTS),\ 'NORMAL','CANONICAL',-2,*,*,2,!t(BOTH),'AFTER',\ 0.00001,13132,15;\ LIST =y,(n)11 PARAMETER \

'Y', "I: variate; variate to be analysed; no default"\ 'NBINOMIAL', "I: variate; variate of binomial totals;

no default for DISTRIBUTION=b"\ 'ROW', "I: factor; the row factor; no default"\ 'COLUMN', "I: factor; the COLUMN factor; no default"\

'COVARIATES', "I: pointer of variates; associated with the row factor"\ 'COVATYPE',"I: pointer of ROW or COL dummies; covas are associated with"\ 'ROWPARAMS', "O: pointer; to store estimates of the ROW means"\

'COLPARAMS', "O: pointer; to store estimates of the COLUMN means"\ 'FITTEDVALUES', "O: variate; to store fitted values"\

'RESIDUALS', "O: variate; to store residuals"\

'DELRESIDUALS', "O: variate; to store deletion residuals"\

'COOK', "O: variate; to store modified Cook's statistics"\ 'LEVERAGE', "O: variate; to store leverage values"\

'WORKVARIATE', "O: variate; to store working variate"\ 'LINEARPREDICT',"O: variate; to store linear predictor"\

60

Lampiran

'BIPLOT'; "O: pointer; to store R&C+R+C biplots sigma scaled"\ SET =y,n,y,y,n,n,n,n,n,n,n,n,n,n,n,n;\

DECLARED =y,y,y,y,n,n,n,n,n,n,n,n,n,n,n,n;\ PRESENT =y,y,y,y,n,n,n,n,n,n,n,n,n,n,n,n;\

TYPE =2('VARIATE','FACTOR'),'POINTER','POINTER',\ 2('POINTER'),7('VARIATE'),'POINTER'

TEXT e; VALUES='FAULT message from procedure gammi: ' TEXT w; VALUES='WARNING message from procedure gammi: '

"**********************************************************************" " Deal with DISPERSION option "

"prin [ipri=*;squa=y] 'check dispersion'" IF UNSET(DISPERSION) " Option not set " IF DISTRIBUTION.IN.!t(BINOMIAL,POISSON) SCAL [VALUE=1] disp

ELSE

SCAL [VALUE=*] disp ENDI

ELSE

IF DISPERSION>0 " Option set positive " SCAL [VALU=DISPERSION] disp

ELSI DISPERSION==CONS('*') " Option set to * " SCAL [VALU=*] disp

ELSE " Option set negative " EXIT [CONT=proc; EXPL=!t(#e,'DISPERSION must be positive or *')] ENDI

ENDI

"***********************************************************************" prin [ipri=*;squa=y] 'check weights'

IF UNSET(WEIGHTS) " Option not set " VARI [nval=Y] weights

CALC weights=1

DUMM [valu=NONE] WEIGHTS ELSE

VARI weights ; WEIGHTS ENDI

prin [ipri=*;squa=y] 'check weights'

"when calculating df's take care for 0 weight's"

"***********************************************************************" " Deal with NBINOMIAL parameter "

"prin [ipri=*;squa=y] 'check nbinomial parameter'" IF UNSET(NBINOMIAL)

EXIT [CONT=proc; EXPL=!t(#e,'NBINOMIAL parameter must be set')] \ DISTRIBUTION .EQS. 'BINOMIAL'

" Assign a variate with values to NBIN: will be ignored " ASSI Y; NBINOMIAL

ENDI

"***********************************************************************" " Look for the canonical link of the specified distribution "

"prin [ipri=*;squa=y] 'check cononical link'" SCAL ndist,nlink

TEXT

[VALUES=IDENTITY,LOGARITHM,LOGIT,RECIPROCAL,POWER,SQUAREROOT,PROBIT,\ COMPLEMENTARYLOGLOG] linkname

CALC ndist = POSITION(DISTRIBUTION; !t(NORMAL,POISSON,BINOMIAL,\ GAMMA,INVERSENORMAL))

IF LINK.EQS.'CANONICAL' SCAL nlink; VALUE=ndist ELSE

CALC nlink = POSITION(LINK; linkname) ENDI

"***********************************************************************" " Get attributes of factors, particularly for labelling "

"prin [ipri=*;squa=y] 'check attributes for labelling'"

Lampiran

SCAL nvars,nenvs; VALUE=pvf['nlevels'],pef['nlevels']

GETA [ATT=nmv] pvf,pef; SAVE=ppvf,ppef "check for levels or labels" IF ppvf[1]

GETA [ATT=decimals] pvf['levels']; SAVE=ppvf

VARI Row; VALUES=pvf['levels']; DECI=ppvf['decimals'] FACT [LEVE=Row] Grow; VALU=pvf['levels']

ELSE

TEXT Row; VALUES=pvf['labels'] TEXT Grow; VALU=pvf['labels'] ENDI

IF ppef[1]

GETA [ATTR=decimals] pef['levels']; SAVE=ppef

VARI Column; VALU=pef['levels']; DECI=ppef['decimals'] FACT [LEVE=Column] Gcolumn;VALU=pef['levels']

ELSE

TEXT Column; VALU=pef['labels'] TEXT Gcolumn; VALU=pef['labels'] ENDI

TEXT [NVAL=1] variden,enviden,covviden,coveiden

"dump hiet niet meer nodig door loop die de fits doet" DUMP [CHAN=chanenv;PRIN=iden] COLUMN

DUMP [CHAN=chanvar;PRIN=iden] ROW

EQUA [OLDF=!(-5,1,*)] chanenv,chanvar;variden,enviden

"***********************************************************************" " Identify missing ROWs and COLUMNs (e.g. due to restrict) "

"prin [ipri=*;squa=y] 'check missing ROWs and COLUMNs'"

TABU [CLAS=ROW] Y; NOBS=cv & [CLAS=COLUMN] Y; NOBS=ce REST Column; !(#ce)>0

& Row; !(#cv)>0

CALC notmise,notmisv=nval(Column,Row) "Get number of not restricted" CALC totnmis=nobs(Y/weights) "Available df's" "takes in account missing values in Y and those due to 0 weights" "***********************************************************************" "check on covar; Column cova's optionally fitted before main Column eff. with a maximum equaling column levels (poss. -1 for general mean); Row cova's may follow similar but adjusted for Column effects (=Rowlevels-1)"

"A mirror analysis can be prefomed by transposing the input"

VARI [nval=Y] eenvec "unity vector used as dummy and/or to fit mean" CALC eenvec=1

SCAL cdf,rdf;notmise,notmisv "column/row counters used for df calcs" SCAL mcdf[1...nenvs],mrdf[1...nvars];1 "individual main effects/coverdfs" "prin 'check met covariabelen'"

IF UNSET(COVARIATES)

ASSI eenvec; COVARIATES;1 ASSI eenvec; COVATYPE;1 scal covatal;1

POIN [valu=eenvec] covar SCAL thch,thrh,ccp,rcp;0 ELSE

CALC covatal,cotyptal=nval(COVARIATES,COVATYPE) EXIT [CONT=JOB;EXPL=!t(#e,\

'Pointer COVARIATE and COVATYPE must have same number of values')]\ covatal.ne.cotyptal

CALC ctlev[1...covatal]=nlev(COVATYPE[1...covatal]) CALC cvvtal[1...covatal]=nval(COVARIATES[1...covatal]) CALC ctlctv[1...covatal]=ctlev[].EQ.cvvtal[]

EXIT [CONT=JOB;EXPL=!t(#e,\

'COVARIATE length must conform levels of corresp. factor')]\ vsum(ctlctv).ne.covatal

"find out wich covariate belongs to column or row" CALC hch[1...covatal]=COVATYPE[1...covatal].IS.COLUMN

62

Lampiran

"create index variate for column and row" VARI vhch,vhrh;VALU=!(hch[]),!(hrh[])

CALC vhch,vhrh=cum(vhch,vhrh)*(vhch,vhrh.ne.0)

"determine presency of column/row covariate" CALC thch,thrh=VSUM(hch,hrh)

"when present assign column and row covariates each to a pointer; when not present assign dummy eenvec to these pointers

(used as fit-loop index parameter but skiped within the loop) and erect the full length covariate for analysis" IF thch.gt.0

POIN [nval=thch] chcova

ASSI COVARIATES[#vhch];(chcova)#thch;1...thch CALC ccovar[1...thch] = \

NEWLEVELS(COVATYPE[#vhch];COVARIATES[#vhch]) ELSE

POIN [valu=eenvec] chcova POIN [valu=eenvec] ccovar ENDI

IF thrh.gt.0

POIN [nval=thrh] rhcova

ASSI COVARIATES[#vhrh];(rhcova)#thrh;1...thrh CALC rcovar[1...thrh] = \

NEWLEVELS(COVATYPE[#vhrh];COVARIATES[#vhrh]) ELSE

POIN [valu=eenvec] rhcova POIN [valu=eenvec] rcovar ENDI

"calculate scalars used to skip elements as loop index parameter" CALC ccp,rcp=thch,thrh.ne.0

"correct scalars used as index for pointers; ensuring them being >0 to avoid trouble with nonexisting index for empty pointers" CALC thch,thrh=thch,thrh+(thch,thrh.eq.0)

ENDI

"***********************************************************************" "Temporary inclusion of main effects fitting order !!!!!"

" to be deleted when module is up and running"

MODE [DIST=#DISTRIBUTION; LINK=#LINK; EXPO=EXPONENT; DISP=disp; WEIG=weights]\

Y; NBIN=NBINOMIAL TERM COLUMN+ROW

FIT [PRIN=*]

ADD [PRIN=*] COLUMN ADD [PRIN=*] ROW "

DROP [PRIN=*] ROW+COLUMN ADD [PRIN=*] ROW

ADD [PRIN=A] COLUMN "

"***********************************************************************" SCAL efftal;0 "scalar counting fitted effects" SCAL mas;1 "initial multiplicative AXES use in effects pointer" SCAL einp,ginp;0 "indicator if geno/environmental effects are present" SCAL gmean "scalar for general mean" TEXT [VALU='Total'] source

"declaration of variates holding estimates" VARI [VALU=#nenvs(0)] E

VARI [VALU=#nvars(0)] G VARI [NVAL=Y] voG,voE

SCAL YE[1...thch] "column covariable effects" SCAL ZE[1...thrh] "row covariable effects" POIN [nval=1] gefp,refp,cefp "pointer to hold effects" ASSI (gmean)3;gefp,refp,cefp

POIN voGp "pointer to maineffect offset" POIN voEp "pointer to maineffect offset" "**********************************************************************"

Lampiran

"Fitting general mean; keeping devi & df for accumulated table" MODE [DIST=#DISTRIBUTION; LINK=#LINK; EXPO=EXPONENT; DISP=disp; WEIG=weights;\

SAVE=laatst] Y; NBIN=NBINOMIAL

FORM [VALU=eenvec] fform,fformeas,fformvas,fformc,fformr FIT [PRIN=*;CONS=O] #fform

RKEE DEVI=devi[efftal]; DF=df[efftal];est=est

CALC totdf[efftal]=notmise*notmisv-1 "calculate total df" IF df[efftal].ne.totdf[efftal] "not sure yet how to deal with" CALC totmis=totdf[efftal]-df[efftal]

PRIN 'Specific ROW-COLUMN cells are restricted or missing !!!!!' ELSE

SCAL totmis;0 ENDI

"***********************************************************************" "***********************************************************************" "Fitting covar & main effects; keeping devi & df for accumulated table" "i= variates/factors to be fitted

j= column or row factor to wich the fitted variate corresponds k= given choices for fitting the covariates

l= possible choices at each stage of fitting m= index number for covariate

n= type of effect to be fitted (cova,main,cova.main)

o= corresponding identifier of covariate/factor use in summary table" FOR i=#ccp(ccovar[1...thch]),COLUMN,\ #rcp(rcovar[1...thrh]),ROW,\ #ccp(ccovar[1...thch]),\ #rcp(rcovar[1...thrh]);\ j=#ccp((COLUMN)#thch),COLUMN,\ #rcp((ROW)#thrh),ROW,\ #ccp((ROW)#thch),\ #rcp((COLUMN)#thrh);\ k=#ccp(COVA_IMPL),MAINEFFECTS,\ #rcp(COVA_IMPL),MAINEFFECTS,\ #ccp(COVA_IMPL),\ #rcp(COVA_IMPL);\ l=#ccp('BEFORE'),!T('COLUMN','BOTH'),\ #rcp('BEFORE'),!T('ROW','BOTH'),\ #ccp(!T('BEFORE','AFTER')),\ #rcp(!T('BEFORE','AFTER'));\ m=#ccp(1...thch),1,\ #rcp(1...thrh),1,\ #ccp(1...thch),\ #rcp(1...thrh);\ n=#ccp((1)#thch),2,\ #rcp((3)#thrh),4,\ #ccp((5)#thch),\ #rcp((6)#thrh);\ o=#ccp(chcova[1...thch]),COLUMN,\ #rcp(rhcova[1...thrh]),ROW,\ #ccp(chcova[1...thch]),\ #rcp(rhcova[1...thrh]);

IF (k.IN.l) "check to include covariate/factor at this stage" CALC mindf[1,2]=(n,n.eq.1,3)*\

(mcdf[m],mrdf[m])*(vsum(mcdf,mrdf).gt.1) " (cova = 1df unless (rtot/ctot-1) or already fitted)" CALC mindf[1,2]=mindf[1,2]+(n,n.eq.2,4)*(vsum(mcdf,mrdf)-1) "main = rtot/ctot-1 corrected for covariates already fitted" CALC mindf[1,2]=mindf[1,2]+\

(n,n.eq.5,6)*(rdf,cdf-(mcdf[m],mrdf[m].eq.0)) "cova.main = complementary factor df corrected for not fitted covariate and/or maineffect" EXIT [CONT=FOR;EXPL=!t(#w,\

64

Lampiran

(totdf[efftal]-vsum(mindf)-totmis).le.0

"rem: totmis indicates missing cells" IF (VSUM(mindf).gt.0) "if possible to include then correct dfs" "adjust pointers to hold effects !!!" CASE n

POIN [valu=gefp[],YE[]] gefp POIN [valu=cefp[],YE[]] cefp POIN [valu=refp[],YE[]] refp OR

POIN [valu=gefp[],E] gefp POIN [valu=cefp[],E] cefp CALC einp=1

POIN [valu=voE] voEp OR

POIN [valu=gefp[],ZE[]] gefp POIN [valu=cefp[],ZE[]] cefp POIN [valu=refp[],ZE[]] refp OR

POIN [valu=gefp[],G] gefp POIN [valu=refp[],G] refp CALC ginp=1

POIN [valu=voG] voGp ELSE

prin 'How does the effects pointer has to look like ?' ENDC CALC mefftal,efftal=efftal,efftal+0,1 CALC totdf[efftal]=totdf[mefftal]-vsum(mindf) CALC mcdf[m],mrdf[m]=mcdf[m],mrdf[m]-(n,n.eq.1,3) CALC mcdf[1...nenvs],mrdf[1...nvars]=\ mcdf[1...nenvs],mrdf[1...nvars]-\ mcdf[1...nenvs],mrdf[1...nvars]*\ ((n)#nenvs,(n)#nvars.eq.(2)#nenvs,(4)#nvars) CALC cdf,rdf=cdf,rdf-(n,n.eq.2,4)

"correct for main effects" CALC cdf,rdf=cdf,rdf-(n,n.eq.5,6)

"correct for main.cova effects" DUMP [CHAN=chancove;PRIN=iden] o

EQUA [OLDF=!(-5,1,*)] chancove;coveiden TEXT [VALU=#source,#coveiden] source fcla i;outt=iform

fcla j;outt=jform

IF (n.gt.4) "is it an cova.main type ?" FORM [VALU=#fform+#jform.#iform] fform

ELSE "it is just an additive" FORM [VALU=#fform+#iform] fform

ENDI

IF (j.IS.ROW) IF (n.gt.4)

FORM [valu=#fformc+#jform.#iform] fformc ELSE

FORM [valu=#fformc+#iform] fformc ENDI

ELSE

IF (n.gt.4)

FORM [valu=#fformr+#jform.#iform] fformr ELSE

FORM [valu=#fformr+#iform] fformr ENDI

ENDI

FIT [PRIN=*;CONS=O] #fform

RKEE DEVI=devi[efftal]; DF=df[efftal];ESTI=est ENDI

ENDI ENDF

Lampiran

"Calculating initial values for offset" "

prin [squa=y] fform

rdis [prin=es;save=laatst] " EQUA est;gefp IF einp CALC voE=NEWL(COLUMN;E) ENDI "***********************************************************************" "check on realistic number of multipl. axes after covariate/main effects" CALC haxes=vmin(!p(cdf,rdf)) "smallest side is maximum"

IF haxes.lt.AXES CALC AXES=haxes

PRIN [ipri=*;squa=y] w,\

'Not enough df''''s; number of axes set to:',AXES;\ fiel=*,*,3;deci=0

ENDI

"***********************************************************************" "prin [ipri=*;squa=y] 'Begin module'"

"prin [ipri=*;squa=y] 'nvars',nvars,'nenvs',nenvs" "prin [ipri=*;squa=y] 'AXES=:',AXES"

CALC SEED=URAN(SEED) "initialize random generator" CALC delta[1...AXES] = URAN(0;nenvs) "initialize COLUMN scores" "CALC delta[1...AXES]=delta[1...AXES]-mean(delta[1...AXES])"

"probeersel"

calc delta[1...AXES]=0 "DIT WERKT, maar geeft dit geen problemen ??" VARI [NVAL=nvars] gamma[1...AXES]

"***********************************************************************" "prin [ipri=*;squa=y] 'check lege parameters (assign)'"

IF UNSET(FITTEDVALUES) : ASSIGN fit ; FITTEDVALUES : ENDI IF UNSET(RESIDUALS) : ASSIGN residual; RESIDUALS : ENDI IF UNSET(DELRESIDUALS) : ASSIGN delres ; DELRESIDUALS : ENDI IF UNSET(COOK) : ASSIGN cook ; COOK : ENDI IF UNSET(LEVERAGE) : ASSIGN leverage; LEVERAGE : ENDI IF UNSET(WORKVARIATE) : ASSIGN workvar ; WORKVARIATE : ENDI IF UNSET(LINEARPREDICT) : ASSIGN lp ; LINEARPREDICT : ENDI IF UNSET(BIPLOT) : ASSIGN biplot ; BIPLOT ELSE

CALC BIPLTAL=AXES*4 IF NVAL(BIPLOT)<>BIPLTAL

\EXIT [CONT=proc;EXPL=!t(#e,\

\'Biplot pointer must have 4 variates per axis (R&C+R+C)')] prin [ipri=*;squa=yes]\

'Biplot pointer has 4 variates per axis (R&C+R+C):',BIPLTAL,\

'for',AXES,'axes';deci=0;fiel=1 POIN [modi=yes;nval=BIPLTAL] BIPLOT ENDI

ENDI

"***********************************************************************" VARI [NVAL=Y] vint[1...AXES],vdelta[1...AXES],vgamma[1...AXES] "redefine"

SCAL cycle,tcycle,devmon[0]; 0 CALC axesmin=AXES-1

"prin [ipri=*;squa=y] 'Begin loop'"

"***********************************************************************" IF AXES.GE.1

FOR m=1...AXES "buitenloop voor aantal assen" CALC mas=m

CALC tcycle,cycle,mmin=tcycle,0,m+cycle,0,-1 FORM [valu=#fformc+ROW.vdelta[1...m]] fformeas FORM [valu=#fformr+COLUMN.vgamma[1...m]] fformvas POIN [VALU=refp[],gamma[1...m]] refpp

66

Lampiran

POIN [VALU=cefp[],delta[1...m]] cefpp "

prin [squa=y] 'samengestelde poin' prin [squa=y] fformeas

prin [squa=y] refpp prin [squa=y] fformvas prin [squa=y] cefpp "

"***********************************************************************" FOR [NTIM=MAXCYCLE]

CALC cycle = cycle+1

MODE [DIST=#DISTRIBUTION; LINK=#LINK; EXPO=#EXPONENT; \ DISP=disp; WEIG=weights ;OFFS=#voEp] Y; NBIN=NBINOMIAL " Form variate with current ROW sens relevant to each unit " " Avoid bug with restrictions in NEWLEVELS " REST delta[1...m]

CALC vdelta[1...m] = NEWLEVELS(COLUMN;delta[1...m]) REST delta[1...m]; RESTRICT(Column)

FIT [CONST=O; PRIN=*;NOME=alia] #fformeas RKEE EST=est; DEV=rdevmon[cycle]

EQUA est; refpp "prin refpp[]"

CALC G,gamma[1...m] = G,gamma[1...m]-MEAN(G,gamma[1...m]) CALC voG = NEWL(ROW;G)

"orthogonalisatie" "bedoeling is GRAMM-SCHMIDT orthogonalisatie" "hier nog CHOLESKI ??" IF m.gt.1

for i=1...mmin;j=2...m model gamma[j]; fit=fitg

FIT [CONST=o; PRIN=*] gamma[1...i] CALC gamma[j] = gamma[j] - fitg endf

ENDI

CALC normgamma[1...m] = SQRT(sum(gamma[1...m]**2)) CALC gamma[1...m] = gamma[1...m]/normgamma[1...m] REST gamma[1...m]

CALC vgamma[1...m] = NEWL(ROW;gamma[1...m]) REST gamma[1...m];REST(Row)

MODE [DIST=#DISTRIBUTION; LINK=#LINK; EXPO=#EXPONENT; \ DISP=disp; WEIG=weights ;OFFS=#voGp;SAVE=laatst] Y; NBIN=NBINOMIAL

FIT [CONS=O; PRIN=*] #fformvas RKEE EST=est; DEV=cdevmon[cycle] EQUA est;cefpp

"prin cefpp[]"

CALC E,delta[1...m] = E,delta[1...m] - MEAN(E,delta[1...m]) CALC voE = NEWL(COLUMN;E)

"orthogonalisatie" IF m.gt.1

for i=1...mmin;j=2...m MODE delta[j]; FIT=fitd

FIT [CONST=o; PRIN=*] delta[1...i] CALC delta[j] = delta[j] - fitd endf

ENDI

CALC normdelta[1...m] = SQRT(SUM(delta[1...m]**2)) CALC delta[1...m] = delta[1...m]/normdelta[1...m]

"***********************************************************************" CALC maxdiff= ABS(rdevmon[cycle]-cdevmon[cycle])

IF 'MONITORI' .IN. PRINT PRIN [ipri=*;squa=y] \

'AXES:',m,'convergence cycle:',cycle,\

'Deviance:',cdevmon[cycle],'Difference:',maxdiff;\ deci=*,0,*,0,*,4,*,4;fiel=*,2,*,3,*,12,*,12 ENDI

Lampiran

EXIT [CONT=FOR] maxdiff .LT. TOLERANCE

"***********************************************************************" IF cycle==MAXCYCLE

PRINT [IPRINT=*] '******** CONVERGENCE NOT ACHIEVED IN', \ cycle,'ITERATIONS'; FIELD=3; DEC=0

& [SQUASH=yes] 'Tolerance',TOLERANCE, \

'Maximum difference in sensitivity at last iteration',maxdiff; \ FIELD=18,12,37,12 ENDIF ENDF "***********************************************************************" "prin gamma[1...m],delta[1...m]" CALC sgamma[m][1...m],sdelta[m][1...m]=gamma[1...m],delta[1...m] CALC sE[m],sG[m]=E,G CALC sgmean[m]=gmean "opslag per as"

CALC mefftal,efftal=efftal,efftal+0,1 CALC devi[efftal]=cdevmon[cycle] CALC df[efftal]=df[mefftal]-(cdf+rdf-1) CALC cdf,rdf=cdf,rdf-1 CALC phi[m][1...m]=normdelta[1...m] "

prin [squa=y] normdelta[1...m] prin [squa=y] normgamma[1...m] "

IF 'MONITORI' .IN. PRINT

TEXT [VALU='Monitor convergence graph'] gt VARI [nval=cycle] process;!(cdevmon[1...cycle]) VARI [valu=1...cycle] round;deci=0

GRAP [titl=gt] process;round;meth=l ENDI

ENDF

"***********************************************************************" "prin [ipri=*;squa=y] 'Einde loop'"

"prin efftal" ENDI

"***********************************************************************" "prin 'rcheck'"

"Extract relevant details from last fit and use RCHECK" "

RDIS [SAVE=laatst;PRIN=esti]

prin refpp[],cefpp[],'dit moet kloppen met de estimates' "

RKEE [SAVE=laatst] LINE=LINEARPREDICT;LEVE=LEVERAGE;\ FITT=FITTEDVALUES;RESI=RESIDUALS

CALC RESIDUALS=Y-FITTEDVALUES "aanpassing residu zonder leverage etc" RCHECK [SAVE=laatst;PRIN=*;resi=DELRESIDUALS;cook=COOK]

" residual,cook,leverage; halfnormal"

CALC WORKVARIATE = LINEARPREDICT + (Y - FITTEDVALUES)/FITTEDVALUES PRIN [CHAN=asnum;IPRI=*;SQUA=Y] !(1...AXES);deci=0;fiel=2;just=l

"***********************************************************************" TABU [CLASS=ROW,COLUMN; MARG=Y; PRIN=M] FITTEDVALUES

"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" PRIN sgmean[]

PRIN Row,sG[1...AXES],sgamma[][] CORR [PRIN=c] sG[1...AXES],sgamma[][] PRIN Column,sE[1...AXES],sdelta[][] CORR [PRIN=c] sE[1...AXES],sdelta[][] prin phi[][]

"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"

"***********************************************************************" CALC rptal=1+AXES

IF .NOT.UNSET(ROWPARAMS)

68

Lampiran

CALC ROWPARAMS[1...rptal]=sG[AXES],sgamma[AXES][1...AXES] ENDI

IF .NOT.UNSET(COLPARAMS)

POIN [MODI=Y;NVAL=#rptal] COLPARAMS

CALC COLPARAMS[1...rptal]=sE[AXES],sdelta[AXES][1...AXES] ENDI "***********************************************************************" "***********************************************************************" IF efftal.gt.0 CALC pefftal=efftal+1 CALC dfver[0...pefftal]=df[0],df[0...mefftal],df[efftal] - \ 0 ,df[1... efftal], 0 CALC deviver[0...pefftal]=devi[0],devi[0...mefftal],devi[efftal] - \ 0 ,devi[1... efftal], 0 ENDI "***********************************************************************" "prin [ipri=*;squa=y] 'Print diagnostics',PRINT"

IF 'DIAGNOST' .IN. PRINT

IF NOBS(RESIDUALALS).GT.0 "exact model without residuals" GRAP LINEARPREDICT,WORKVARIATE; LINEARPREDICT; meth=l,p

GRAP [NROW=21; NCOL=61] RESIDUALS;FITTEDVALUES; symb=ROW GRAP [NROW=21; NCOL=61] RESIDUALS;LINEARPRLUES; symb=ROW GRAP [NROW=21; NCOL=61] RESIDUALS;FITTEDVALUES; symb=COLUMN GRAP [NROW=21; NCOL=61] RESIDUALS;LINEARPREDICT; symb=COLUMN CALC res2=RESIDUALS**2

TABU [m=y; class=ROW,COLUMN] res2; tot=devres PRIN [IPRI=*;SQUA=Y] 'Total residual:',devres ENDI ENDI "***********************************************************************" IF AXES.GT.1 CALC cagamma[1...AXES],cadelta[1...AXES] = \ sqrt(normdelta[1...AXES],normdelta[1...AXES])*\ gamma[1...AXES],delta[1...AXES] CALC grgamma[1...AXES],grdelta[1...AXES] = \ normdelta[1...AXES],normdelta[1...AXES]*\ gamma[1...AXES],delta[1...AXES] IF NVAL(BIPLOT)

DELE [rede=yes] BIPLOT[1...BIPLTAL]

CALC BIPLOT[1...BIPLTAL]=cagamma[1...AXES],cadelta[1...AXES],\ grgamma[1...AXES],grdelta[1...AXES]

\REST BIPLOT[] ENDI

"prin [ipri=*;squa=y] 'Print biplots'" IF ('BIPLOTS' .IN. PRINT)

TEXT [valu=' Row-Column biplot sigma scaled 0.5-0.5'] rcgt TEXT [val=' Column biplot sigma scaled 1'] cgt

TEXT [val=' Row biplot sigma scaled 1'] rgt FOR i=1...axesmin

CALC iplus=i+1 FOR j=iplus...AXES

CALC imin,iplus,jmin,jplus=i,AXES,j,AXES-(1,i,1,j) CONC [bpas] 'AXES',#asnum,' vs.',#asnum;\

widt=*,(0)#jmin,2,(0)#jplus,*,(0)#imin,2,(0)#iplus CONC [rctit] bpas,rcgt

CONC [rtit] bpas,rgt CONC [ctit] bpas,cgt

GRAP [titl=rctit;eq=sc] cagamma[j],cadelta[j],0; \ cagamma[i],cadelta[i],0; symb=Grow,Gcolumn,'+' GRAP [titl=rtit; eq=sc] grgamma[j],0; \

grgamma[i],0; symb=Grow,'+'

GRAP [titl=ctit; eq=sc] grdelta[j],0; \ grdelta[i],0; symb=Gcolumn,'+' ENDF

Lampiran

ENDI ENDI

"***********************************************************************" "prin [ipri=*;squa=y] 'Print model'"

IF 'MODEL' .IN. PRINT PAGE

SKIP [FILE=outp] 2 PRIN [IPRI=*;SQUA=Y]\

'*** GenerAlized Main effects and Multiplicative ***' PRIN [IPRI=*;SQUA=Y]\

'*** Interaction model analysis ***' SKIP [FILE=outp] 1

TEXT [NVAL=1] tlink

EQUA [OLDF=!((-1)#nlink,1)] OLDS=!t(x,#linkname); NEWS=tlink PRIN [IPRI=*; SQUA=yes] \

'Response variate ',!p(Y); FIELD=25,*; JUST=r,l & 'Weight variate ',!p(WEIGHTS); FIELD=25,*; JUST=r,l & 'Distribution ',DISTRIBUTION; FIELD=25,*; JUST=r,l & 'Dispersion ',disp; FIELD=25,*; JUST=r,l

& 'Link function ',tlink; FIELD=25,*; JUST=r,l & 'Number of ROWs ',notmisv,'FROM',nvars;\ FIELD=25,8,5,5; DECI=0; JUST=r,l,l,l

& 'Number of COLUMNs ',notmise,'FROM',nenvs;\ FIELD=25,8,5,5; DEC=0; JUST=r,l,l,l

& 'COL COVARIATES ',thch;FIEL=25,3;DECI=0;JUST=r,l & 'ROW COVARIATES ',thrh;FIEL=25,3;DECI=0;JUST=r,l & 'Number of multipl.axes',AXES;FIEL=25,3;JUST=r,l;DECI=0

& 'Convergence criterion',TOLERANCE;FIELD=25,12; DECI=6; JUST=r,l & 'Number of iterations ',tcycle; FIELD=25,8; DEC=0; JUST=r,l ENDI

"***********************************************************************" "prin [ipri=*;squa=y] 'Print summary'"

IF 'SUMMARY' .IN. PRINT

IF DISTRIBUTION.EQS.'NORMAL' TEXT head[1...4],inttext;\

VALUES='variance','s.s.','m.s.','v.r.',!t(('Ammi__')#AXES) ELSE

TEXT head[1...4],inttext; \

VALU='deviance','deviance','mean dev.','dev. ratio',\ !t(('gamma')#AXES)

ENDI

CONC inttext,asnum;skip=*,1;widt=6,3 CALC sourlen=nval(source)-1+AXES+3 CALC maintal=efftal-AXES

"source - first element (=total) + AXES + RESIDUAL +empty +TOTAL" TEXT [VALU=(' ')#sourlen] source2

EQUA [OLDF=!(-1,maintal,AXES,3)] \

!t(#source,#inttext,'Residual',' ','Total ');source2 CALC dfver[0...pefftal]=MVIN(dfver[0...pefftal];dfver[0...pefftal].eq.0) CALC mdev[0...pefftal]=deviver[0...pefftal]/dfver[0...pefftal] VARI deviance,dimension,meandev;\ !(deviver[1...pefftal],*,deviver[0]),\ !( dfver[1...pefftal],*, dfver[0]),\ !( mdev[1...pefftal],*,mdev[0]) FOR i=1...AXES CALC asno=maintal+i+1 CALC asrest=pefftal-asno+1 CALC devr[i]=meandev/\ (vsum(!p(deviver[asno...pefftal]))/\ vsum(!p( dfver[asno...pefftal]))) "tests op as-niveau's" CALC devr[i]=mvin(devr[i];!((0)#maintal,(0)#i,(1)#asrest,0,1)) ENDF SKIP [FILE=outp] 2

70

Lampiran

PRIN [IPRI=*] '*** Analysis of',head[1],'***'; FIELD=1 & 'Source','d.f.',head[2...3],(head[4])#AXES;\ FIELD=15,8,12,12,(12)#AXES

& [SQUASH=yes; MISSING=' '] \

source2,dimension,deviance,meandev,devr[1...AXES]; \ FIEL=15,8,12,12,(12)#AXES;DEC=*,0,4,4,(2)#AXES;JUST=l,(r)3,(r)#AXES SKIP [FILE=outp] 5 ENDI "***********************************************************************" DELE [REDE=Y] "As many as you lay hold of"

DUMM WEIGHTS;VALU=*

"***********************************************************************" ENDPROCEDURE "GAMMI"

"***********************************************************************"

Lampiran 11. Contoh Perintah GENSTAT untuk GAMMI return [clos=yes]

text [valu='Bem',. . . ,'Lon'] labnema text [valu='IAC-100',. . . ,'Wils'] labgeno calc nnema,ngeno=nval(labnema,labgeno) unit [nval=20]

fact [lev=nnema;labe=labnema] nema fact [lev=ngeno;lab=labgeno] geno gene geno,nema variate a read a ... (data) ... : GAMMI [dist=normal;link=ident;main=both;maxc=30;prin=mo,sum,bipl,diag;\ axes=3;seed=183639]\ a;nbin=*;row=geno;colu=nema;\ fitt=fit;resi=residual; bipl=bip prin bip[1,2] prin bip[3,4] GAMMI [dist=poisson;link=log;main=both;maxc=30;prin=mo,sum,bipl,diag;\ axes=3;seed=183639]\ a;nbin=*;row=geno;colu=nema;\

cook=cook;fitt=fit;resi=residual;workv=z; linearp=nu; bipl=bip prin bip[1,2]

prin bip[3,4]

Lampiran 12. Perintah GENSTAT untuk Procrustes ROTATE [PRINT=rotations,residuals,sums; SCALING=yes; STANDARDIZE=centre,normalize;\

SUPPRESS=no] XINPUT=MX; YINPUT=MXX

MODEL AMMI TERAMPAT UNTUK

DATA BERDISTRIBUSI BUKAN NORMAL

ALFIAN FUTUHUL HADI

SEKOLAH PASCASARJANA

INSTITUT PERTANIAN BOGOR

BOGOR

2006

PERNYATAAN MENGENAI TESIS DAN

SUMBER INFORMASI

Dengan ini saya menyatakan bahwa tesis Model AMMI Terampat untuk Data Berdistribusi Bukan Normal adalah karya saya sendiri dan belum pernah

Dokumen terkait