Skip to main content

SPSS Regression using Matrices

The SPSS syntax below does several linear regression calculations (model parameter values, sum of squares, F value, F test, R, Rsquare, t tests, etc) using matrices ... just change the data file and initialization part as required and off you go ......



/* ####### DATA FILE ################################################################################### */

FILE HANDLE data /NAME='c:\data\ratty2.sav'.


/* ####### INITIALIZATION AND DATA MATRIX ############################################################## */

MATRIX.

COMPUTE N=21. /* no of data rows */
COMPUTE IND_VARS=3. /* no of independet variables */

GET Y /FILE=data /VARIABLES =size. /* puts y-variable into column matrix called Y */
GET X1 /FILE=data /VARIABLES =t,z2,z3 /* put independent variables into a matrix called X1 */

/* ########## MATRIX CALCULATIONS #################################################################### */


COMPUTE j=make(N,1,1). /* Create column vector of 1's */
COMPUTE X={j,X1}. /* joins column of 1's in front of X1 columns */
COMPUTE XT=TRANSPOS(X). /* XT is the transpose of X */
COMPUTE XDX=XT*X. /* X'X */
COMPUTE IXDX=INV(XDX). /* (X'X)^ -1 */
COMPUTE BETA=IXDX*XT*y. /* BETA= ( (X'X) ^ -1)X'y */
COMPUTE BETAT=TRANSPOS(BETA).
COMPUTE YT = TRANSPOS(Y).
COMPUTE JT=TRANSPOS(J).
COMPUTE MODELSS=BETAT*XT*Y-(JT*Y)**2/N.
COMPUTE ERRSS=YT*Y-BETAT*XT*Y.
COMPUTE TOTALSS = YT*Y-(JT*Y)**2/N.
COMPUTE MMS=MODELSS/IND_VARS.
COMPUTE ERRMS=ERRSS/(N-IND_VARS-1).
COMPUTE F=MMS/ERRMS.
COMPUTE FP=1-FCDF(F,IND_VARS,N-IND_VARS-1).
COMPUTE VAR=IXDX*ERRSS.
COMPUTE VAR=VAR/(N-IND_VARS-1).
COMPUTE SE=SQRT(DIAG(VAR)).
COMPUTE TVAL=BETA/SE.
COMPUTE TVALF=TVAL&**2.
COMPUTE PVAL=1-FCDF(TVALF,1,N-IND_VARS-1).
COMPUTE TAB = {BETA,SE,TVAL,PVAL}.

COMPUTE RSQ= MODELSS/TOTALSS.
COMPUTE ADJRSQ=1-ERRMS/TOTALSS*(N-1).

/* ########### OUTPUT ######################################################################################## */

PRINT BETA.
PRINT X.
PRINT Y.
PRINT XT.
PRINT XDX.
PRINT IXDX.
PRINT MODELSS.
PRINT ERRSS.
PRINT TOTALSS.
PRINT MMS.
PRINT ERRMS.
PRINT F.
PRINT FP.
PRINT VAR.
PRINT SE.
PRINT TAB.
PRINT RSQ.
PRINT ADJRSQ.

END MATRIX.

Comments

Popular posts from this blog

Interfacing C# .Net and R - Integrating the best of both worlds

In specific software areas like in quantitative finance or else in other mathematical domains, data centric programming typically requires a good balance between three requirements - (1) a solid platform with rich mathematical/statistical functionality (2) having an easy to use, contemporary, programming environment which permits easy and flexible front end code development and (3) an easy to use interface between the two environments. In this artcile I am going to explain how such a balance can be attained by using two of the best products in their specific worlds - using the rich R library as the mathematical/statistical component but then interfacing with C# for the front end application design. As an interfacing option I banked on using R (D)COM which provides an easy to use interfacing method which keeps you away from spending hours identifying interfacing problems. The software required for this tutorial is the following: 1. R software ( download from here ) 2. R (D)COM Interf

Interfacing C# .Net and R - Integrating the best of both worlds (Part 2)

This post is a continuation from the previous post ( Part I ) focusing on interfacing C# with R using the R (D)COM. In this post I am going to enhance my previous exercise by creating a Facade .Net Class which facilitates access to specific functions in R. Creating the R Facade Class Creating a Facade Class (or a set of .Net classes) which acts as a .Net wrapper to R functions greatly facilitate the use of R functions and their integration within the .Net programming environment. Below I am showing an excerpt from the class RFacade that I have created in this example. using System; using System.Collections.Generic; using System.Linq; using System.Text; using StatConnectorCommonLib; using STATCONNECTORSRVLib; using System.Runtime.InteropServices; namespace R { class RFacade : IDisposable {      private StatConnector rconn;      private bool disposed = false;      public RFacade()      {           rconn = new STATCONNECTORSRVLib.StatConnector();           rcon

Simple moving average trading strategy using Python

Hi All, I am presenting simple boiler point code that can quickly be applied to test technical indicator strategies using Python. The code: 1. downloads daily stock data from google, 2. calculates the short and long moving averages 3. generates the trading signals 4. calculates the daily returns 5. runs the moving average strategy and calculates the cumulative return 6. plots cumulative return of our simple strategy Here is the code ... enjoy trying it out and extend it as required: import numpy as np import pandas_datareader as datar import datetime import matplotlib.pyplot as plt date_start = datetime.datetime( 2017 , 1 , 1 ) date_end = datetime.datetime( 2017 , 6 , 30 ) data = datar.get_data_google( 'AAPL' , date_start , date_end) short_ma = 5 long_ma = 20 data[ 'short_ma' ] = data[ 'Close' ].rolling(short_ma).mean() data[ 'long_ma' ] = data[ 'Close' ].rolling(long_ma).mean() data[ 'masig' ] = data[ 'short_ma'