# Joint maximum likelihood estimation of item parameters and examinee attribute profiles

### Description

This function returns joint maximum likelihood estimates of item parameters and examinee attribute profiles in cognitive diagnostic models. The algorithm starts from the nonparametric estimation of attribute profiles, implemented by the `AlphaNP`

function, and then iteratively estimates item parameters and attribute profiles using conditional maximum likelihood estimation until the algorithm converges. Currently supported models include the DINA model, the DINO model, he NIDA model, the G-NIDA model, and the R-RUM model.

### Usage

1 2 3 |

### Arguments

`Y` |
A matrix of binary responses. Rows represent persons and columns represent items. 1=correct, 0=incorrect. |

`Q` |
The Q-matrix of the test. Rows represent items and columns represent attributes. 1=attribute required by the item, 0=attribute not required by the item. |

`model` |
Currently support five models: |

`NP.method` |
The method of the nonparametric estimation in the initial stage. |

`wg` |
Additional argument for the "penalized" NP.method. |

`ws` |
Additional input for the "penalized" NP.method. |

`conv.crit.par` |
The critical value for the maximum absolute change in all item parameters values to determine convergence. |

`conv.crit.att` |
The critical value for the percentage of examinee attribute profiles that are changed to determine convergence. |

`max.ite` |
The maximum number of iterations allowed. |

### Value

`alpha.est` |
JMLE estimates of examinee attribute profiles. Rows represent persons and columns represent attributes. 1=examinee masters the attribute, 0=examinee does not master the attribute. |

`par.est` |
JMLE estimates of item parameters, including |

`n.tie` |
Number of ties in the final log-likelihood among the candidate attribute profiles for each person. When we encounter ties, one of the tied attribute profiles is randomly chosen. |

`undefined.flag` |
A binary vector indicating whether the parameters of each item are undefined. 1=undefined, 0=defined. |

`loglike` |
The final overall log-likelihood value from the estimated item parameters and attribute profiles based on the specified model. |

`convergence` |
A message on whether the algorithm converged. |

`n.ite` |
Number of iterations performed. |

`loglike.matrix` |
The values for the log-likelihood function in the last iteration for each candidate attribute profile by each person. Rows represent candidate attribute profiles in the same order with the pattern matrix; columns represent different examinees. |

`est.class` |
The final class number (row index in |

`NP.loss.matrix` |
The values for the loss function of the nonparametric estimation of Alpha. Rows represent candidate attribute profiles in the same order with the pattern matrix; columns represent different examinees. |

`NP.alpha.est` |
The estimates of examinee attribute profiles from the initial nonparameteric estimation. |

`NP.est.class` |
The class number (row index in |

`pattern` |
All possible attribute profiles in the search space. |

`model` |
The chosen model. |

`Q` |
The Q-matrix of the test. |

### References

Chiu, C. (2011). *Flexible approaches to cognitive diagnosis: nonparametric methods and small sample techniques*. Invited session of cognitive diagnosis and item response theory at 2011 Joint Statistical Meeting.

Chiu, C. Y., & Douglas, J. A. (2013). A nonparametric approach to cognitive diagnosis by proximity
to ideal response patterns. *Journal of Classification 30*(2), 225-250.

### See Also

`AlphaMLE`

, `AlphaNP`

, `ParMLE`

, `print.JMLE`

, `plot.JMLE`

### Examples

1 2 3 4 5 6 7 8 9 | ```
data("Data.DINA")
JMLE.result <- JMLE(Data.DINA$response, Data.DINA$Q, model="DINA", conv.crit.par=0.001,
conv.crit.att=0.001, max.ite=100)
print(JMLE.result) # Print the estimated item parameters, standard errors,
#and examinee attribute profiles
plot(JMLE.result, nperson=1) # Plot the sorted loss function of different
#attribute profiles for this examinee
ItemFit(JMLE.result)
ModelFit(JMLE.result)
``` |