Heteroscedasticity in SPSS – Uji Asumsi Klasik Heteroskedastisitas di SPSS

Heteroscedasticity in SPSS

Hi! One of the test for CLRM assumption is Heteroscedasticity. Testing it in E-views or Stata for Time-Series or Panel data is easy because the software provides the command. You just need to click this and that, then the heteroscedasticity will be out. However, testing it under SPSS software (perhaps cross-sectional data) it needs a work.

Below is the process to run it. Note that you need to copy paste the macro syntax below to run it. We use Breusch-Pagan and Koenker Test for it. The procedure is as follow:

  1. Open your SPSS
  2. Click File, and then choose “New Syntax”
  3. Copy and paste the command below
  4. Highlight from “Define” to “End Define”
  5. Click Run
  6. Type in BPKTEST “Y” “No of X” X1 X2 X3. For example, let say your Dependent Variable is PLAN, your Independent Variable is MOTIVATION and HAPPINESS. Hence, type:
  7. BPKTEST PLAN 2 MOTIVATION HAPPINESS. Why “2”? Because you have two independent variable.
  8. Click Run
  9. The p-value should be higher than 0.05, if lower than 0.05, it means your model has heteroscedasticity issue

Uji Asumsi Klasik Heteroskedastisitas di SPSS

Hai! Salah satu tes untuk asumsi CLRM adalah Heteroskedastisitas. Mengujinya di E-views atau Stata untuk Time-Series atau Panel data mudah karena perangkat lunak menyediakan perintah. Anda hanya perlu mengklik ini dan itu, maka heteroskedastisitas akan keluar. Namun, mengujinya di bawah perangkat lunak SPSS (mungkin data cross-sectional), ia membutuhkan sebuah pekerjaan. Di bawah ini adalah proses untuk menjalankannya. Perhatikan bahwa Anda perlu menyalin paste sintaks makro di bawah ini untuk menjalankannya. Kami menggunakan Breusch-Pagan dan Koenker Test untuk itu. Prosedurnya adalah sebagai berikut:

  1. Buka SPSS Anda
  2. Klik File, lalu pilih “New Syntax”
  3. Salin dan tempelkan perintah di bawah ini
  4. Sorotan dari “Define” ke “End Define”
  5. Klik Run
  6. Ketik di BPKTEST “Y” “No of X” X1 X2 X3. Misalnya, katakanlah Variabel Dependen Anda adalah PLAN, Variabel Independen Anda adalah MOTIVATION dan HAPPINESS. Oleh karena itu, ketik: BPKTEST PLAN 2 MOTIVATION HAPPINESS. Mengapa “2”? Karena Anda memiliki dua variabel independen.
  7. Klik “Run”
  8. Nilai p harus lebih tinggi dari 0,05, jika lebih rendah dari 0,05, itu berarti model Anda memiliki masalah heteroskedastisitas

Copy and Paste this MACRO SYNTAX:


* See ‘Heteroscedasticity: Testing and correcting in SPSS’

* by Gwilym Pryce, for technical details.

* Code by Marta Garcia-Granero 2002/10/28.

* 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).


* Regression to get the residuals and residual plots.







/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.




* New dependent variable (g) creation.

COMPUTE sq_res=residual**2.

compute constant=1.




/rss = SUM(sq_res)





if missing(rss) rss=lag(rss,1).

if missing(n) n=lag(n,1).

compute g=sq_res/(rss/n).


* BP&K tests.

* Regression of g on the predictors.





/SAVE RESID(resid) .

*Final report.

do if $casenum=1.

print /” BP&K TESTS”

/” ==========”.

end if.

* Routine adapted from Gwilym Pryce.


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


/title=”Regression SS”.

print rss


/title=”Residual SS”.

print tss


/title=”Total SS”.

compute r_sq=1-(rss/tss).

print r_sq



print n


/title=”Sample size (N)”.

print p


/title=”Number of predictors (P)”.

compute bp_test=0.5*regss.

print bp_test


/title=”Breusch-Pagan test for Heteroscedasticity”

+ ” (CHI-SQUARE df=P)”.

compute sig=1-chicdf(bp_test,p).

print sig


/title=”Significance level of Chi-square df=P (H0:”

+ “homoscedasticity)”.

compute k_test=n*r_sq.

print k_test


/title=”Koenker test for Heteroscedasticity”

+ ” (CHI-SQUARE df=P)”.

compute sig=1-chicdf(k_test,p).

print sig


/title=”Significance level of Chi-square df=P (H0:”

+ “homoscedasticity)”.

end matrix.


* (2) Sample data (replace by your own)*.

* x1 is the dependent and x2 TO x20 the predictors.

* (3) MACRO CALL (select and run).



  1. Open file-new-syntax

2. Copy-paste the syntax inside, and then highlight from DEFINE to END DEFINE. Then, click Run Selection

syntax macro

3. Type in BPKTEST DV no-of-x X1 X2, then click Run


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s