Click or drag to resize
Accord.NET (logo)

LogisticRegressionAnalysis Class

Logistic Regression Analysis.
Inheritance Hierarchy
SystemObject
  Accord.MachineLearningTransformBaseDouble, Double
    Accord.Statistics.AnalysisLogisticRegressionAnalysis

Namespace:  Accord.Statistics.Analysis
Assembly:  Accord.Statistics (in Accord.Statistics.dll) Version: 3.6.0
Syntax
[SerializableAttribute]
public class LogisticRegressionAnalysis : TransformBase<double[], double>, 
	IRegressionAnalysis, IMultivariateAnalysis, IAnalysis, ISupervisedLearning<LogisticRegression, double[], int>, 
	ISupervisedLearning<LogisticRegression, double[], double>
Request Example View Source

The LogisticRegressionAnalysis type exposes the following members.

Constructors
  NameDescription
Public methodLogisticRegressionAnalysis
Constructs a Logistic Regression Analysis.
Public methodLogisticRegressionAnalysis(Double, Double) Obsolete.
Constructs a Logistic Regression Analysis.
Public methodLogisticRegressionAnalysis(Double, Double, Double) Obsolete.
Constructs a Logistic Regression Analysis.
Public methodLogisticRegressionAnalysis(Double, Double, String, String) Obsolete.
Constructs a Logistic Regression Analysis.
Public methodLogisticRegressionAnalysis(Double, Double, Double, String, String) Obsolete.
Constructs a Logistic Regression Analysis.
Top
Properties
  NameDescription
Public propertyArray Obsolete.
Gets the source matrix from which the analysis was run.
Public propertyChiSquare
Gets the Chi-Square (Likelihood Ratio) Test for the model.
Public propertyCoefficients
Gets the collection of coefficients of the model.
Public propertyCoefficientValues
Gets the value of each coefficient.
Public propertyComputeInnerModels
Gets or sets whether nested models should be computed in order to calculate the likelihood-ratio test of each of the coefficients. Default is false.
Public propertyConfidences
Gets the 95% Confidence Intervals (C.I.) for each coefficient found in the regression.
Public propertyDeviance
Gets the Deviance of the model.
Public propertyInformationMatrix
Gets the information matrix obtained during learning.
Public propertyInputs
Gets or sets the name of the input variables for the model.
Public propertyIterations
Gets or sets the maximum number of iterations to be performed by the regression algorithm. Default is 50.
Public propertyLikelihoodRatioTests
Gets the Likelihood-Ratio Tests for each coefficient.
Public propertyLogLikelihood
Gets the Log-Likelihood for the model.
Public propertyNumberOfInputs
Gets the number of inputs accepted by the model.
(Inherited from TransformBaseTInput, TOutput.)
Public propertyNumberOfOutputs
Gets the number of outputs generated by the model.
(Inherited from TransformBaseTInput, TOutput.)
Public propertyNumberOfSamples
Gets the number of samples used to compute the analysis.
Public propertyOddsRatios
Gets the Odds Ratio for each coefficient found during the logistic regression.
Public propertyOutput
Gets or sets the name of the output variable for the model.
Public propertyOutputs Obsolete.
Gets the dependent variable value for each of the source input points.
Public propertyRegression
Gets the Logistic Regression model created and evaluated by this analysis.
Public propertyRegularization
Gets or sets the regularization value to be added in the objective function. Default is 1e-10.
Public propertyResult Obsolete.
Gets the resulting probabilities obtained by the logistic regression model.
Public propertySource Obsolete.
Gets the source matrix from which the analysis was run.
Public propertyStandardErrors
Gets the Standard Error for each coefficient found during the logistic regression.
Public propertyToken
Gets or sets a cancellation token that can be used to stop the learning algorithm while it is running.
Public propertyTolerance
Gets or sets the difference between two iterations of the regression algorithm when the algorithm should stop. The difference is calculated based on the largest absolute parameter change of the regression. Default is 1e-5.
Public propertyWaldTests
Gets the Wald Tests for each coefficient.
Public propertyWeights Obsolete.
Gets the sample weight associated with each input vector.
Top
Methods
  NameDescription
Public methodCompute Obsolete.
Computes the Logistic Regression Analysis.
Public methodCompute(LogisticRegression) Obsolete.
Computes the Logistic Regression Analysis for an already computed regression.
Public methodCompute(Double, Int32) Obsolete.
Computes the Logistic Regression Analysis.
Public methodEquals
Determines whether the specified object is equal to the current object.
(Inherited from Object.)
Protected methodFinalize
Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object.)
Public methodStatic memberFromSummary Obsolete.
Creates a new LogisticRegressionAnalysis from summarized data. In summary data, instead of having a set of inputs and their associated outputs, we have the number of times an input vector had a positive label in the data set and how many times it had a negative label.
Public methodGetConfidenceInterval
Gets the confidence interval for a given input.
Public methodGetHashCode
Serves as the default hash function.
(Inherited from Object.)
Public methodGetLikelihoodRatio Obsolete.
Gets the Log-Likelihood Ratio between this model and another model.
Public methodGetPredictionInterval
Gets the prediction interval for a given input.
Public methodGetType
Gets the Type of the current instance.
(Inherited from Object.)
Public methodLearn(Double, Double, Double)
Learns a model that can map the given inputs to the given outputs.
Public methodLearn(Double, Int32, Double)
Learns a model that can map the given inputs to the given outputs.
Public methodLearn(Double, Int32, Int32)
Learns a model that can map the given inputs to the given outputs.
Protected methodMemberwiseClone
Creates a shallow copy of the current Object.
(Inherited from Object.)
Public methodToString
Returns a string that represents the current object.
(Inherited from Object.)
Public methodTransform(TInput)
Applies the transformation to a set of input vectors, producing an associated set of output vectors.
(Inherited from TransformBaseTInput, TOutput.)
Public methodTransform(Double)
Applies the transformation to an input, producing an associated output.
(Overrides TransformBaseTInput, TOutputTransform(TInput).)
Public methodTransform(TInput, TOutput)
Applies the transformation to an input, producing an associated output.
(Inherited from TransformBaseTInput, TOutput.)
Top
Extension Methods
  NameDescription
Public Extension MethodHasMethod
Checks whether an object implements a method with the given name.
(Defined by ExtensionMethods.)
Public Extension MethodIsEqual
Compares two objects for equality, performing an elementwise comparison if the elements are vectors or matrices.
(Defined by Matrix.)
Public Extension MethodToT
Converts an object into another type, irrespective of whether the conversion can be done at compile time or not. This can be used to convert generic types to numeric types during runtime.
(Defined by ExtensionMethods.)
Top
Remarks

The Logistic Regression Analysis tries to extract useful information about a logistic regression model.

This class can also be bound to standard controls such as the DataGridView by setting their DataSource property to the analysis' Coefficients property.

References:

  • E. F. Connor. Logistic Regression. Available on: http://userwww.sfsu.edu/~efc/classes/biol710/logistic/logisticreg.htm
  • C. Shalizi. Logistic Regression and Newton's Method. Lecture notes. Available on: http://www.stat.cmu.edu/~cshalizi/350/lectures/26/lecture-26.pdf
  • A. Storkey. Learning from Data: Learning Logistic Regressors. Available on: http://www.inf.ed.ac.uk/teaching/courses/lfd/lectures/logisticlearn-print.pdf

Examples

The following example shows to create a Logistic regresion analysis using a full dataset composed of input vectors and a binary output vector. Each input vector has an associated label (1 or 0) in the output vector, where 1 represents a positive label (yes, or true) and 0 represents a negative label (no, or false).

// We can also investigate all parameters individually. For
// example the coefficients values will be available at the
// vector

double[] coef = lra.CoefficientValues;

// The first value refers to the model's intercept term. We
// can also retrieve the odds ratios and standard errors:

double[] odds = lra.OddsRatios;
double[] stde = lra.StandardErrors;

// We can use the analysis to predict a probability for a new patient:
double y = lra.Regression.Probability(new double[] { 87, 1 }); // 0.75

// For those inputs, the answer probability is approximately 75%.

// We can also obtain confidence intervals for the probability:
DoubleRange ci = lra.GetConfidenceInterval(new double[] { 87, 1 });

The resulting table is shown below.

// Suppose we have the following data about some patients.
// The first variable is continuous and represent patient
// age. The second variable is dichotomic and give whether
// they smoke or not (this is completely fictional data).

double[][] inputs =
{
    //            Age  Smoking
    new double[] { 55,    0   }, 
    new double[] { 28,    0   }, 
    new double[] { 65,    1   }, 
    new double[] { 46,    0   }, 
    new double[] { 86,    1   }, 
    new double[] { 56,    1   }, 
    new double[] { 85,    0   }, 
    new double[] { 33,    0   }, 
    new double[] { 21,    1   }, 
    new double[] { 42,    1   }, 
};

// Additionally, we also have information about whether
// or not they those patients had lung cancer. The array
// below gives 0 for those who did not, and 1 for those
// who did.

double[] output =
{
    0, 0, 0, 1, 1, 1, 0, 0, 0, 1
};

// Create a Logistic Regression analysis
var lra = new LogisticRegressionAnalysis()
{
    Regularization = 0
};

// compute the analysis
LogisticRegression regression = lra.Learn(inputs, output);

// Now we can show a summary of the analysis
// Accord.Controls.DataGridBox.Show(regression.Coefficients);

The analysis can also be created from data given in a summary form. Instead of having one input vector associated with one positive or negative label, each input vector is associated with the proportion of positive to negative labels in the original dataset.

// Suppose we have a (fictitious) data set about patients who 
// underwent cardiac surgery. The first column gives the number
// of arterial bypasses performed during the surgery. The second
// column gives the number of patients whose surgery went well,
// while the third column gives the number of patients who had
// at least one complication during the surgery.
// 
int[,] data =
{
    // # of stents       success     complications
    {       1,             140,           45       },
    {       2,             130,           60       },
    {       3,             150,           31       },
    {       4,              96,           65       }
};

// Get input variable and number of positives and negatives
double[][] inputs = data.GetColumn(0).ToDouble().ToJagged();
int[] positive = data.GetColumn(1);
int[] negative = data.GetColumn(2);

// Create a new Logistic Regression Analysis from the summary data
var lra = new LogisticRegressionAnalysis();

// compute the analysis
LogisticRegression regression = lra.Learn(inputs, positive, negative);

// Now we can show a summary of the analysis
// Accord.Controls.DataGridBox.Show(regression.Coefficients);


// We can also investigate all parameters individually. For
// example the coefficients values will be available at the
// vector

double[] coef = lra.CoefficientValues;

// The first value refers to the model's intercept term. We
// can also retrieve the odds ratios and standard errors:

double[] odds = lra.OddsRatios;
double[] stde = lra.StandardErrors;


// Finally, we can use it to estimate risk for a new patient
double y = lra.Regression.Probability(new double[] { 4 }); // 67.0
See Also