Example usage for org.apache.commons.math3.stat.descriptive.rank Max clear

List of usage examples for org.apache.commons.math3.stat.descriptive.rank Max clear

Introduction

In this page you can find the example usage for org.apache.commons.math3.stat.descriptive.rank Max clear.

Prototype

@Override
public void clear() 

Source Link

Usage

From source file:com.itemanalysis.psychometrics.rasch.ScoreTable.java

public void updateScoreTable(int globalMaxIter, double globalConvergence, double adjust) {
    double DELTA = globalConvergence + 1.0; //LCONV
    Max maxDelta = new Max();
    int iter = 0;

    //initialize raw score and extreme score arrays
    double maxRaw = validMRS();
    int n = (int) maxRaw;
    int np1 = n + 1;
    scoreTable = new double[np1][2];
    extremeScore = new boolean[np1];
    stdError = new double[np1];
    for (int i = 0; i < np1; i++) {
        scoreTable[i][0] = i;/*from   ww  w .ja v  a2s  .c o  m*/
        scoreTable[i][1] = scoreTableProx(scoreTable[i][0], maxRaw, adjust);
        stdError[i] = 0.0;
        if (i == 0 || i == n) {
            extremeScore[i] = true;
        } else {
            extremeScore[i] = false;
        }
    }

    double previousTheta = 0.0;
    //update nonextreme persons
    while (DELTA >= globalConvergence && iter < globalMaxIter) {
        //Change in person parameter is not counted toward delta.
        for (int i = 0; i < np1; i++) {
            if (!extremeScore[i]) {
                previousTheta = scoreTable[i][1];
                scoreTable[i][1] = personUpdate(scoreTable[i][1], scoreTable[i][0], maxRaw, 0.0, DELTA);
                maxDelta.increment(Math.abs(previousTheta - scoreTable[i][1]));
            }
        }
        DELTA = maxDelta.getResult();
        maxDelta.clear();
        iter++;
    }

    int iter2 = 0;
    double DELTA2 = 1.0;
    double adjustedRaw = 0.0;
    int index = 0;
    //update lowest and highest (extreme) scores - convergence = 0.01 and maximum of 25 iterations
    while (DELTA2 >= 0.01 && iter2 < 25) {
        index = 0;
        previousTheta = scoreTable[index][1];
        adjustedRaw = adjust;
        scoreTable[index][1] = personUpdate(scoreTable[index][1], adjustedRaw, maxRaw, 0.0, DELTA);
        maxDelta.increment(Math.abs(previousTheta - scoreTable[index][1]));
        index = n;
        previousTheta = scoreTable[index][1];
        adjustedRaw = scoreTable[index][0] - adjust;
        scoreTable[index][1] = personUpdate(scoreTable[index][1], adjustedRaw, maxRaw, 0.0, DELTA);

        maxDelta.increment(Math.abs(previousTheta - scoreTable[index][1]));

        DELTA2 = maxDelta.getResult();
        maxDelta.clear();
        iter2++;
    }
}