Date: Tue, 1 Oct 2002 09:56:43 +0200
Reply-To: Asesoría Bioestadística
<bioestadistica@eresmas.net>
Sender: "SPSSX(r) Discussion" <SPSSX-L@LISTSERV.UGA.EDU>
From: Asesoría Bioestadística
<bioestadistica@eresmas.net>
Subject: Re: Betreff: Re: Re: elementary questions about using syntax in
SPSSfor theBreusch-Pagan text
Content-Type: text/plain; charset=us-ascii
Hi Isabell
As you replied to my private account, I sent you the reply to your private account too.
If anybody in the list is interested in this topic, I can send the message again to the whole list.
Marta
Isabell Ottfried ha escrito:
> Hi Marta!
>
> First of all, thousand thanks for your help and the paper. And I want to say sorry in advance to bother you again. However, I still have some difficulties to run the syntax (it's my fault!). It seems I need a bit more experience with the syntax. :)
>
> You wrote:
> ...
> a) Second, you open your dataset, or create dummy data as in section (2)
> ....
> b) I recommend you to organize your dataset so the dependent is not among the predictors (or any other variable you don't want to include in the analysis).
> ________________________
> a) This means, I have to open either my dataset or create a dummy data with help of section (2) after I run section (1). With other words, if I use my own dataset I can skip section (2) and can go directly to section (3). Am I right? Another question is about the dummy data. Why should one use a dummy data? Where is the sense of a such a dataset and where does the data come from?
>
> b) Why should I exclude my dependent variable? I thought the test is based on the squared residuals form the regression of the "original" dv and iv. How does the syntax get the corresponding residuals? If I don`t exclude the dv, I get a lot of error statements. I only get "correct" results if I run first section (2) and then section (3). But if I do so, the data is NOT my own dataset. It seems that I have to change section (2) but I don't what and how!?
>
> I apologize for further questions but I am bit confused. Thousand thanks for your help in advance.
>
> Best regards,
>
> Isabell
>
> So, if you have a dataset consisting in one dependent (X1) and 19 independent (x2 TO x20), the syntax will be:
>
> BPKTEST x1 19 x2 TO x20.
>
> Select and run the line.
>
> ----- original Nachricht --------
>
> Hi Isabell:
>
> As I wrote part of the code, I feel responsible ;).
>
> - I downloaded the Gwilym Price's paper, and I will send you a copy later (to your mail, not the whole list)
>
> - MACRO use:
>
> First, you must select and run all the code between DEFINE... !ENDDEFINE (section (1) of the code). This will create a new command called BPKTEST. This part of the code is run only once, as the command will last as long as you have SPSS running.
>
> Second, you open your dataset, or create dummy data as in section (2)
>
> To run the test, you write the following:
>
> BPKTEST Depvar Nr. of predictors List of predictors (ordered AND consecutive in the dataset)
>
> I recommend you to organize your dataset so the dependent is not among the predictors (or any other variable you don't want to include in the analysis).
>
> So, if you have a dataset consisting in one dependent (X1) and 19 independent (x2 TO x20), the syntax will be:
>
> BPKTEST x1 19 x2 TO x20.
>
> Select and run the line.
>
> I am sending you a newer version of the code, with more output and an item corrected. Also, I have adapted the example to fit your data (19 predictors). I have tested it and it runs OK.
>
> Best regards
>
> Marta
> ----------------------------------------------------------
>
> * BREUSCH-PAGAN & KOENKER TEST MACRO *
> * See 'Heteroscedasticity: Testing and correcting in SPSS'
> * by Gwilym Pryce, for technical details.
>
> * The MACRO needs 3 arguments:
> * the dependent, the number of predictors and the list of predictors
> * (if they are consecutive, the keyword TO can be used) .
>
> * (1) MACRO definition (select an run just ONCE).
>
> DEFINE bpktest(!POSITIONAL !TOKENS(1) /!POSITIONAL !TOKENS(1) /!POSITIONAL !CMDEND).
> * Regression to get the residuals and residual plots.
> REGRESSION
> /STATISTICS R ANOVA
> /DEPENDENT !1
> /METHOD=ENTER !3
> /SCATTERPLOT=(*ZRESID,*ZPRED)
> /RESIDUALS HIST(ZRESID) NORM(ZRESID)
> /SAVE RESID(residual) .
> do if $casenum=1.
> print /"Examine the scatter plot of the residuals to detect"
> /"model misspecification and/or heteroscedasticity"
> /""
> /"Also, check the histogram and np plot of residuals "
> /"to detect non normality of residuals "
> /"Skewness and kurtosis more than twice their SE indicate non-normality ".
> end if.
> * Checking normality of residuals.
> DESCRIPTIVES
> VARIABLES=residual
> /STATISTICS=KURTOSIS SKEWNESS .
> * New dependent variable (g) creation.
> COMPUTE sq_res=residual**2.
> compute constant=1.
> AGGREGATE
> /OUTFILE='tempdata.sav'
> /BREAK=constant
> /rss = SUM(sq_res)
> /N=N.
> MATCH FILES /FILE=*
> /FILE='tempdata.sav'.
> EXECUTE.
> if missing(rss) rss=lag(rss,1).
> if missing(n) n=lag(n,1).
> compute g=sq_res/(rss/n).
> execute.
> * BP&K tests.
> * Regression of g on the predictors.
> REGRESSION
> /STATISTICS R ANOVA
> /DEPENDENT g
> /METHOD=ENTER !3
> /SAVE RESID(resid) .
> *Final report.
> do if $casenum=1.
> print /" BP&K TESTS"
> /" ==========".
> end if.
> * Routine adapted from Gwilym Pryce.
> matrix.
> compute p=!2.
> get g /variables=g.
> get resid /variables=resid.
> compute sq_res2=resid&**2.
> compute n=nrow(g).
> compute rss=msum(sq_res2).
> compute ii_1=make(n,n,1).
> compute i=ident(n).
> compute m0=i-((1/n)*ii_1).
> compute tss=transpos(g)*m0*g.
> compute regss=tss-rss.
> print regss
> /format="f8.4"
> /title="Regression SS".
> print rss
> /format="f8.4"
> /title="Residual SS".
> print tss
> /format="f8.4"
> /title="Total SS".
> compute r_sq=1-(rss/tss).
> print r_sq
> /format="f8.4"
> /title="R-squared".
> print n
> /format="f4.0"
> /title="Sample size (N)".
> print p
> /format="f4.0"
> /title="Number of predictors (P)".
> compute bp_test=0.5*regss.
> print bp_test
> /format="f8.3"
> /title="Breusch-Pagan test for Heteroscedasticity"
> + " (CHI-SQUARE df=P)".
> compute sig=1-chicdf(bp_test,p).
> print sig
> /format="f8.4"
> /title="Significance level of Chi-square df=P (H0:"
> + "homoscedasticity)".
> compute k_test=n*r_sq.
> print k_test
> /format="f8.3"
> /title="Koenker test for Heteroscedasticity"
> + " (CHI-SQUARE df=P)".
> compute sig=1-chicdf(k_test,p).
> print sig
> /format="f8.4"
> /title="Significance level of Chi-square df=P (H0:"
> + "homoscedasticity)".
> end matrix.
> !ENDDEFINE.
>
> * (2) Sample data (replace by your own)*.
>
> INPUT PROGRAM.
> - VECTOR x(20).
> - LOOP #I = 1 TO 50.
> - LOOP #J = 1 TO 20.
> - COMPUTE x(#J) = NORMAL(1).
> - END LOOP.
> - END CASE.
> - END LOOP.
> - END FILE.
> END INPUT PROGRAM.
> execute.
>
> * x1 is the dependent and x2 TO x20 the predictors.
>
> * (3) MACRO CALL (select and run).
>
> BPKTEST x1 19 x2 TO x20.
>
> --- original Nachricht Ende ----
>
> --
> Werden Sie Millionaer
> - im freenet.de Lottokiosk, rund um die Uhr geoeffnet.
> http://lottokiosk.freenet.de/?flx013lotto=54
>
> --
> freenet Grusskarten:
> Schicken Sie Ihren Freunden einen Gruss.
> Jetzt mit Sound: http://www.freenet.de/tipp/gruss
|