Package flanagan.analysis

Source Code of flanagan.analysis.Cronbach

/*
*   CLASS:      Cronbach
*
*   USAGE:      Cronbach raw data alpha reliability
*               Cronbach standardized data alpha reliability
*               Correlation between items
*               Deletion of items
*
*   This is a subclass of the superclass Scores
*
*
*   WRITTEN BY: Dr Michael Thomas Flanagan
*
*   DATE:       July and Agust 2008
*   AMENDED:    22 August 2008, 29 August 2008, 1-8 October 2008, 1-4 November 2010
*
*   DOCUMENTATION:
*   See Michael Thomas Flanagan's Java library on-line web pages:
*   http://www.ee.ucl.ac.uk/~mflanaga/java/
*   http://www.ee.ucl.ac.uk/~mflanaga/java/Cronbach.html
*
*   Copyright (c) 2008 Michael Thomas Flanagan
*
*   PERMISSION TO COPY:
*
* Permission to use, copy and modify this software and its documentation for NON-COMMERCIAL purposes is granted, without fee,
* provided that an acknowledgement to the author, Dr Michael Thomas Flanagan at www.ee.ucl.ac.uk/~mflanaga, appears in all copies
* and associated documentation or publications.
*
* Redistributions of the source code of this source code, or parts of the source codes, must retain the above copyright notice, this list of conditions
* and the following disclaimer and requires written permission from the Michael Thomas Flanagan:
*
* Redistribution in binary form of all or parts of this class must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution and requires written permission from the Michael Thomas Flanagan:
*
* Dr Michael Thomas Flanagan makes no representations about the suitability or fitness of the software for any or for a particular purpose.
* Dr Michael Thomas Flanagan shall not be liable for any damages suffered as a result of using, modifying or distributing this software
* or its derivatives.
*
***************************************************************************************/


package flanagan.analysis;

import java.util.*;
import java.text.*;

import flanagan.math.Fmath;
import flanagan.math.ArrayMaths;
import flanagan.io.Db;
import flanagan.io.FileOutput;
import flanagan.analysis.Scores;
import flanagan.analysis.Stat;
import flanagan.plot.PlotGraph;
import flanagan.plot.Plot;


public class Cronbach extends Scores{

    private double rawAlpha = Double.NaN;                               // Cronbach raw data alpha reliability coefficient
    private boolean rawAlphaCalculated = false;                         // = true when raw data alpha reliability coefficient calculated
    private double standardizedAlpha = Double.NaN;                      // Cronbach standardized data alpha reliability coefficient
    private boolean standardizedAlphaCalculated = false;                // = true when standardized alpha reliability coefficient calculated

    private int deletedItemIndex = -1;                                  // the index of the least consistent item
    private String deletedFilename = null;                              // File name of new data file with least consistent item deleted


    // CONSTRUCTOR
    public Cronbach(){
        super();
    }

    // CRONBACH RAW DATA ALPHA
    public double rawAlpha(){

        if(!this.rawAlphaCalculated){

            if(this.nItems==1){
                System.out.println("Method rawAlpha: only one item - alpha cannot be calculated - NaN returned");
                this.rawAlpha = Double.NaN;
            }
            else{

                // Check that data is preprocessed
                if(!this.dataPreprocessed)this.preprocessData();

                // (Sum of scores1) squared
                double rawAllResponsesTotalAllSquared = this.rawAllResponsesTotal*this.rawAllResponsesTotal;

                // Sum of (scores1 squared)
                double sumOfEachScoreSquared = 0.0;
                for(int i=0;i<this.nItems;i++){
                    for(int j=0;j<this.nPersons;j++)sumOfEachScoreSquared += scores1[j][i]*scores1[j][i];
                }


                // Reduced sum of column totals squared
                double reducedItemTotalsSquared = 0.0;
                for(int i=0;i<this.nItems;i++)reducedItemTotalsSquared += rawItemTotals[i]*rawItemTotals[i]/this.nPersons;

                // Reduced sum of row totals squared
                double reducedPersonTotalsSquared = 0.0;
                for(int i=0;i<this.nPersons;i++)reducedPersonTotalsSquared += rawPersonTotals[i]*rawPersonTotals[i]/this.nItems;

                //Sum of squares within persons
                double sumOfSquaresWithinPersons = reducedPersonTotalsSquared - rawAllResponsesTotalAllSquared/this.nScores;

                //Sum of square errors
                double sumOfSquareErrors = sumOfEachScoreSquared - reducedItemTotalsSquared - reducedPersonTotalsSquared + rawAllResponsesTotalAllSquared/this.nScores;

                //Degrees of freedom
                //iiems
                int dfItems = this.nItems- 1;
                //persons
                int dfPersons = this.nPersons - 1;
                // errors
                int dfErrors = dfItems*dfPersons;

                // Mean Squares
                double reducedSquarePersons = sumOfSquaresWithinPersons/dfPersons;
                double reducedSquareErrors = sumOfSquareErrors/dfErrors;

                // Cronbach raw alpha reliability coefficient
                this.rawAlpha  = (reducedSquarePersons - reducedSquareErrors)/reducedSquarePersons;
                this.rawAlphaCalculated = true;
            }
        }
        return  this.rawAlpha;
    }



    // CRONBACH STANDARDIZED DATA ALPHA
    public double standardizedAlpha(){

        if(!this.standardizedAlphaCalculated){

            if(this.nItems==1){
                System.out.println("Method standardizedAlpha: only one item - alpha cannot be calculated - NaN returned");
                this.rawAlpha = Double.NaN;
            }
            else{

                // Check that data is preprocessed
                if(!this.dataPreprocessed)this.preprocessData();

                // Calculate correlation coefficients
                if(!this.covariancesCalculated)this.covariancesAndCorrelationCoefficients();

                // Cronbach standardized alpha reliability coefficient
                this.standardizedAlpha = this.nItems*this.rawMeanRhoWithoutTotals/(1.0 (this.nItems - 1)*this.rawMeanRhoWithoutTotals);
                this.standardizedAlphaCalculated = true;
            }
        }

        return this.standardizedAlpha;
    }

    public double standardisedAlpha(){
        return this.standardizedAlpha();
    }





    // OUTPUT THE ANALYSIS

    // Full analysis without output of input data
    // no input file name entered via method argument list
    public void analysis(){

        this.outputFilename = "CronbachOutput";
        if(this.fileOption==1){
            this.outputFilename += ".txt";
        }
        else{
            this.outputFilename += ".xls";
        }
        String message1 = "Output file name for the analysis details:";
        String message2 = "\nEnter the required name (as a single word) and click OK ";
        String message3 = "\nor simply click OK for default value";
        String message = message1 + message2 + message3;
        String defaultName = this.outputFilename;
        this.outputFilename = Db.readLine(message, defaultName);
        this.analysis(this.outputFilename);
    }

    // Full analysis without output of input data
    // input file name via method argument list
    public void analysis(String filename){
        // Open output file
        this.outputFilename = filename;
        String outputFilenameWithoutExtension = null;
        String extension = null;
        int pos = filename.indexOf('.');
        if(pos==-1){
            outputFilenameWithoutExtension = filename;
            if(this.fileOption==1){
                this.outputFilename += ".txt";
            }
            else{
                this.outputFilename += ".xls";
            }
        }
        else{
            extension = (filename.substring(pos)).trim();

            outputFilenameWithoutExtension = (filename.substring(0, pos)).trim();
            if(extension.equalsIgnoreCase(".xls")){
                if(this.fileOption==1){
                    if(this.fileOptionSet){
                        String message1 = "Your entered output file type is .xls";
                        String message2 = "\nbut you have chosen a .txt output";
                        String message = message1 + message2;
                        String headerComment = "Your output file name extension";
                        String[] comments = {message, "replace it with .txt [text file]"};
                        String[] boxTitles = {"Retain", ".txt"};
                        int defaultBox = 1;
                        int opt =  Db.optionBox(headerComment, comments, boxTitles, defaultBox);
                        if(opt==2)this.outputFilename = outputFilenameWithoutExtension + ".txt";
                    }
                    else{
                        this.fileOption=2;
                    }
                }
             }

             if(extension.equalsIgnoreCase(".txt")){
                if(this.fileOption==2){
                    if(this.fileOptionSet){
                        String message1 = "Your entered output file type is .txt";
                        String message2 = "\nbut you have chosen a .xls output";
                        String message = message1 + message2;
                        String headerComment = "Your output file name extension";
                        String[] comments = {message, "replace it with .xls [Excel file]"};
                        String[] boxTitles = {"Retain", ".xls"};
                        int defaultBox = 1;
                        int opt =  Db.optionBox(headerComment, comments, boxTitles, defaultBox);
                        if(opt==2)this.outputFilename = outputFilenameWithoutExtension + ".xls";
                    }
                    else{
                        this.fileOption=1;
                    }
                }
             }

             if(!extension.equalsIgnoreCase(".txt") && !extension.equalsIgnoreCase(".xls")){
                    String message1 = "Your extension is " + extension;
                    String message2 = "\n    Do you wish to retain it:";
                    String message = message1 + message2;
                    String headerComment = "Your output file name extension";
                    String[] comments = {message, "replace it with .txt [text file]", "replace it with .xls [MS Excel file]"};
                    String[] boxTitles = {"Retain", ".txt", ".xls"};
                    int defaultBox = 1;
                    int opt =  Db.optionBox(headerComment, comments, boxTitles, defaultBox);
                    switch(opt){
                        case 1: this.fileOption=1;
                                break;
                        case 2: this.outputFilename = outputFilenameWithoutExtension + ".txt";
                                this.fileOption=1;
                                break;
                        case 3: this.outputFilename = outputFilenameWithoutExtension + ".xls";
                                this.fileOption=2;
                                break;
                    }
            }
        }

        if(this.fileOption==1){
            this.analysisText();
        }
        else{
            this.analysisExcel();
        }
    }

    private void analysisExcel(){

        FileOutput fout = null;
        if(this.fileNumberingSet){
            fout = new FileOutput(this.outputFilename, 'n');
        }
        else{
            fout = new FileOutput(this.outputFilename);
        }

        // calculate alphas if not already calculated
        if(!rawAlphaCalculated)this.rawAlpha();
        if(!standardizedAlphaCalculated)this.standardizedAlpha();

        // output title information

        fout.println("CRONBACH'S ALPHA RELIABILITY ESTIMATOR");
        fout.println("Program: Cronbach - Analysis Output");
        for(int i=0; i<this.titleLines; i++)fout.println(title[i]);
        Date d = new Date();
        String day = DateFormat.getDateInstance().format(d);
        String tim = DateFormat.getTimeInstance().format(d);
        fout.println("Program executed at " + tim + " on " + day);
        fout.println();

        // output reliability estimators
        fout.println("RELIABILITY ESTIMATORS");
        fout.println("Cronbach's coefficient alpha");
        fout.printtab("Raw data                  ");
        fout.println(Fmath.truncate(this.rawAlpha, this.trunc));
        fout.printtab("Standardized data           ");
        fout.println(Fmath.truncate(this.standardizedAlpha, this.trunc));
        fout.println();

        fout.println("Average of the inter-item correlation coefficients, excluding item totals");
        fout.printtab("Raw data                  ");
        fout.println(Fmath.truncate(this.rawMeanRhoWithoutTotals, this.trunc));
        fout.printtab("Standardized data           ");
        fout.println(Fmath.truncate(this.standardizedMeanRhoWithoutTotals, this.trunc));
        fout.println();

        fout.println("Average of the inter-item correlation coefficients, including item totals");
        fout.printtab("Raw data                  ");
        fout.println(Fmath.truncate(this.rawMeanRhoWithTotals, this.trunc));
        fout.printtab("Standardized data           ");
        fout.println(Fmath.truncate(this.standardizedMeanRhoWithTotals, this.trunc));
        fout.println();

        // output any deletions or replacements
        fout.println("'NO RESPONSE' DELETIONS AND REPLACEMENTS");
        // deleted persons
        boolean deletionFlag = false;
        if(this.nDeletedPersons!=0){
            deletionFlag = true;
            fout.printtab("Number of persons deleted ");
            fout.println(this.nDeletedPersons);
            fout.printtab("Indices of deleted persons: ");
            for(int i=0; i<this.nDeletedPersons; i++)fout.printtab(this.deletedPersonsIndices[i]+1);
            fout.println();
        }
        else{
            fout.println("No persons were deleted ");
        }

        // deleted items
        if(this.nDeletedItems!=0){
            deletionFlag = true;
            fout.printtab("Number of items deleted ");
            fout.println(this.nDeletedItems);
            fout.printtab("Names of deleted items: ");
            for(int i=0; i<this.nDeletedItems; i++)fout.printtab(this.originalItemNames[this.deletedItemsIndices[i]]);
            fout.println();
        }
        else{
            fout.println("No items were deleted ");
        }

        // replacements
        if(this.nReplacements!=0){
            fout.printtab("Number of 'no responses' replaced ");
            fout.println(this.nReplacements);
            fout.printtab("Item name and person index of replacements: ");
            for(int i=0; i<this.nReplacements; i++)fout.printtab(this.replacementIndices[i] + " ");
            fout.println();
            fout.printtab("Replacement option: ");
            fout.println(this.replacementOptionNames[this.replacementOption-1]);
            fout.println();
        }
        else{
            if(deletionFlag){
                fout.println("No 'no response' replacements, other than any above deletions, were made ");
            }
            else{
                fout.println("No 'no response' replacements were made ");
            }
        }
        fout.println();
        fout.printtab("Number of items used         ");
        fout.println(this.nItems);
        fout.printtab("Number of persons used   ");
        fout.println(this.nPersons);
        fout.println();

        // Correlation coefficients
        fout.println("CORRELATION COEFFICIENTS");
        fout.println("Correlation coefficients between items  -  raw data");
        fout.printtab("    ");
        for(int i=0; i<=this.nItems; i++)fout.printtab(this.itemNames[i]);
        fout.println();
        for(int i=0; i<=this.nItems; i++){
            fout.printtab(this.itemNames[i]);
            for(int j=0; j<=this.nItems; j++)fout.printtab(Fmath.truncate(this.rawCorrelationCoefficients[i][j], this.trunc));
            fout.println();
        }
        fout.println();

        fout.print("Average inter-item correlation coefficient (excluding total)                    ");
        fout.println(Fmath.truncate(this.rawMeanRhoWithoutTotals, this.trunc));
        fout.print("Standard deviation of the inter-item correlation coefficient (excluding total)  ");
        fout.println(Fmath.truncate(this.rawStandardDeviationRhoWithoutTotals, this.trunc));
        fout.print("Average inter-item correlation coefficient (including total)                    ");
        fout.println(Fmath.truncate(this.rawMeanRhoWithTotals, this.trunc));
        fout.print("Standard deviation of the inter-item correlation coefficient (including total)  ");
        fout.println(Fmath.truncate(this.rawStandardDeviationRhoWithTotals, this.trunc));
        fout.println();


        fout.println("Correlation coefficients between items  -  standardized data");
        fout.printtab("    ");
        for(int i=0; i<=this.nItems; i++)fout.printtab(this.itemNames[i]);
        fout.println();
        for(int i=0; i<=this.nItems; i++){
            fout.printtab(this.itemNames[i]);
            for(int j=0; j<=this.nItems; j++)fout.printtab(Fmath.truncate(this.standardizedCorrelationCoefficients[i][j], this.trunc));
            fout.println();
        }
        fout.println();

        fout.print("Average inter-item correlation coefficient (excluding total)                    ");
        fout.println(Fmath.truncate(this.standardizedMeanRhoWithoutTotals, this.trunc));
        fout.print("Standard deviation of the inter-item correlation coefficient (excluding total)  ");
        fout.println(Fmath.truncate(this.standardizedStandardDeviationRhoWithoutTotals, this.trunc));
        fout.print("Average inter-item correlation coefficient (including total)                    ");
        fout.println(Fmath.truncate(this.standardizedMeanRhoWithTotals, this.trunc));
        fout.print("Standard deviation of the inter-item correlation coefficient (including total)  ");
        fout.println(Fmath.truncate(this.standardizedStandardDeviationRhoWithTotals, this.trunc));
        fout.println();


        // Item statistics
        fout.println("ITEMS: MEANS, STANDARD DEVIATIONS, SKEWNESS AND KURTOSIS");
        fout.println("Raw data");
        fout.printtab("item ");
        fout.printtab("mean");
        fout.printtab("standard");
        fout.printtab("moment");
        fout.printtab("median");
        fout.printtab("quartile");
        fout.printtab("kurtosis");
        fout.println("dichotomous");

        fout.printtab("    ");
        fout.printtab("    ");
        fout.printtab("deviation");
        fout.printtab("skewness");
        fout.printtab("skewness");
        fout.printtab("skewness");
        fout.printtab("excess  ");
        fout.println("percentage");

        for(int i=0; i<this.nItems; i++){
            fout.printtab(this.itemNames[i]);
            fout.printtab(Fmath.truncate(this.rawItemMeans[i], this.trunc));
            fout.printtab(Fmath.truncate(this.rawItemStandardDeviations[i], this.trunc));
           fout.printtab(Fmath.truncate(this.rawItemMomentSkewness[i], this.trunc));
            fout.printtab(Fmath.truncate(this.rawItemMedianSkewness[i], this.trunc));
            fout.printtab(Fmath.truncate(this.rawItemQuartileSkewness[i], this.trunc));
            fout.printtab(Fmath.truncate(this.rawItemKurtosisExcess[i], this.trunc));
            fout.println(Fmath.truncate(this.dichotomousPercentage[i], 1));
        }
        fout.println();

      fout.println("ITEMS: MINIMA, MAXIMA, MEDIANS, RANGES AND TOTALS");
        fout.println("raw data");
        fout.printtab("item ");
        fout.printtab("minimum");
        fout.printtab("maximum");
        fout.printtab("median");
        fout.printtab("range");
        fout.printtab("total");
        fout.println("dichotomous");

        fout.printtab("    ");
        fout.printtab("    ");
        fout.printtab("     ");
        fout.printtab("     ");
        fout.printtab("     ");
        fout.printtab("     ");
        fout.println("percentage");

        for(int i=0; i<this.nItems; i++){
            fout.printtab(this.itemNames[i]);
            fout.printtab(Fmath.truncate(this.rawItemMinima[i], this.trunc));
            fout.printtab(Fmath.truncate(this.rawItemMaxima[i], this.trunc));
            fout.printtab(Fmath.truncate(this.rawItemMedians[i], this.trunc));
            fout.printtab(Fmath.truncate(this.rawItemRanges[i], this.trunc));
            fout.printtab(Fmath.truncate(this.rawItemTotals[i], this.trunc));
            fout.println(Fmath.truncate(this.dichotomousPercentage[i], 1));
        }
        fout.println();

        fout.printtab("item");
        fout.printtab("mean");
        fout.printtab("standard");
        fout.printtab("variance");
        fout.printtab("minimum");
        fout.printtab("maximum");
        fout.println("range");
        fout.printtab("statistic    ");
        fout.printtab("    ");
        fout.printtab("deviation");
        fout.printtab("     ");
        fout.printtab("     ");
        fout.printtab("     ");
        fout.printtab("     ");
        fout.println("     ");

        fout.printtab("item means");
        fout.printtab(Fmath.truncate(this.rawItemMeansMean, this.trunc));
        fout.printtab(Fmath.truncate(this.rawItemMeansSd, this.trunc));
        fout.printtab(Fmath.truncate(this.rawItemMeansVar, this.trunc));
        fout.printtab(Fmath.truncate(this.rawItemMeansMin, this.trunc));
        fout.printtab(Fmath.truncate(this.rawItemMeansMax, this.trunc));
        fout.println(Fmath.truncate(this.rawItemMeansRange, this.trunc));

        fout.printtab("item standard deviations");
        fout.printtab(Fmath.truncate(this.rawItemStandardDeviationsMean, this.trunc));
        fout.printtab(Fmath.truncate(this.rawItemStandardDeviationsSd, this.trunc));
        fout.printtab(Fmath.truncate(this.rawItemStandardDeviationsVar, this.trunc));
        fout.printtab(Fmath.truncate(this.rawItemStandardDeviationsMin, this.trunc));
        fout.printtab(Fmath.truncate(this.rawItemStandardDeviationsMax, this.trunc));
        fout.println(Fmath.truncate(this.rawItemStandardDeviationsRange, this.trunc));

        fout.printtab("item variances");
        fout.printtab(Fmath.truncate(this.rawItemVariancesMean, this.trunc));
        fout.printtab(Fmath.truncate(this.rawItemVariancesSd, this.trunc));
        fout.printtab(Fmath.truncate(this.rawItemVariancesVar, this.trunc));
        fout.printtab(Fmath.truncate(this.rawItemVariancesMin, this.trunc));
        fout.printtab(Fmath.truncate(this.rawItemVariancesMax, this.trunc));
        fout.println(Fmath.truncate(this.rawItemVariancesRange, this.trunc));

        fout.printtab("item mimima");
        fout.printtab(Fmath.truncate(this.rawItemMinimaMean, this.trunc));
        fout.printtab(Fmath.truncate(this.rawItemMinimaSd, this.trunc));
        fout.printtab(Fmath.truncate(this.rawItemMinimaVar, this.trunc));
        fout.printtab(Fmath.truncate(this.rawItemMinimaMin, this.trunc));
        fout.printtab(Fmath.truncate(this.rawItemMinimaMax, this.trunc));
        fout.println(Fmath.truncate(this.rawItemMinimaRange, this.trunc));

        fout.printtab("item maxima");
        fout.printtab(Fmath.truncate(this.rawItemMaximaMean, this.trunc));
        fout.printtab(Fmath.truncate(this.rawItemMaximaSd, this.trunc));
        fout.printtab(Fmath.truncate(this.rawItemMaximaVar, this.trunc));
        fout.printtab(Fmath.truncate(this.rawItemMaximaMin, this.trunc));
        fout.printtab(Fmath.truncate(this.rawItemMaximaMax, this.trunc));
        fout.println(Fmath.truncate(this.rawItemMaximaRange, this.trunc));

        fout.printtab("item medians");
        fout.printtab(Fmath.truncate(this.rawItemMediansMean, this.trunc));
        fout.printtab(Fmath.truncate(this.rawItemMediansSd, this.trunc));
        fout.printtab(Fmath.truncate(this.rawItemMediansVar, this.trunc));
        fout.printtab(Fmath.truncate(this.rawItemMediansMin, this.trunc));
        fout.printtab(Fmath.truncate(this.rawItemMediansMax, this.trunc));
        fout.println(Fmath.truncate(this.rawItemMediansRange, this.trunc));

        fout.printtab("item ranges");
        fout.printtab(Fmath.truncate(this.rawItemRangesMean, this.trunc));
        fout.printtab(Fmath.truncate(this.rawItemRangesSd, this.trunc));
        fout.printtab(Fmath.truncate(this.rawItemRangesVar, this.trunc));
        fout.printtab(Fmath.truncate(this.rawItemRangesMin, this.trunc));
        fout.printtab(Fmath.truncate(this.rawItemRangesMax, this.trunc));
        fout.println(Fmath.truncate(this.rawItemRangesRange, this.trunc));

        fout.printtab("item totals");
        fout.printtab(Fmath.truncate(this.rawItemTotalsMean, this.trunc));
        fout.printtab(Fmath.truncate(this.rawItemTotalsSd, this.trunc));
        fout.printtab(Fmath.truncate(this.rawItemTotalsVar, this.trunc));
        fout.printtab(Fmath.truncate(this.rawItemTotalsMin, this.trunc));
        fout.printtab(Fmath.truncate(this.rawItemTotalsMax, this.trunc));
        fout.println(Fmath.truncate(this.rawItemTotalsRange, this.trunc));

        fout.println();

        fout.println("Standardized data");
        fout.println("ITEMS: MEANS, STANDARD DEVIATIONS, SKEWNESS AND KURTOSIS");
        fout.printtab("item ");
        fout.printtab("mean");
        fout.printtab("standard");
        fout.printtab("moment");
        fout.printtab("median");
        fout.printtab("quartile");
        fout.println("kurtosis");

        fout.printtab("    ");
        fout.printtab("    ");
        fout.printtab("deviation");
        fout.printtab("skewness");
        fout.printtab("skewness");
        fout.printtab("skewness");
        fout.println("excess  ");

        for(int i=0; i<this.nItems; i++){
            fout.printtab(this.itemNames[i]);
            fout.printtab(Fmath.truncate(this.standardizedItemMeans[i], this.trunc));
            fout.printtab(Fmath.truncate(this.standardizedItemStandardDeviations[i], this.trunc));
           fout.printtab(Fmath.truncate(this.standardizedItemMomentSkewness[i], this.trunc));
            fout.printtab(Fmath.truncate(this.standardizedItemMedianSkewness[i], this.trunc));
            fout.printtab(Fmath.truncate(this.standardizedItemQuartileSkewness[i], this.trunc));
            fout.println(Fmath.truncate(this.standardizedItemKurtosisExcess[i], this.trunc));
        }
        fout.println();

      fout.println("ITEMS: MINIMA, MAXIMA, MEDIANS, RANGES AND TOTALS");
        fout.println("Standardized data");
        fout.printtab("item ");
        fout.printtab("minimum");
        fout.printtab("maximum");
        fout.printtab("median");
        fout.printtab("range");
        fout.println("total");

        fout.printtab("    ");
        fout.printtab("    ");
        fout.printtab("     ");
        fout.printtab("     ");
        fout.printtab("     ");
        fout.println("     ");

        for(int i=0; i<this.nItems; i++){
            fout.printtab(this.itemNames[i]);
            fout.printtab(Fmath.truncate(this.standardizedItemMinima[i], this.trunc));
            fout.printtab(Fmath.truncate(this.standardizedItemMaxima[i], this.trunc));
            fout.printtab(Fmath.truncate(this.standardizedItemMedians[i], this.trunc));
            fout.printtab(Fmath.truncate(this.standardizedItemRanges[i], this.trunc));
            fout.println(Fmath.truncate(this.standardizedItemTotals[i], this.trunc));
        }
        fout.println();



        fout.printtab("item");
        fout.printtab("mean");
        fout.printtab("standard");
        fout.printtab("variance");
        fout.printtab("minimum");
        fout.printtab("maximum");
        fout.println("range");

        fout.printtab("statistic    ");
        fout.printtab("    ");
        fout.printtab("deviation");
        fout.printtab("     ");
        fout.printtab("     ");
        fout.printtab("     ");
        fout.printtab("     ");
        fout.println("     ");

        fout.printtab("item means");
        fout.printtab(Fmath.truncate(this.standardizedItemMeansMean, this.trunc));
        fout.printtab(Fmath.truncate(this.standardizedItemMeansSd, this.trunc));
        fout.printtab(Fmath.truncate(this.standardizedItemMeansVar, this.trunc));
        fout.printtab(Fmath.truncate(this.standardizedItemMeansMin, this.trunc));
        fout.printtab(Fmath.truncate(this.standardizedItemMeansMax, this.trunc));
        fout.println(Fmath.truncate(this.standardizedItemMeansRange, this.trunc));

        fout.printtab("item standard deviations");
        fout.printtab(Fmath.truncate(this.standardizedItemStandardDeviationsMean, this.trunc));
        fout.printtab(Fmath.truncate(this.standardizedItemStandardDeviationsSd, this.trunc));
        fout.printtab(Fmath.truncate(this.standardizedItemStandardDeviationsVar, this.trunc));
        fout.printtab(Fmath.truncate(this.standardizedItemStandardDeviationsMin, this.trunc));
        fout.printtab(Fmath.truncate(this.standardizedItemStandardDeviationsMax, this.trunc));
        fout.println(Fmath.truncate(this.standardizedItemStandardDeviationsRange, this.trunc));

        fout.printtab("item variances");
        fout.printtab(Fmath.truncate(this.standardizedItemVariancesMean, this.trunc));
        fout.printtab(Fmath.truncate(this.standardizedItemVariancesSd, this.trunc));
        fout.printtab(Fmath.truncate(this.standardizedItemVariancesVar, this.trunc));
        fout.printtab(Fmath.truncate(this.standardizedItemVariancesMin, this.trunc));
        fout.printtab(Fmath.truncate(this.standardizedItemVariancesMax, this.trunc));
        fout.println(Fmath.truncate(this.standardizedItemVariancesRange, this.trunc));

        fout.printtab("item mimima");
        fout.printtab(Fmath.truncate(this.standardizedItemMinimaMean, this.trunc));
        fout.printtab(Fmath.truncate(this.standardizedItemMinimaSd, this.trunc));
        fout.printtab(Fmath.truncate(this.standardizedItemMinimaVar, this.trunc));
        fout.printtab(Fmath.truncate(this.standardizedItemMinimaMin, this.trunc));
        fout.printtab(Fmath.truncate(this.standardizedItemMinimaMax, this.trunc));
        fout.println(Fmath.truncate(this.standardizedItemMinimaRange, this.trunc));

        fout.printtab("item maxima");
        fout.printtab(Fmath.truncate(this.standardizedItemMaximaMean, this.trunc));
        fout.printtab(Fmath.truncate(this.standardizedItemMaximaSd, this.trunc));
        fout.printtab(Fmath.truncate(this.standardizedItemMaximaVar, this.trunc));
        fout.printtab(Fmath.truncate(this.standardizedItemMaximaMin, this.trunc));
        fout.printtab(Fmath.truncate(this.standardizedItemMaximaMax, this.trunc));
        fout.println(Fmath.truncate(this.standardizedItemMaximaRange, this.trunc));

        fout.print("item medians");
        fout.print(Fmath.truncate(this.rawItemMediansMean, this.trunc));
        fout.print(Fmath.truncate(this.rawItemMediansSd, this.trunc));
        fout.print(Fmath.truncate(this.rawItemMediansVar, this.trunc));
        fout.print(Fmath.truncate(this.rawItemMediansMin, this.trunc));
        fout.print(Fmath.truncate(this.rawItemMediansMax, this.trunc));
        fout.println(Fmath.truncate(this.rawItemMediansRange, this.trunc));

        fout.printtab("item ranges");
        fout.printtab(Fmath.truncate(this.standardizedItemRangesMean, this.trunc));
        fout.printtab(Fmath.truncate(this.standardizedItemRangesSd, this.trunc));
        fout.printtab(Fmath.truncate(this.standardizedItemRangesVar, this.trunc));
        fout.printtab(Fmath.truncate(this.standardizedItemRangesMin, this.trunc));
        fout.printtab(Fmath.truncate(this.standardizedItemRangesMax, this.trunc));
        fout.println(Fmath.truncate(this.standardizedItemRangesRange, this.trunc));

        fout.printtab("item totals");
        fout.printtab(Fmath.truncate(this.standardizedItemTotalsMean, this.trunc));
        fout.printtab(Fmath.truncate(this.standardizedItemTotalsSd, this.trunc));
        fout.printtab(Fmath.truncate(this.standardizedItemTotalsVar, this.trunc));
        fout.printtab(Fmath.truncate(this.standardizedItemTotalsMin, this.trunc));
        fout.printtab(Fmath.truncate(this.standardizedItemTotalsMax, this.trunc));
        fout.println(Fmath.truncate(this.standardizedItemTotalsRange, this.trunc));

        fout.println();

        fout.println("DELETION OF ITEMS");

        fout.printtab("                ");
        fout.printtab("Raw data        ");
        fout.printtab("                ");
        fout.printtab("                ");
        fout.printtab("                ");
        fout.println("Standardized data");

        fout.printtab("Deleted item");
        fout.printtab("Alpha       ");
        fout.printtab("Correlation ");
        fout.printtab("Average     ");
        fout.printtab("Average     ");
        fout.printtab("Alpha       ");
        fout.printtab("Correlation ");
        fout.printtab("Average     ");
        fout.println("Average     ");


        fout.printtab("           ");
        fout.printtab("           ");
        fout.printtab("coefficient");
        fout.printtab("inter-item ");
        fout.printtab("inter-item ");
        fout.printtab("           ");
        fout.printtab("coefficient ");
        fout.printtab("inter-item ");
        fout.println("inter-item ");


        fout.printtab("           ");
        fout.printtab("           ");
        fout.printtab("with total ");
        fout.printtab("correlation");
        fout.printtab("correlation");
        fout.printtab("           ");
        fout.printtab("with total ");
        fout.printtab("correlation");
        fout.println("correlation");


        fout.printtab("           ");
        fout.printtab("           ");
        fout.printtab("           ");
        fout.printtab("coefficient");
        fout.printtab("coefficient");
        fout.printtab("           ");
        fout.printtab("           ");
        fout.printtab("coefficient");
        fout.println("coefficient");


        fout.printtab("              ");
        fout.printtab("              ");
        fout.printtab("              ");
        fout.printtab("without totals");
        fout.printtab("with totals   ");
        fout.printtab("              ");
        fout.printtab("              ");
        fout.printtab("without totals");
        fout.println("with totals   ");

        double[] newRawAlpha = new double[this.nItems];
        double[] newStandardizedAlpha = new double[this.nItems];
        double[] newRawRho = new double[this.nItems];
        double[] newStandardizedRho = new double[this.nItems];
        for(int i=0; i<this.nItems; i++){
            int index = i+1;
            double[][] newScore1 = this.deleteItem(index);
            Cronbach cr = new Cronbach();
            cr.enterScoresAsRowPerPerson(newScore1);
            double rawAlphaD = cr.rawAlpha();
            newRawAlpha[i] = rawAlphaD;
            double rawMeanRhoWithTotalsD = cr.rawAverageCorrelationCoefficientsWithTotals();
            double rawMeanRhoWithoutTotalsD = cr.rawAverageCorrelationCoefficients();
            double[] rawPersonTotalsD = cr.rawPersonTotals();
            double rawRhoAgainstTotalsD = Stat.corrCoeff(rawPersonTotalsD, this.scores0[i]);
            newRawRho[i] = rawRhoAgainstTotalsD;

            double standardizedAlphaD = cr.standardizedAlpha();
            newStandardizedAlpha[i] = standardizedAlphaD;
            double standardizedMeanRhoWithTotalsD = cr.standardizedAverageCorrelationCoefficientsWithTotals();
            double standardizedMeanRhoWithoutTotalsD = cr.standardizedAverageCorrelationCoefficients();
            double[] standardizedPersonTotalsD = cr.standardizedPersonTotals();
            double standardizedRhoAgainstTotalsD = Stat.corrCoeff(standardizedPersonTotalsD, this.scores0[i]);
            newStandardizedRho[i] = standardizedRhoAgainstTotalsD;

            fout.printtab(this.itemNames[i]);
            fout.printtab(Fmath.truncate(rawAlphaD, trunc));
            fout.printtab(Fmath.truncate(rawRhoAgainstTotalsD, trunc));
            fout.printtab(Fmath.truncate(rawMeanRhoWithoutTotalsD, trunc));
            fout.printtab(Fmath.truncate(rawMeanRhoWithTotalsD, trunc));

            fout.printtab(Fmath.truncate(standardizedAlphaD, trunc));
            fout.printtab(Fmath.truncate(standardizedRhoAgainstTotalsD, trunc));
            fout.printtab(Fmath.truncate(standardizedMeanRhoWithoutTotalsD, trunc));
            fout.println(Fmath.truncate(standardizedMeanRhoWithTotalsD, trunc));
        }
        fout.println();

        fout.printtab("No item deleted");
        fout.printtab(Fmath.truncate(this.rawAlpha, trunc));
        fout.printtab("   ");
        fout.printtab(Fmath.truncate(this.rawMeanRhoWithoutTotals, trunc));
        fout.printtab(Fmath.truncate(this.rawMeanRhoWithTotals, trunc));

        fout.printtab(Fmath.truncate(this.standardizedAlpha, trunc));
        fout.printtab("   ");
        fout.printtab(Fmath.truncate(this.standardizedMeanRhoWithoutTotals, trunc));
        fout.println(Fmath.truncate(this.standardizedMeanRhoWithTotals, trunc));
        fout.println();

        // output a deleted item data file
        this.deletedItemDataFile(newRawAlpha, newRawRho, newStandardizedAlpha, newStandardizedRho);


        fout.println("INDIVIDUALS - raw data");
        fout.printtab("person ");
        fout.printtab("mean");
        fout.printtab("standard");
        fout.printtab("minimum");
        fout.printtab("maximum");
        fout.printtab("range");
        fout.printtab("total");
        fout.println("scores:");

        fout.printtab("    ");
        fout.printtab("    ");
        fout.printtab("deviation");
        fout.printtab("     ");
        fout.printtab("     ");
        fout.printtab("     ");
        fout.printtab("     ");
        for(int i=0; i<this.nItems; i++)fout.printtab(this.itemNames[i]);
        fout.println();

        for(int i=0; i<this.nPersons; i++){
            fout.printtab((this.personIndices[i]+1));
            fout.printtab(Fmath.truncate(this.rawPersonMeans[i], this.trunc));
            fout.printtab(Fmath.truncate(this.rawPersonStandardDeviations[i], this.trunc));
            fout.printtab(Fmath.truncate(this.rawPersonMinima[i], this.trunc));
            fout.printtab(Fmath.truncate(this.rawPersonMaxima[i], this.trunc));
            fout.printtab(Fmath.truncate(this.rawPersonRanges[i], this.trunc));
            fout.printtab(Fmath.truncate(this.rawPersonTotals[i], this.trunc));
            for(int j=0; j<this.nItems; j++)fout.printtab(Fmath.truncate(this.scores1[i][j], this.trunc));
            fout.println();
        }
        fout.println();

        fout.println("INDIVIDUALS - standardized data");
        fout.printtab("person ");
        fout.printtab("mean");
        fout.printtab("standard");
        fout.printtab("minimum");
        fout.printtab("maximum");
        fout.printtab("range");
        fout.printtab("total");
        fout.println("scores:");

        fout.printtab("    ");
        fout.printtab("    ");
        fout.printtab("deviation");
        fout.printtab("     ");
        fout.printtab("     ");
        fout.printtab("     ");
        fout.printtab("     ");
        for(int i=0; i<this.nItems; i++)fout.printtab(this.itemNames[i]);
        fout.println();


        for(int i=0; i<this.nPersons; i++){
            fout.printtab((this.personIndices[i]+1));
            fout.printtab(Fmath.truncate(this.standardizedPersonMeans[i], this.trunc));
            fout.printtab(Fmath.truncate(this.standardizedPersonStandardDeviations[i], this.trunc));
            fout.printtab(Fmath.truncate(this.standardizedPersonMinima[i], this.trunc));
            fout.printtab(Fmath.truncate(this.standardizedPersonMaxima[i], this.trunc));
            fout.printtab(Fmath.truncate(this.standardizedPersonRanges[i], this.trunc));
            fout.printtab(Fmath.truncate(this.standardizedPersonTotals[i], this.trunc));
            for(int j=0; j<this.nItems; j++)fout.printtab(Fmath.truncate(this.standardizedScores1[i][j], this.trunc));
            fout.println();
        }
        fout.println();

        fout.println("ALL SCORES - raw data");

        fout.printtab("mean");
        fout.printtab("standard");
        fout.printtab("minimum");
        fout.printtab("maximum");
        fout.printtab("range");
        fout.println("overall");
        fout.printtab("    ");
        fout.printtab("deviation");
        fout.printtab("     ");
        fout.printtab("     ");
        fout.printtab("     ");
        fout.println("total");

        fout.printtab(Fmath.truncate(this.rawAllResponsesMean, this.trunc));
        fout.printtab(Fmath.truncate(this.rawAllResponsesStandardDeviation, this.trunc));
        fout.printtab(Fmath.truncate(this.rawAllResponsesMinimum, this.trunc));
        fout.printtab(Fmath.truncate(this.rawAllResponsesMaximum, this.trunc));
        fout.printtab(Fmath.truncate(this.rawAllResponsesRange, this.trunc));
        fout.println(Fmath.truncate(this.rawAllResponsesTotal, this.trunc));
        fout.println();

        fout.println("ALL SCORES - standardized data");

        fout.printtab("mean");
        fout.printtab("standard");
        fout.printtab("minimum");
        fout.printtab("maximum");
        fout.printtab("range");
        fout.println("overall");
        fout.printtab("    ");
        fout.printtab("deviation");
        fout.printtab("     ");
        fout.printtab("     ");
        fout.printtab("     ");
        fout.println("total");

        fout.printtab(Fmath.truncate(this.standardizedAllResponsesMean, this.trunc));
        fout.printtab(Fmath.truncate(this.standardizedAllResponsesStandardDeviation, this.trunc));
        fout.printtab(Fmath.truncate(this.standardizedAllResponsesMinimum, this.trunc));
        fout.printtab(Fmath.truncate(this.standardizedAllResponsesMaximum, this.trunc));
        fout.printtab(Fmath.truncate(this.standardizedAllResponsesRange, this.trunc));
        fout.println(Fmath.truncate(this.standardizedAllResponsesTotal, this.trunc));
        fout.println();

        // close output file
        fout.close();
    }


    private void analysisText(){

        FileOutput fout = null;
        if(this.fileNumberingSet){
            fout = new FileOutput(this.outputFilename, 'n');
        }
        else{
            fout = new FileOutput(this.outputFilename);
        }

        // calculate alphas if not already calculated
        if(!rawAlphaCalculated)this.rawAlpha();
        if(!standardizedAlphaCalculated)this.standardizedAlpha();

        // output title information
        fout.println("CRONBACH'S ALPHA RELIABILITY ESTIMATOR");
        fout.println("Program: Cronbach - Analysis Output");
        for(int i=0; i<this.titleLines; i++)fout.println(title[i]);
        Date d = new Date();
        String day = DateFormat.getDateInstance().format(d);
        String tim = DateFormat.getTimeInstance().format(d);
        fout.println("Program executed at " + tim + " on " + day);
        fout.println();

        // output reliability estimators
        int field = 36;     // field width
        fout.println("RELIABILITY ESTIMATORS");
        fout.println("Cronbach's coefficient alpha");
        fout.print("Raw data ", field);
        fout.println(Fmath.truncate(this.rawAlpha, this.trunc));
        fout.print("Standardized data ", field);
        fout.println(Fmath.truncate(this.standardizedAlpha, this.trunc));
        fout.println();

        fout.println("Average of the inter-item correlation coefficients, excluding item totals");
        fout.print("Raw data ", field);
        fout.println(Fmath.truncate(this.rawMeanRhoWithoutTotals, this.trunc));
        fout.print("Standardized data ", field);
        fout.println(Fmath.truncate(this.standardizedMeanRhoWithoutTotals, this.trunc));
        fout.println();

        fout.println("Average of the inter-item correlation coefficients, including item totals");
        fout.print("Raw data ", field);
        fout.println(Fmath.truncate(this.rawMeanRhoWithTotals, this.trunc));
        fout.print("Standardized data ", field);
        fout.println(Fmath.truncate(this.standardizedMeanRhoWithTotals, this.trunc));
        fout.println();

        // output any deletions or replacements
        fout.println("'NO RESPONSE' DELETIONS AND REPLACEMENTS");
        // deleted persons
        field = 34;
        int fieldInt = 6;
        boolean deletionFlag = false;
        if(this.nDeletedPersons!=0){
            deletionFlag = true;
            fout.print("Number of persons deleted ", field);
            fout.println(this.nDeletedPersons);
            fout.print("Indices of deleted persons: ", field);
            for(int i=0; i<this.nDeletedPersons; i++)fout.print((this.deletedPersonsIndices[i]+1), fieldInt);
            fout.println();
        }
        else{
            fout.println("No persons were deleted ");
        }

        // deleted items
        if(this.nDeletedItems!=0){
            deletionFlag = true;
            fout.print("Number of items deleted ", field);
            fout.println(this.nDeletedItems);
            fout.print("Names of deleted items: ", field);
            for(int i=0; i<this.nDeletedItems; i++)fout.print(this.originalItemNames[this.deletedItemsIndices[i]], fieldInt);
            fout.println();
        }
        else{
            fout.println("No items were deleted ");
        }

        // replacements
        if(this.nReplacements!=0){
            fout.printtab("Number of 'no responses' replaced ");
            fout.println(this.nReplacements);
            fout.print("Item name and person index of replacements: ", 50);
            for(int i=0; i<this.nReplacements; i++)fout.print((this.replacementIndices[i]+" "), fieldInt);
            fout.println();
            fout.print("Replacement option: ", field);
            fout.println(this.replacementOptionNames[this.replacementOption-1]);
            fout.println();
        }
        else{
            if(deletionFlag){
                fout.println("No 'no response' replacements, other than any above deletions, were made ");
            }
            else{
                fout.println("No 'no response' replacements were made ");
            }
        }
        fout.println();
        fout.print("Number of items used", 35);
        fout.println(this.nItems);
        fout.print("Number of persons used", 35);
        fout.println(this.nPersons);
        fout.println();

        // Correlation coefficients
        int len = this.trunc+8;
        int fieldItemName = 0;
        for(int i=0; i<=this.nItems; i++)if(this.itemNames[i].length()>fieldItemName)fieldItemName = this.itemNames[i].length();
        int fieldItemNumber = fieldItemName;
        if(len>fieldItemNumber)fieldItemNumber = len;
        fieldItemName++;
        fieldItemNumber++;

        fout.println("CORRELATION COEFFICIENTS");
        fout.println("Correlation coefficients between items  -  raw data");
        fout.print("    ", fieldItemName);

        for(int i=0; i<=this.nItems; i++)fout.print(this.itemNames[i], fieldItemNumber);
        fout.println();
        for(int i=0; i<=this.nItems; i++){
            fout.print(this.itemNames[i], fieldItemName);
            for(int j=0; j<=this.nItems; j++)fout.print(Fmath.truncate(this.rawCorrelationCoefficients[i][j], this.trunc), fieldItemNumber);
            fout.println();
        }
        fout.println();

        fout.print("Average inter-item correlation coefficient (excluding total) ", 80);
        fout.println(Fmath.truncate(this.rawMeanRhoWithoutTotals, this.trunc));
        fout.print("Standard deviation of the inter-item correlation coefficient (excluding total) ", 80);
        fout.println(Fmath.truncate(this.rawStandardDeviationRhoWithoutTotals, this.trunc));
        fout.print("Average inter-item correlation coefficient (including total) ", 80);
        fout.println(Fmath.truncate(this.rawMeanRhoWithTotals, this.trunc));
        fout.print("Standard deviation of the inter-item correlation coefficient (including total) ", 80);
        fout.println(Fmath.truncate(this.rawStandardDeviationRhoWithTotals, this.trunc));

        fout.println();


        fout.println("Correlation coefficients between items  -  standardized data");
        fout.print("    ", fieldItemName);
        for(int i=0; i<=this.nItems; i++)fout.print(this.itemNames[i], fieldItemNumber);
        fout.println();
        for(int i=0; i<=this.nItems; i++){
            fout.print(this.itemNames[i], fieldItemName);
            for(int j=0; j<=this.nItems; j++)fout.print(Fmath.truncate(this.standardizedCorrelationCoefficients[i][j], this.trunc), fieldItemNumber);
            fout.println();
        }
        fout.println();

        fout.print("Average inter-item correlation coefficient (excluding total) ", 80);
        fout.println(Fmath.truncate(this.standardizedMeanRhoWithoutTotals, this.trunc));
        fout.print("Standard deviation of the inter-item correlation coefficient (excluding total) ", 80);
        fout.println(Fmath.truncate(this.standardizedStandardDeviationRhoWithoutTotals, this.trunc));
        fout.print("Average inter-item correlation coefficient (including total) ", 80);
        fout.println(Fmath.truncate(this.standardizedMeanRhoWithTotals, this.trunc));
        fout.print("Standard deviation of the inter-item correlation coefficient (including total) ", 80);
        fout.println(Fmath.truncate(this.standardizedStandardDeviationRhoWithTotals, this.trunc));
        fout.println();

        // item statistics
        if(fieldItemNumber<12)fieldItemNumber = 12;

        fout.println("ITEMS: MEANS, STANDARD DEVIATIONS, SKEWNESS AND KURTOSIS");
        fout.println("Raw data");
        fout.print("item ", fieldItemName);
        fout.print("mean", fieldItemNumber);
        fout.print("standard", fieldItemNumber);
        fout.print("moment", fieldItemNumber);
        fout.print("median", fieldItemNumber);
        fout.print("quartile", fieldItemNumber);
        fout.print("kurtosis", fieldItemNumber);
        fout.println("dichotomous");

        fout.print("    ", fieldItemName);
        fout.print("    ", fieldItemNumber);
        fout.print("deviation", fieldItemNumber);
        fout.print("skewness", fieldItemNumber);
        fout.print("skewness", fieldItemNumber);
        fout.print("skewness", fieldItemNumber);
        fout.print("excess  ", fieldItemNumber);
        fout.println("percentage");

        for(int i=0; i<this.nItems; i++){
            fout.print(this.itemNames[i], fieldItemName);
            fout.print(Fmath.truncate(this.rawItemMeans[i], this.trunc), fieldItemNumber);
            fout.print(Fmath.truncate(this.rawItemStandardDeviations[i], this.trunc), fieldItemNumber);
           fout.print(Fmath.truncate(this.rawItemMomentSkewness[i], this.trunc), fieldItemNumber);
            fout.print(Fmath.truncate(this.rawItemMedianSkewness[i], this.trunc), fieldItemNumber);
            fout.print(Fmath.truncate(this.rawItemQuartileSkewness[i], this.trunc), fieldItemNumber);
            fout.print(Fmath.truncate(this.rawItemKurtosisExcess[i], this.trunc), fieldItemNumber);
            fout.println(Fmath.truncate(this.dichotomousPercentage[i], 1));
        }
        fout.println();

      fout.println("ITEMS: MINIMA, MAXIMA, MEDIANS, RANGES AND TOTALS");
        fout.println("Raw data");
        fout.print("item ", fieldItemName);
        fout.print("minimum", fieldItemNumber);
        fout.print("maximum", fieldItemNumber);
        fout.print("median", fieldItemNumber);
        fout.print("range", fieldItemNumber);
        fout.print("total", fieldItemNumber);
        fout.println("dichotomous");

        fout.print("    ", fieldItemName);
        fout.print("    ", fieldItemNumber);
        fout.print("     ", fieldItemNumber);
        fout.print("     ", fieldItemNumber);
        fout.print("     ", fieldItemNumber);
        fout.print("     ", fieldItemNumber);
        fout.println("percentage");

        for(int i=0; i<this.nItems; i++){
            fout.print(this.itemNames[i], fieldItemName);
            fout.print(Fmath.truncate(this.rawItemMinima[i], this.trunc), fieldItemNumber);
            fout.print(Fmath.truncate(this.rawItemMaxima[i], this.trunc), fieldItemNumber);
            fout.print(Fmath.truncate(this.rawItemMedians[i], this.trunc), fieldItemNumber);
            fout.print(Fmath.truncate(this.rawItemRanges[i], this.trunc), fieldItemNumber);
            fout.print(Fmath.truncate(this.rawItemTotals[i], this.trunc), fieldItemNumber);
            fout.println(Fmath.truncate(this.dichotomousPercentage[i], 1));
        }
        fout.println();

        int fieldItemSName = 25;
        fout.print("item", fieldItemSName);
        fout.print("mean", fieldItemNumber);
        fout.print("standard", fieldItemNumber);
        fout.print("variance", fieldItemNumber);
        fout.print("minimum", fieldItemNumber);
        fout.print("maximum", fieldItemNumber);
        fout.println("range");
        fout.print("statistic    ", fieldItemSName);
        fout.print("    ", fieldItemNumber);
        fout.print("deviation", fieldItemNumber);
        fout.print("     ", fieldItemNumber);
        fout.print("     ", fieldItemNumber);
        fout.print("     ", fieldItemNumber);
        fout.print("     ", fieldItemNumber);
        fout.println("     ");

        fout.print("item means", fieldItemSName);
        fout.print(Fmath.truncate(this.rawItemMeansMean, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.rawItemMeansSd, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.rawItemMeansVar, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.rawItemMeansMin, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.rawItemMeansMax, this.trunc), fieldItemNumber);
        fout.println(Fmath.truncate(this.rawItemMeansRange, this.trunc));

        fout.print("item standard deviations", fieldItemSName);
        fout.print(Fmath.truncate(this.rawItemStandardDeviationsMean, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.rawItemStandardDeviationsSd, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.rawItemStandardDeviationsVar, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.rawItemStandardDeviationsMin, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.rawItemStandardDeviationsMax, this.trunc), fieldItemNumber);
        fout.println(Fmath.truncate(this.rawItemStandardDeviationsRange, this.trunc));

        fout.print("item variances", fieldItemSName);
        fout.print(Fmath.truncate(this.rawItemVariancesMean, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.rawItemVariancesSd, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.rawItemVariancesVar, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.rawItemVariancesMin, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.rawItemVariancesMax, this.trunc), fieldItemNumber);
        fout.println(Fmath.truncate(this.rawItemVariancesRange, this.trunc));

        fout.print("item mimima", fieldItemSName);
        fout.print(Fmath.truncate(this.rawItemMinimaMean, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.rawItemMinimaSd, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.rawItemMinimaVar, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.rawItemMinimaMin, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.rawItemMinimaMax, this.trunc), fieldItemNumber);
        fout.println(Fmath.truncate(this.rawItemMinimaRange, this.trunc));

        fout.print("item maxima", fieldItemSName);
        fout.print(Fmath.truncate(this.rawItemMaximaMean, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.rawItemMaximaSd, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.rawItemMaximaVar, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.rawItemMaximaMin, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.rawItemMaximaMax, this.trunc), fieldItemNumber);
        fout.println(Fmath.truncate(this.rawItemMaximaRange, this.trunc));

        fout.print("item medians", fieldItemSName);
        fout.print(Fmath.truncate(this.rawItemMediansMean, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.rawItemMediansSd, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.rawItemMediansVar, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.rawItemMediansMin, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.rawItemMediansMax, this.trunc), fieldItemNumber);
        fout.println(Fmath.truncate(this.rawItemMediansRange, this.trunc));

        fout.print("item ranges", fieldItemSName);
        fout.print(Fmath.truncate(this.rawItemRangesMean, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.rawItemRangesSd, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.rawItemRangesVar, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.rawItemRangesMin, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.rawItemRangesMax, this.trunc), fieldItemNumber);
        fout.println(Fmath.truncate(this.rawItemRangesRange, this.trunc));

        fout.print("item totals", fieldItemSName);
        fout.print(Fmath.truncate(this.rawItemTotalsMean, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.rawItemTotalsSd, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.rawItemTotalsVar, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.rawItemTotalsMin, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.rawItemTotalsMax, this.trunc), fieldItemNumber);
        fout.println(Fmath.truncate(this.rawItemTotalsRange, this.trunc));

        fout.println();

        fout.println("standardized data");
                fout.print("item ", fieldItemName);
        fout.print("mean", fieldItemNumber);
        fout.print("standard", fieldItemNumber);
        fout.print("moment", fieldItemNumber);
        fout.print("median", fieldItemNumber);
        fout.print("quartile", fieldItemNumber);
        fout.println("kurtosis");

        fout.print("    ", fieldItemName);
        fout.print("    ", fieldItemNumber);
        fout.print("deviation", fieldItemNumber);
        fout.print("skewness", fieldItemNumber);
        fout.print("skewness", fieldItemNumber);
        fout.print("skewness", fieldItemNumber);
        fout.println("excess  ");

        for(int i=0; i<this.nItems; i++){
            fout.print(this.itemNames[i], fieldItemName);
            fout.print(Fmath.truncate(this.standardizedItemMeans[i], this.trunc), fieldItemNumber);
            fout.print(Fmath.truncate(this.standardizedItemStandardDeviations[i], this.trunc), fieldItemNumber);
           fout.print(Fmath.truncate(this.standardizedItemMomentSkewness[i], this.trunc), fieldItemNumber);
            fout.print(Fmath.truncate(this.standardizedItemMedianSkewness[i], this.trunc), fieldItemNumber);
            fout.print(Fmath.truncate(this.standardizedItemQuartileSkewness[i], this.trunc), fieldItemNumber);
            fout.println(Fmath.truncate(this.standardizedItemKurtosisExcess[i], this.trunc));
        }
        fout.println();

        fout.print("item ", fieldItemName);
        fout.print("minimum", fieldItemNumber);
        fout.print("maximum", fieldItemNumber);
        fout.print("median", fieldItemNumber);
        fout.print("range", fieldItemNumber);
        fout.println("total");

        fout.print("    ", fieldItemName);
        fout.print("    ", fieldItemNumber);
        fout.print("     ", fieldItemNumber);
        fout.print("     ", fieldItemNumber);
        fout.print("     ", fieldItemNumber);
        fout.println("     ");

        for(int i=0; i<this.nItems; i++){
            fout.print(this.itemNames[i], fieldItemName);
            fout.print(Fmath.truncate(this.standardizedItemMinima[i], this.trunc), fieldItemNumber);
            fout.print(Fmath.truncate(this.standardizedItemMaxima[i], this.trunc), fieldItemNumber);
            fout.print(Fmath.truncate(this.standardizedItemMedians[i], this.trunc), fieldItemNumber);
            fout.print(Fmath.truncate(this.standardizedItemRanges[i], this.trunc), fieldItemNumber);
            fout.println(Fmath.truncate(this.standardizedItemTotals[i], this.trunc));
        }
        fout.println();


        fout.print("item", fieldItemSName);
        fout.print("mean", fieldItemNumber);
        fout.print("standard", fieldItemNumber);
        fout.print("variance", fieldItemNumber);
        fout.print("minimum", fieldItemNumber);
        fout.print("maximum", fieldItemNumber);
        fout.println("range");
        fout.print("statistic    ", fieldItemSName);
        fout.print("    ", fieldItemNumber);
        fout.print("deviation", fieldItemNumber);
        fout.print("     ", fieldItemNumber);
        fout.print("     ", fieldItemNumber);
        fout.print("     ", fieldItemNumber);
        fout.print("     ", fieldItemNumber);
        fout.println("     ");

        fout.print("item means", fieldItemSName);
        fout.print(Fmath.truncate(this.standardizedItemMeansMean, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.standardizedItemMeansSd, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.standardizedItemMeansVar, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.standardizedItemMeansMin, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.standardizedItemMeansMax, this.trunc), fieldItemNumber);
        fout.println(Fmath.truncate(this.standardizedItemMeansRange, this.trunc));

        fout.print("item standard deviations", fieldItemSName);
        fout.print(Fmath.truncate(this.standardizedItemStandardDeviationsMean, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.standardizedItemStandardDeviationsSd, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.standardizedItemStandardDeviationsVar, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.standardizedItemStandardDeviationsMin, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.standardizedItemStandardDeviationsMax, this.trunc), fieldItemNumber);
        fout.println(Fmath.truncate(this.standardizedItemStandardDeviationsRange, this.trunc));

        fout.print("item variances", fieldItemSName);
        fout.print(Fmath.truncate(this.standardizedItemVariancesMean, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.standardizedItemVariancesSd, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.standardizedItemVariancesVar, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.standardizedItemVariancesMin, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.standardizedItemVariancesMax, this.trunc), fieldItemNumber);
        fout.println(Fmath.truncate(this.standardizedItemVariancesRange, this.trunc));

        fout.print("item mimima", fieldItemSName);
        fout.print(Fmath.truncate(this.standardizedItemMinimaMean, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.standardizedItemMinimaSd, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.standardizedItemMinimaVar, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.standardizedItemMinimaMin, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.standardizedItemMinimaMax, this.trunc), fieldItemNumber);
        fout.println(Fmath.truncate(this.standardizedItemMinimaRange, this.trunc));

        fout.print("item maxima", fieldItemSName);
        fout.print(Fmath.truncate(this.standardizedItemMaximaMean, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.standardizedItemMaximaSd, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.standardizedItemMaximaVar, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.standardizedItemMaximaMin, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.standardizedItemMaximaMax, this.trunc), fieldItemNumber);
        fout.println(Fmath.truncate(this.standardizedItemMaximaRange, this.trunc));

        fout.print("item medians", fieldItemSName);
        fout.print(Fmath.truncate(this.standardizedItemMediansMean, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.standardizedItemMediansSd, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.standardizedItemMediansVar, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.standardizedItemMediansMin, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.standardizedItemMediansMax, this.trunc), fieldItemNumber);
        fout.println(Fmath.truncate(this.standardizedItemMediansRange, this.trunc));

        fout.print("item ranges", fieldItemSName);
        fout.print(Fmath.truncate(this.standardizedItemRangesMean, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.standardizedItemRangesSd, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.standardizedItemRangesVar, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.standardizedItemRangesMin, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.standardizedItemRangesMax, this.trunc), fieldItemNumber);
        fout.println(Fmath.truncate(this.standardizedItemRangesRange, this.trunc));

        fout.print("item totals", fieldItemSName);
        fout.print(Fmath.truncate(this.standardizedItemTotalsMean, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.standardizedItemTotalsSd, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.standardizedItemTotalsVar, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.standardizedItemTotalsMin, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.standardizedItemTotalsMax, this.trunc), fieldItemNumber);
        fout.println(Fmath.truncate(this.standardizedItemTotalsRange, this.trunc));

        fout.println();


        fout.println("DELETION OF ITEMS");
        int fieldDitem = 16;
        if(fieldItemName>fieldDitem)fieldDitem=fieldItemName;

        fout.print("   ", fieldDitem);
        fout.print("Raw data", fieldItemNumber);
        fout.print("   ", fieldItemNumber);
        fout.print("   ", fieldItemNumber);
        fout.print("   ", fieldItemNumber);
        fout.println("Standardized data");

        fout.print("Deleted item", fieldDitem);
        fout.print("Alpha", fieldItemNumber);
        fout.print("Correlation", fieldItemNumber);
        fout.print("Average", fieldItemNumber);
        fout.print("Average", fieldItemNumber);

        fout.print("Alpha", fieldItemNumber);
        fout.print("Correlation", fieldItemNumber);
        fout.print("Average", fieldItemNumber);
        fout.println("Average");


        fout.print("       ", fieldDitem);
        fout.print("       ", fieldItemNumber);
        fout.print("coefficient", fieldItemNumber);
        fout.print("inter-item", fieldItemNumber);
        fout.print("inter-item", fieldItemNumber);

        fout.print("      ", fieldItemNumber);
        fout.print("coefficient", fieldItemNumber);
        fout.print("inter-item", fieldItemNumber);
        fout.println("inter-item");


        fout.print("       ", fieldDitem);
        fout.print("       ", fieldItemNumber);
        fout.print("with total", fieldItemNumber);
        fout.print("correlation", fieldItemNumber);
        fout.print("correlation", fieldItemNumber);

        fout.print("      ", fieldItemNumber);
        fout.print("with total", fieldItemNumber);
        fout.print("correlation", fieldItemNumber);
        fout.println("correlation");


        fout.print("       ", fieldDitem);
        fout.print("       ", fieldItemNumber);
        fout.print("       ", fieldItemNumber);
        fout.print("coefficient", fieldItemNumber);
        fout.print("coefficient", fieldItemNumber);

        fout.print("        ", fieldItemNumber);
        fout.print("        ", fieldItemNumber);
        fout.print("coefficient", fieldItemNumber);
        fout.println("coefficient");


        fout.print("       ", fieldDitem);
        fout.print("       ", fieldItemNumber);
        fout.print("       ", fieldItemNumber);
        fout.print("without totals", fieldItemNumber);
        fout.print("with totals", fieldItemNumber);

        fout.print("        ", fieldItemNumber);
        fout.print("        ", fieldItemNumber);
        fout.print("without totals", fieldItemNumber);
        fout.println("with totals");

        double[] newRawAlpha = new double[this.nItems];
        double[] newStandardizedAlpha = new double[this.nItems];
        double[] newRawRho = new double[this.nItems];
        double[] newStandardizedRho = new double[this.nItems];
        for(int i=0; i<this.nItems; i++){
            int index = i+1;
            double[][] newScore1 = this.deleteItem(index);
            Cronbach cr = new Cronbach();
            cr.enterScoresAsRowPerPerson(newScore1);
            double rawAlphaD = cr.rawAlpha();
            newRawAlpha[i] = rawAlphaD;
            double rawMeanRhoWithTotalsD = cr.rawAverageCorrelationCoefficientsWithTotals();
            double[] rawPersonTotalsD = cr.rawPersonTotals();
            double rawRhoAgainstTotalsD = Stat.corrCoeff(rawPersonTotalsD, this.scores0[i]);
            double rawMeanRhoWithoutTotalsD = cr.rawAverageCorrelationCoefficients();
            newRawRho[i] = rawRhoAgainstTotalsD;

            double standardizedAlphaD = cr.standardizedAlpha();
            newStandardizedAlpha[i] = standardizedAlphaD;
            double standardizedMeanRhoWithTotalsD = cr.standardizedAverageCorrelationCoefficients();
            double[] standardizedPersonTotalsD = cr.standardizedPersonTotals();
            double standardizedRhoAgainstTotalsD = Stat.corrCoeff(standardizedPersonTotalsD, this.scores0[i]);
            double standardizedMeanRhoWithoutTotalsD = cr.standardizedAverageCorrelationCoefficients();
            newStandardizedRho[i] = standardizedRhoAgainstTotalsD;

            fout.print(this.itemNames[i], fieldDitem);
            fout.print(Fmath.truncate(rawAlphaD, trunc), fieldItemNumber);
            fout.print(Fmath.truncate(rawRhoAgainstTotalsD, trunc), fieldItemNumber);
            fout.print(Fmath.truncate(rawMeanRhoWithoutTotalsD, trunc), fieldItemNumber);
            fout.print(Fmath.truncate(rawMeanRhoWithTotalsD, trunc), fieldItemNumber);

            fout.print(Fmath.truncate(standardizedAlphaD, trunc), fieldItemNumber);
            fout.print(Fmath.truncate(standardizedRhoAgainstTotalsD, trunc), fieldItemNumber);
            fout.print(Fmath.truncate(standardizedMeanRhoWithoutTotalsD, trunc), fieldItemNumber);
            fout.print(Fmath.truncate(standardizedMeanRhoWithTotalsD, trunc), fieldItemNumber);
            fout.println();
        }
        fout.println();

        fout.print("No item deleted", fieldDitem);
        fout.print(Fmath.truncate(this.rawAlpha, trunc), fieldItemNumber);
        fout.print("   ", fieldItemNumber);
        fout.print(Fmath.truncate(this.rawMeanRhoWithoutTotals, trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.rawMeanRhoWithTotals, trunc), fieldItemNumber);

        fout.print(Fmath.truncate(this.standardizedAlpha, trunc), fieldItemNumber);
        fout.print("   ", fieldItemNumber);
        fout.print(Fmath.truncate(this.standardizedMeanRhoWithoutTotals, trunc), fieldItemNumber);
        fout.println(Fmath.truncate(this.standardizedMeanRhoWithTotals, trunc));
        fout.println();

        // output a deleted item data file
        this.deletedItemDataFile(newRawAlpha, newRawRho, newStandardizedAlpha, newStandardizedRho);

        int fieldInd = 12;
        fout.println("INDIVIDUALS - raw data");
        fout.print("person", fieldInd);
        fout.print("mean", fieldItemNumber);
        fout.print("standard", fieldItemNumber);
        fout.print("minimum", fieldItemNumber);
        fout.print("maximum", fieldItemNumber);
        fout.print("range", fieldItemNumber);
        fout.println("total");

        fout.print("    ", fieldInd);
        fout.print("    ", fieldItemNumber);
        fout.print("deviation", fieldItemNumber);
        fout.print("     ", fieldItemNumber);
        fout.print("     ", fieldItemNumber);
        fout.print("     ", fieldItemNumber);
        fout.println("     ");

        int fieldScore = 0;
        for(int i=0; i<this.nItems; i++){
            for(int j=0; j<this.nPersons; j++){
                int sl = Double.toString(scores0[i][j]).length();
                if(sl>fieldScore)fieldScore = sl;
            }
        }
        fieldScore++;
        if(fieldScore<fieldItemName)fieldScore = fieldItemName;
        for(int i=0; i<this.nPersons; i++){
            fout.print((this.personIndices[i]+1), fieldInd);
            fout.print(Fmath.truncate(this.rawPersonMeans[i], this.trunc), fieldItemNumber);
            fout.print(Fmath.truncate(this.rawPersonStandardDeviations[i], this.trunc), fieldItemNumber);
            fout.print(Fmath.truncate(this.rawPersonMinima[i], this.trunc), fieldItemNumber);
            fout.print(Fmath.truncate(this.rawPersonMaxima[i], this.trunc), fieldItemNumber);
            fout.print(Fmath.truncate(this.rawPersonRanges[i], this.trunc), fieldItemNumber);
            fout.println(Fmath.truncate(this.rawPersonTotals[i], this.trunc));
        }
        fout.println();

        fout.println("scores:");
        fout.print("person ", fieldInd);
        for(int i=0; i<this.nItems; i++)fout.print(this.itemNames[i], fieldItemNumber);
        fout.println();

        for(int i=0; i<this.nPersons; i++){
            fout.print((this.personIndices[i]+1), fieldInd);
            for(int j=0; j<this.nItems; j++)fout.print(Fmath.truncate(this.scores1[i][j], this.trunc), fieldItemNumber);
            fout.println();
        }
        fout.println();

        fout.println("INDIVIDUALS - standardized data");
        fout.print("person ", fieldInd);
        fout.print("mean", fieldItemNumber);
        fout.print("standard", fieldItemNumber);
        fout.print("minimum", fieldItemNumber);
        fout.print("maximum", fieldItemNumber);
        fout.print("range", fieldItemNumber);
        fout.println("total");


        fout.print("    ", fieldInd);
        fout.print("    ", fieldItemNumber);
        fout.print("deviation", fieldItemNumber);
        fout.print("     ", fieldItemNumber);
        fout.print("     ", fieldItemNumber);
        fout.print("     ", fieldItemNumber);
        fout.println("     ");

        for(int i=0; i<this.nPersons; i++){
            fout.print((this.personIndices[i]+1), fieldInd);
            fout.print(Fmath.truncate(this.standardizedPersonMeans[i], this.trunc), fieldItemNumber);
            fout.print(Fmath.truncate(this.standardizedPersonStandardDeviations[i], this.trunc), fieldItemNumber);
            fout.print(Fmath.truncate(this.standardizedPersonMinima[i], this.trunc), fieldItemNumber);
            fout.print(Fmath.truncate(this.standardizedPersonMaxima[i], this.trunc), fieldItemNumber);
            fout.print(Fmath.truncate(this.standardizedPersonRanges[i], this.trunc), fieldItemNumber);
            fout.println(Fmath.truncate(this.standardizedPersonTotals[i], this.trunc));
        }
        fout.println();

        fout.println("scores:");
        fout.print("person ", fieldInd);
        for(int i=0; i<this.nItems; i++)fout.print(this.itemNames[i], fieldItemNumber);
        fout.println();

        for(int i=0; i<this.nPersons; i++){
            fout.print((this.personIndices[i]+1), fieldInd);
            for(int j=0; j<this.nItems; j++)fout.print(Fmath.truncate(this.standardizedScores1[i][j], trunc), fieldItemNumber);
            fout.println();
        }
        fout.println();

        fout.println("ALL SCORES - raw data");
        fout.print("mean", fieldItemNumber);
        fout.print("standard", fieldItemNumber);
        fout.print("minimum", fieldItemNumber);
        fout.print("maximum", fieldItemNumber);
        fout.print("range", fieldItemNumber);
        fout.println("overall");

        fout.print("    ", fieldItemNumber);
        fout.print("deviation", fieldItemNumber);
        fout.print("     ", fieldItemNumber);
        fout.print("     ", fieldItemNumber);
        fout.print("     ", fieldItemNumber);
        fout.println("total");

        fout.print(Fmath.truncate(this.rawAllResponsesMean, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.rawAllResponsesStandardDeviation, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.rawAllResponsesMinimum, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.rawAllResponsesMaximum, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.rawAllResponsesRange, this.trunc), fieldItemNumber);
        fout.println(Fmath.truncate(this.rawAllResponsesTotal, this.trunc));
        fout.println();

        fout.println("ALL SCORES - standardized data");
        fout.print("mean", fieldItemNumber);
        fout.print("standard", fieldItemNumber);
        fout.print("minimum", fieldItemNumber);
        fout.print("maximum", fieldItemNumber);
        fout.print("range", fieldItemNumber);
        fout.println("overall");

        fout.print("    ", fieldItemNumber);
        fout.print("deviation", fieldItemNumber);
        fout.print("     ", fieldItemNumber);
        fout.print("     ", fieldItemNumber);
        fout.print("     ", fieldItemNumber);
        fout.println("total");

        fout.print(Fmath.truncate(this.standardizedAllResponsesMean, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.standardizedAllResponsesStandardDeviation, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.standardizedAllResponsesMinimum, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.standardizedAllResponsesMaximum, this.trunc), fieldItemNumber);
        fout.print(Fmath.truncate(this.standardizedAllResponsesRange, this.trunc), fieldItemNumber);
        fout.println(Fmath.truncate(this.standardizedAllResponsesTotal, this.trunc));
        fout.println();


        // close output file
        fout.close();
    }

    // Creation of a data file facilitating a full analysis of the data minus the least consitent item
    private void deletedItemDataFile(double[] newRawAlpha, double[] newRawRho, double[] newStandardizedAlpha, double[] newStandardizedRho){

        // Find maximum alpha and minimum correlation with totals
        ArrayMaths am = new ArrayMaths(newRawAlpha);
        int index1 =  am.maximumIndex();
        am = new ArrayMaths(newStandardizedAlpha);
        int index2 =  am.maximumIndex();
        am = new ArrayMaths(newRawRho);
        int index3 =  am.minimumIndex();
        am = new ArrayMaths(newStandardizedRho);
        int index4 =  am.minimumIndex();


        // majority voting on least consistent item
        this.deletedItemIndex = index3;
        if(index1==index2 && index1==index3 && index1==index4){
            this.deletedItemIndex = index1;
        }
        else{
            if(index1==index2 && (index1==index3 || index1==index4)){
                this.deletedItemIndex = index1;
            }
            else{
                if(index4==index3 && (index4==index1 || index4==index2)){
                    this.deletedItemIndex = index4;
                }
                else{
                    if(index1==index2 && index3==index4){
                        this.deletedItemIndex = index3;
                    }
                    else{
                        if(index1==index3 && index2==index4){
                            this.deletedItemIndex = index1;
                        }
                        else{
                            if(index1!=index2 && index2!=index3 && index3!=index4){
                                this.deletedItemIndex = index3;
                            }
                        }
                    }
                }
            }
        }

        this.deletedFilename = null;
        if(this.inputFilename!=null){
            this.deletedFilename = this.inputFilename;
            int pos = this.deletedFilename.indexOf(".");
            if(pos!=-1)this.deletedFilename = this.deletedFilename.substring(0,pos);
            this.deletedFilename = this.deletedFilename + "_" + this.itemNames[this.deletedItemIndex]+"_deleted";
            this.deletedFilename = this.deletedFilename + ".txt";
        }
        else{
            this.deletedFilename = "DeletedItemFile.txt";
        }

        FileOutput dfout = new FileOutput(this.deletedFilename);
        String newTitle = title[0] + " - Item " + this.itemNames[this.deletedItemIndex] + " deleted";
        dfout.println(newTitle);
        dfout.println((this.nItems-1));
        dfout.println(this.nPersons);
        for(int i=0; i<this.nItems; i++){
            if(i!=this.deletedItemIndex)dfout.printtab(this.itemNames[i]);
        }
        dfout.println();
        if(this.originalDataType==0){
            for(int i=0; i<this.nItems; i++){
                if(i!=this.deletedItemIndex){
                    for(int j=0; j<this.nPersons; j++){
                        dfout.printtab(this.scores0[i][j]);
                    }
                    dfout.println();
                }
            }
        }
        else{
            for(int j=0; j<this.nPersons; j++){
                for(int i=0; i<this.nItems; i++){
                    if(i!=this.deletedItemIndex){
                        dfout.printtab(this.scores1[j][i]);
                    }
                }
                dfout.println();
            }
        }
        dfout.close();
    }

    // Return deleted item new data file name
    public String getDeletionFileName(){
        return this.deletedFilename;
    }

    // Return least consistent item name
    public String getLeastConsistentItemName(){
        return this.itemNames[this.deletedItemIndex];
    }


}
TOP

Related Classes of flanagan.analysis.Cronbach

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.