ols#
Purpose#
Computes a least squares regression.
Format#
- { vnam, m, b, stb, vc, stderr, sigma, cx, rsq, resid, dwstat } = ols(dataset, depvar, indvars)#
- { vnam, m, b, stb, vc, stderr, sigma, cx, rsq, resid, dwstat } = ols(dataset, formula)
- Parameters:
dataset (string) –
name of dataset or null string.
If dataset is a null string, the procedure assumes that the actual data has been passed in the next two arguments.
depvar (string or scalar or Nx1 vector) –
If dataset contains a string, then depvar can be a:
type
value
string
name of dependent variable
scalar
index of dependent variable. If scalar 0, the last column of the dataset will be used.
If dataset is a null string or 0:
type
value
Nx1 vector
the dependent variable.
indvars (Kx1 vector or NxK matrix) –
If dataset contains a string:
type
value
Kx1 character vector
names of independent variables
Kx1 numeric vector
indices of independent variables. These can be any size subset of the variables in the dataset and can be in any order. If a scalar 0 is passed, all columns of the dataset will be used except for the one used for the dependent variable.
If dataset is a null string or 0:
type
value
NxK matrix
the independent variables
formula (string) –
formula string of the model.
E.g
"y ~ X1 + X2"
,y
is the name of dependent variable,X1
andX2
are names of independent variables;E.g
"y ~ ."
, ‘.’ means including all variables except dependent variabley
;E.g
"y ~ -1 + X1 + X2"
,-1
means no intercept model.
- Returns:
vnam ((K+2)x1 or (K+1)x1 character vector) – the variable names used in the regression. If a constant term is used, this vector will be \((K+2) \times 1\), and the first name will be
CONSTANT
. The last name will be the name of the dependent variable.m (MxM matrix) –
where \(M = K+2\), the moment matrix constructed by calculating \(x'x\) where x is a matrix containing all useable observations and having columns in the order:
1.0
indvars
depvar
(constant)
(independent variables)
(dependent variable)
A constant term is always used in computing m.
b (Dx1 vector) –
the least squares estimates of parameters
Error handling is controlled by the low order bit of the trap flag.
- trap 0:
terminate with error message
- trap 1:
return scalar error code in b
30
system singular
31
system underdetermined
32
same number of columns as rows
33
too many missings
34
file not found
35
no variance in an independent variable
The system can become underdetermined if you use listwise deletion and have missing values. In that case, it is possible to skip so many cases that there are fewer useable rows than columns in the dataset.
stb (Kx1 vector) – the standardized coefficients.
vc (DxD matrix) – the variance-covariance matrix of estimates.
stderr (Dx1 vector) – the standard errors of the estimated parameters.
sigma (scalar) – standard deviation of residual.
cx ((K+1)x(K+1) matrix) – correlation matrix of variables with the dependent variable as the last column.
rsq (scalar) – R square, coefficient of determination.
resid (residuals) –
\(resid = y - x * b\).
If _olsres = 1, the residuals will be computed.
If the data is taken from a dataset, a new dataset will be created for the residuals, using the name in the global string variable _olsrnam. The residuals will be saved in this dataset as an Nx1 column. The resid return value will be a string containing the name of the new dataset containing the residuals. If the data is passed in as a matrix, the resid return value will be the Nx1 vector of residuals.
dwstat (scalar) – Durbin-Watson statistic.
Global Input#
Defaults are provided for the following global input variables, so they can be ignored unless you need control over the other options provided by this procedure.
- __altnam:
(character vector), default 0.
This can be a \((K+1) \times 1\) or \((K+2) \times 1\) character vector of alternate variable names for the output. If __con is 1, this must be \((K+2) \times 1\). The name of the dependent variable is the last element.
- __con:
(scalar), default 1.
1
a constant term will be added, \(D = K+1.\)
0
no constant term will be added, \(D = K.\)
A constant term will always be used in constructing the moment matrix m.
- __miss:
(scalar), default 0.
0
there are no missing values (fastest).
1
listwise deletion, drop any cases in which missings occur.
2
pairwise deletion, this is equivalent to setting missings to 0 when calculating m. The number of cases computed is equal to the total number of cases in the dataset.
- __olsalg:
(string), default “cholup”. Selects the algorithm used for computing the parameter estimates. The default Cholesky update method is more computationally efficient; however, accuracy can suffer for poorly conditioned data. For higher accuracy, set __olsalg to either
qr
orsvd
.qr
Solves for the parameter estimates using a qr decomposition.
svd
Solves for the parameter estimates using a singular value decomposition.
- __output:
(scalar), default 1.
1
print the statistics.
0
do not print statistics.
- __row:
(scalar), the number of rows to read per iteration of the read loop. Default 0.
If 0, the number of rows will be calculated internally. If you get an insufficient memory error while executing
ols()
, you can supply a value for __row that works on your system.The answers may vary slightly due to rounding error differences when a different number of rows is read per iteration. You can use __row to control this if you want to get exactly the same rounding effects between several runs.
- _olsres:
(scalar), default 0.
1
compute residuals (resid) and Durbin-Watson statistic (dwstat).
0
resid = 0, dwstat = 0.
Examples#
Example 1#
// Set y matrix
y = { 2,
3,
1,
7,
5 };
// Set x matrix
x = { 1 3 2,
2 3 1,
7 1 7,
5 3 1,
3 5 5 };
// Set output to file
output file = ols.out reset;
// Estimate OLS function
call ols(0, y, x);
// Turn off output
output off;
In this example, the output from ols()
is put into a file called ols.out
as well as being printed to the window. This example will compute a
least squares regression of y on x. The return values are discarded by
using a call statement.
// Set the data file
data = "olsdat";
// Dependent variable
depvar = { score };
// independent variables
indvars = { region, age, marstat };
// Turn on residuals
_olsres = 1;
// Set output file
output file = lpt1 on;
// Call OLS
{ nam, m, b, stb, vc, std, sig, cx, rsq, resid, dbw } = ols(data, depvar, indvars);
output off;
In this example, the dataset olsdat.dat
is used to compute a
regression. The dependent variable is score. The independent variables
are: region, age, and marstat. The residuals and Durbin-Watson statistic
will be computed. The output will be sent to the printer as well as the
window and the returned values are assigned to variables.
Example 2#
Pass in a dataset name and variable names
// Set filename
fname = getGAUSShome() $+ "examples/credit.dat";
// Specify the formula, Limit is dependent variable and Balance,
// Income and Age are independent variables
dep = "Limit";
string indep = {"Balance", "Income", "Age"};
// Call ols function
call ols(fname, dep, indep);
After the above code,
Valid cases: 400 Dependent variable: Limit
Missing cases: 0 Deletion method: None
Total SS: 2125784986.000 Degrees of freedom: 396
R-squared: 0.939 Rbar-squared: 0.939
Residual SS: 129727134.947 Std error of est: 572.358
F(3,396): 2031.029 Probability of F: 0.000
Standard Prob Standardized Cor with
Variable Estimate Error t-value >|t| Estimate Dep Var
-------------------------------------------------------------------------------
CONSTANT 1521.904666 102.228802 14.887240 0.000 --- ---
Balance 3.168467 0.070635 44.856923 0.000 0.631111 0.861697
Income 32.566995 0.935925 34.796581 0.000 0.497271 0.792088
Age 1.677855 1.694288 0.990301 0.323 0.012539 0.100888
Example 3#
Pass in a dataset name and a Formula string
// Get filename
fname = getGAUSShome() $+ "examples/credit.dat";
// Specify the formula, 'Limit' is dependent variable
// and 'Balance', 'Income' and 'Age' are independent
// variables, '-1' means remove the intercept in the model
formula = "Limit ~ - 1 + Balance + Income + Age ";
// Call the OLS function
call ols(fname, formula);
After the above code,
Valid cases: 400 Dependent variable: Limit
Missing cases: 0 Deletion method: None
Total SS: 11096147930.000 Degrees of freedom: 397
R-squared: 0.982 Rbar-squared: 0.982
Residual SS: 202331711.222 Std error of est: 713.899
F(3,397): 7125.008 Probability of F: 0.000
Standard Prob Standardized Cor with
Variable Estimate Error t-value >|t| Estimate Dep Var
-------------------------------------------------------------------------------
Balance 3.429796 0.085339 40.190438 0.000 0.451757 0.923618
Income 33.447531 1.165041 28.709327 0.000 0.363912 0.922459
Age 23.718127 1.027629 23.080436 0.000 0.262414 0.871984
Remarks#
For poorly conditioned data the default setting for __olsalg, using the Cholesky update, may produce only four or five digits of accuracy for the parameter estimates and standard error. For greater accuracy, use either the qr or singular value decomposition algorithm by setting __olsalg to
qr
orsvd
. If you are unsure of the condition of your data, set __olsalg toqr
.No output file is modified, opened, or closed by this procedure. If you want output to be placed in a file, you need to open an output file before calling
ols()
.The supported dataset types are CSV, XLS, XLSX, HDF5, FMT, DAT
For HDF5 file, the dataset must include
file schema
and both file name and dataset name must be provided, e.g.ols("h5://C:/gauss/examples/testdata.h5/mydata", formula).
Source#
ols.src
See also
Functions olsqr()
, Formula string