Code covered by the BSD License  

Highlights from
Discriminant Analysis Programme

image thumbnail
from Discriminant Analysis Programme by Bartolomeu Rabacal
Discrimination and Classification of data to and from groups with classical/robust estimation

computeLikelihoodRatioTest(modeledCovList, covList, m_constants, m_model)
function [pValue, testStatistic, df] = computeLikelihoodRatioTest(modeledCovList, covList, m_constants, m_model)

pValue = 0;
testStatistic = 0;
df = 0;

if isempty(modeledCovList)
    return
end

if strcmp(m_model, 'linear')
	for i = 1:m_constants.numGrp
        testStatistic = testStatistic + (m_constants.numElemPerGrp(i) - 1) * log(det(covList{i}));
	end
    testStatistic = (sum(m_constants.numElemPerGrp) - m_constants.numGrp )* log(det(modeledCovList{1})) - testStatistic;
else
    for i = 1:m_constants.numGrp
        testStatistic = testStatistic + (m_constants.numElemPerGrp(i) - 1)* log(det(modeledCovList{i}) / det(covList{i}));
	end
end

switch m_model
    case 'cpc'
        df = (m_constants.numGrp - 1) * m_constants.numVar * (m_constants.numVar - 1) / 2;
%         testStatistic = testStatistic + 2 * (m_constants.numGrp - 1) * m_constants.numVar; % AIC for Flury Decomposition of Chi Square 
    case 'proportional'
        df = (m_constants.numGrp - 1) * (m_constants.numVar^2 + m_constants.numVar - 2) / 2;
%         testStatistic = testStatistic + 2 * (m_constants.numGrp - 1); % AIC for Flury Decomposition of Chi Square
    case 'linear'
        df = (m_constants.numGrp - 1) * (m_constants.numVar^2 + m_constants.numVar) / 2;
end
    
pValue = 1 - chi2cdf(testStatistic, df);

Contact us at files@mathworks.com