Dew Stats Master .NET
TMtxLogistReg Component
Summary
Performs logistic regression.

Unit
StatTools

Hierarchy
TMtxLogistReg

Subclasses
None

Description
Use TMtxLogistReg component to perform ordinary or ordinal logistic regression on dataset.Suppose y takes values in k ordered categories, and let p_ij be the cumulative probability that y(i) falls in the j'th category or higher. The ordinal logistic regression model is defined as:

logit(p_ij) = theta(j) + A_i'B , i = 1,..,length(Y), j = 1,..,k-1,

where A_i is the i'th row of A . The number of ordinal categories k is taken to be the number of distinct values of int(y). If k is 2 (two categories) the model is ordinary logistic regression.

How to use TMtxLogistReg component?
1) Drop a TMtxLogistReg component on the form
2) Define A, the matrix of independent variables.
3) Define Y, grouping (categories) vector. NOTE: All values have to be integers.
4) Define initial estimates for Theta and B coefficients. Alternatively you can also set AutoInitEstimates to true and let the algorithm calculate initial estimates for Theta and B.
5) (Optionally) Set Tolerance to define desired B, Theta estimates precision. Set MaxIteration to define maximum number of iterations in main calculation loop. set Constant property to false
6) Call the Recalc method to trigger calculation.

Results:
1) B : B coefficients estimates.
2) Theta : Theta coefficients estimates.
3) TBStdErr : Theta and B coefficients estimates standard errors.

Categories
Regression routines.
 See Also 
StatToolsDialogs 

Example 1

How to setup and run logistic regression? In the following example we'll perform ordinary (i.e. with two categories) logistic regression on data, taken from NCSS statistics program. Note that TMtxLogistReg.Y vector values are binary integer values.

Uses ..., StatTools, MtxVecEdit; var TestComp: TMtxLogistReg; begin TestComp := TMtxLogistReg.Create(Self); try TestComp.A.SetIt(27,3,false, [0.8, 1.9, 0.996, 0.9, 1.4, 0.992, 0.8, 0.8, 0.982, 1, 0.7, 0.986, 0.9, 1.3, 0.98, 1, 0.6, 0.982, 0.95, 1, 0.992, 0.95, 1.9, 1.02, 1, 0.8, 0.999, 0.95, 0.5, 1.038, 0.85, 0.7, 0.988, 0.7, 1.2, 0.982, 0.8, 0.4, 1.006, 0.2, 0.8, 0.99, 1, 1.1, 0.99, 1, 1.9, 1.02, 0.65, 0.5, 1.014, 1, 1, 1.004, 0.5, 0.6, 0.99, 1, 1.1, 0.986, 1, 0.4, 1.01, 0.9, 0.6, 1.02, 1, 1, 1.002, 0.95, 1.6, 0.988, 1, 1.7, 0.99, 1, 0.9, 0.986, 1, 0.7, 0.986]); TestComp.Y.SetIt(false,[1,1,0,0,1,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,1,0]); TestComp.Recalc; // Results => // B = (9.65215222458842, 3.86710032907408, -82.073774279211) // Theta = (-67.6339061278272) // TBStdErr = (56.8875416435276, 7.75107606604495, 1.77827769017976, 61.712376172072) // meaning Theta StdErr = 56.8875416435276, // Beta StdErrs = 7.75107606604495, 1.77827769017976, 61.712376172072 ViewValues(TestComp.b,'B',true); ViewValues(TestComp.Theta,'Theta',true); ViewValues(TestComp.TBStdErr,'SE',true); finally TestComp.Destroy; end; end;
#include "StatTools.hpp" #include "Math387.hpp" #include "MtxVecCpp.h" void __fastcall Example(TMtxLogistReg* tc) { tc->A->SetIt(27,3,false, OPENARRAY(TSample, (0.8, 1.9, 0.996, 0.9, 1.4, 0.992, 0.8, 0.8, 0.982, 1, 0.7, 0.986, 0.9, 1.3, 0.98, 1, 0.6, 0.982, 0.95, 1, 0.992, 0.95, 1.9, 1.02, 1, 0.8, 0.999, 0.95, 0.5, 1.038, 0.85, 0.7, 0.988, 0.7, 1.2, 0.982, 0.8, 0.4, 1.006, 0.2, 0.8, 0.99, 1, 1.1, 0.99, 1, 1.9, 1.02, 0.65, 0.5, 1.014, 1, 1, 1.004, 0.5, 0.6, 0.99, 1, 1.1, 0.986, 1, 0.4, 1.01, 0.9, 0.6, 1.02, 1, 1, 1.002, 0.95, 1.6, 0.988, 1, 1.7, 0.99, 1, 0.9, 0.986, 1, 0.7, 0.986))); tc->Y->SetIt(false,OPENARRAY(TSample,(1,1,0,0,1,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,1,0))); tc->Recalc(); // Results => // B = (9.65215222458842, 3.86710032907408, -82.073774279211) // Theta = (-67.6339061278272) // TBStdErr = (56.8875416435276, 7.75107606604495, 1.77827769017976, 61.712376172072) // meaning Theta StdErr = 56.8875416435276, // Beta StdErrs = 7.75107606604495, 1.77827769017976, 61.712376172072 }
using Dew.Stats; using Dew.Stats.Units; using Dew.Math; namespace Dew.Examples { private void Example(StatTools.TMtxLogistReg tc) { tc.A.SetIt(27,3,false, new double[] {0.8, 1.9, 0.996, 0.9, 1.4, 0.992, 0.8, 0.8, 0.982, 1, 0.7, 0.986, 0.9, 1.3, 0.98, 1, 0.6, 0.982, 0.95, 1, 0.992, 0.95, 1.9, 1.02, 1, 0.8, 0.999, 0.95, 0.5, 1.038, 0.85, 0.7, 0.988, 0.7, 1.2, 0.982, 0.8, 0.4, 1.006, 0.2, 0.8, 0.99, 1, 1.1, 0.99, 1, 1.9, 1.02, 0.65, 0.5, 1.014, 1, 1, 1.004, 0.5, 0.6, 0.99, 1, 1.1, 0.986, 1, 0.4, 1.01, 0.9, 0.6, 1.02, 1, 1, 1.002, 0.95, 1.6, 0.988, 1, 1.7, 0.99, 1, 0.9, 0.986, 1, 0.7, 0.986});; tc.Y.SetIt(false,new double[] {1,1,0,0,1,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,1,0}); tc.Recalc(); // Results => // B = (9.65215222458842, 3.86710032907408, -82.073774279211) // Theta = (-67.6339061278272) // TBStdErr = (56.8875416435276, 7.75107606604495, 1.77827769017976, 61.712376172072) // meaning Theta StdErr = 56.8875416435276, // Beta StdErrs = 7.75107606604495, 1.77827769017976, 61.712376172072 } }


Properties

 Name  Summary 
A Independent variables. 
Alpha Desired significant value for the statistical tests. 
AutoInitEstimates Automatically calculate initial estimates for regression coefficients. 
AutoUpdate  
B B coefficients estimates. 
Dirty  
MaxIteration Defines one of the conditions for terminating the regression coefficient calculation. 
TBStdErr Standard errors of Theta, B estimates. 
Theta Theta coefficients estimates. 
Tolerance Defines one of the conditions for terminating the regression coefficient calculation. 
Y Grouping variable. 

Methods

 Name  Summary 
Loaded  
Recalc Triggers logistic regression recalculation. 

Copyright 2008 Dew Research
http://www.dewresearch.com