public class JointMaximumLikelihoodEstimation
extends java.lang.Object
Meyer, J. P., & Hailey, E. (2012). A study of Rasch partial credit, and rating scale model
parameter recovery in WINSTEPS and jMetrik. Journal of Applied Measurement,
13(3), 248-258.
Constructor and Description |
---|
JointMaximumLikelihoodEstimation(byte[][] data,
ItemResponseModel[] irm)
The object is created with a set of data and array of item response models (See
ItemResponseModel . |
Modifier and Type | Method and Description |
---|---|
void |
biasCorrection()
Correct item difficulty and person ability estimates for bias.
|
void |
computeItemCategoryFitStatistics()
After estimation, INFIT and OUTFIT mean square fit statistics for category thresholds can be computed.
|
void |
computeItemFitStatistics()
After parameters have been estimated, fit statistics can be computed.
|
void |
computeItemStandardErrors()
Item difficulty standard error calculation.
|
void |
computePersonStandardErrors()
Person ability parameter standard error calculation.
|
boolean |
estimateParameters(int globalMaxIter,
double globalConv)
A shortcut method that only requires input for the maximum number of global iterations and the global
convergence criterion.
|
boolean |
estimateParameters(int globalMaxIter,
double globalConv,
boolean centerItems)
A shortcut method that only requires input for the maximum number of global iterations and the global
convergence criterion.
|
boolean |
estimateParameters(int globalMaxIter,
double globalConv,
int personMaxIter,
double personConv,
boolean centerItems)
This method is where the estimation is managed.
|
int |
getDroppedStatusAt(int index)
A polytomous item with at least one category with 0 observations is dropped from the analysis.
|
int |
getExtremeItemAt(int index)
Extreme items are items in whih all examinees obtain the maximum possitble item score or the minimum possible
item score.
|
int |
getExtremePersonAt(int index)
An extreme person is an examinee that obtains the minimum or maximum possible test score.
|
RaschFitStatistics |
getItemFitStatisticsAt(int index)
Fit statistics for each item are stored in an array.
|
ItemResponseModel |
getItemResponseModelAt(int index)
An
ItemResponseModel object is stored in an array for each item. |
ItemResponseModel[] |
getItems()
Item response model objects are stored in an array.
|
RaschScaleQualityStatistics |
getItemSideScaleQuality()
After estimation, overall indices of scale quality can be computed such as reliability and separation.
|
double |
getLogLikelihood()
Compute log-likelihood given the current values of item and person parameters.
|
int |
getMaxCategory()
Each item can have a different number of score categories.
|
int |
getNumberOfItems()
The total number of items on the test is stored.
|
int |
getNumberOfPeople()
The total number of examinees is stored.
|
double |
getPersonEstimateAt(int index)
Person ability estimates are stored in an array.
|
double[] |
getPersonEstimates()
Person ability estimates are stored in an array of doubles.
|
double |
getPersonEstimateStdErrorAt(int index)
Person estimate standard errors are stored in an array of doubles.
|
RaschFitStatistics |
getPersonFitStatisticsAt(int index)
Computes person fit statistics for the examinee at the specified index.
|
double[] |
getPersons()
Person ability estimates are stored as an array of doubles.
|
RaschScaleQualityStatistics |
getPersonSideScaleQuality()
After estimation, overall indices of scale quality can be computed such as reliability and separation.
|
double[] |
getPersonStdError()
Standard errors of person ability estimates are stored as an array of doubles.
|
ExploratoryFactorAnalysis |
getPrincipalComponentsForStandardizedResiduals(int nFactors)
Conducts a principal components analysis of standardized residuals.
|
RaschRatingScaleGroup |
getRatingScaleGroupAt(int index)
Polytomous response models be long to a single
RaschRatingScaleGroup . |
double |
getResidualAt(int i,
int j)
A residual is the difference between the observed and expected item response.
|
byte |
getResponseAt(int i,
int j) |
java.lang.Object[][] |
getScoreconversionTableForOutputter() |
double |
getSumScoreAt(int index) |
double |
getValidSumScoreAt(int index)
The valid sum score is the sum score based on the nonextreme items.
|
void |
itemProx()
Computes PROX difficulty estimates for item difficulty.
|
void |
linearTransformation(double intercept,
double scale)
Apply linear transformation to person and item parameter estimates.
|
int |
numberOfNonexremeItems()
An extreme iem is one in which all examinees with obtain the lowest possible item score or one in which
all examinee obtain the highest possible item score.
|
int |
numberOfNonextremePeople()
An extreme person is one that obtains the minimum possible test score or the maximum possible test score.
|
java.lang.String |
printBasicItemStats() |
java.lang.String |
printBasicItemStats(java.lang.String title)
This method is for displaying item parameter estimates, standard errors, and other information.
|
java.lang.String |
printCategoryStats()
Polytomous items have a set of threshold statistics that must be reported.
|
java.lang.String |
printFrequencyTables()
This method is for displaying frequency tables for each item.
|
java.lang.String |
printItemStats(java.lang.String title)
Creates a string of item statistics.
|
java.lang.String |
printIterationHistory()
Joint maximum likelihood estimation is iterative.
|
java.lang.String |
printPersonStats()
This method is for displaying person parameter estimates, standard errors, and other information.
|
java.lang.String |
printRatingScaleTables()
This method is for displaying frequency tables for polytomous items.
|
java.lang.String |
printScoreTable(int maxIter,
double converge,
double adjustment,
DefaultLinearTransformation transformation,
int precision)
The sum score is a sufficient statistic for the latent trait in the Rasch family of models.
|
void |
summarizeData(double adjustment)
Summarizes data into frequency counts.
|
public JointMaximumLikelihoodEstimation(byte[][] data, ItemResponseModel[] irm) throws org.apache.commons.math3.exception.DimensionMismatchException
ItemResponseModel
.
The data must be arranged such that each row respresents an examinee and each column represents an item.
All item responses must be zero or larger (i.e. nonnegative). Use an item response value of -1 to indicate
a missing item response. The length of the item response model array must equal the number of columns in
the data array.data
- a two-way array of item responses.irm
- an array of item response model.org.apache.commons.math3.exception.DimensionMismatchException
public void summarizeData(double adjustment) throws org.apache.commons.math3.exception.NoDataException
adjustment
- and adjustmnet factor applied to the ItemResponseSummary. This adjustment is needed
for estimation of extreme persons and items.org.apache.commons.math3.exception.NoDataException
public boolean estimateParameters(int globalMaxIter, double globalConv)
globalMaxIter
- maximum number of iteration in JMLEglobalConv
- maximum change in logits convergen criterionpublic boolean estimateParameters(int globalMaxIter, double globalConv, boolean centerItems)
globalMaxIter
- maximum number of iteration in JMLEglobalConv
- maximum change in logits convergen criterioncenterItems
- establish identification by centering item about the item difficulty mean (the approach
typically used in Rasch measurement). If false establish identification by centering
persons around the mean ability. Centering only done for nonextreme persons and items.public boolean estimateParameters(int globalMaxIter, double globalConv, int personMaxIter, double personConv, boolean centerItems)
globalMaxIter
- maximum number of iteration in JMLEglobalConv
- maximum change in logits convergen criterionpersonMaxIter
- maximum number of iterations during the person update. Usually a maximum of one person
update is sufficient.personConv
- convergence criterion during the person update only.centerItems
- establish identification by centering item about the item difficulty mean (the approach
typically used in Rasch measurement). If false establish identification by centering
persons around the mean ability. Centering only done for nonextreme persons and items.public void itemProx()
public double getLogLikelihood()
public ItemResponseModel[] getItems()
public double[] getPersons()
public double[] getPersonStdError()
computePersonStandardErrors()
has not been called.public void computeItemStandardErrors()
public void computePersonStandardErrors()
getPersonStdError()
.public int numberOfNonexremeItems()
public int numberOfNonextremePeople()
public void biasCorrection()
public java.lang.String printFrequencyTables()
public java.lang.String printRatingScaleTables()
public double[] getPersonEstimates()
public void linearTransformation(double intercept, double scale)
intercept
- intercept transformation coefficient.scale
- scale transformation coefficient.public void computeItemFitStatistics()
RaschFitStatistics
. This method computes fit statistics for all items.public ExploratoryFactorAnalysis getPrincipalComponentsForStandardizedResiduals(int nFactors)
nFactors
- number of factors retained in the principal components analysis.public RaschFitStatistics getPersonFitStatisticsAt(int index)
index
- array position of examinee for which the fit statistic is computed.public void computeItemCategoryFitStatistics()
public RaschScaleQualityStatistics getItemSideScaleQuality()
public RaschScaleQualityStatistics getPersonSideScaleQuality()
public int getMaxCategory()
public int getNumberOfItems()
public int getNumberOfPeople()
public ItemResponseModel getItemResponseModelAt(int index)
ItemResponseModel
object is stored in an array for each item. Gets the item response model
at the given index.index
- array position of the item response model.public RaschFitStatistics getItemFitStatisticsAt(int index)
index
- array position of the item fit statistics.public RaschRatingScaleGroup getRatingScaleGroupAt(int index)
RaschRatingScaleGroup
. Gets the rating scale
group for item at the indexed position in the array.index
- array position of the item.public int getExtremeItemAt(int index)
index
- position of item in the array.public double getPersonEstimateAt(int index)
index
- array position of the examinee.public double getPersonEstimateStdErrorAt(int index)
computePersonStandardErrors()
must be called before this method. Otherwise, it
will result in a null pointer exception.index
- position in array.public double getValidSumScoreAt(int index)
index
- position of valid sum score in the array.public double getSumScoreAt(int index)
public int getExtremePersonAt(int index)
index
- position in array.public double getResidualAt(int i, int j)
i
- index of examinee in data array.j
- index of item in array of item response models.public byte getResponseAt(int i, int j)
public int getDroppedStatusAt(int index)
index
- array index of item.public java.lang.String printPersonStats()
public java.lang.String printBasicItemStats()
public java.lang.String printBasicItemStats(java.lang.String title)
public java.lang.String printIterationHistory()
public java.lang.String printScoreTable(int maxIter, double converge, double adjustment, DefaultLinearTransformation transformation, int precision)
maxIter
- maximum number of iterations to use when estimating ability.converge
- convergence criterion when estimating ability.adjustment
- extreme score adjustment that is applied to extreme persons.transformation
- linear transformation to be applied to person ability estimates.precision
- number of decimal places to use when reporting estimates int eh score table.public java.lang.Object[][] getScoreconversionTableForOutputter()
public java.lang.String printItemStats(java.lang.String title)
title
- a title for the output table.public java.lang.String printCategoryStats()