jMetrik is more powerful than you may think. It is designed for operational work where researchers need multiple procedures in a single unified framework. Currently you can estimate IRT parameters for the Rasch, partial credit and rating scale models. It also allows for IRT scale linking via the Stocking-Lord, Haebara and other methods. Because it includes an integrated database, the output from the IRT estimation can be used in scale linking without the need to reshape data files. Moreover, all output can be stored in the database for use with other methods in jMetrik or external programs like R.
You can also run it with scripts instead of the GUI. For example, the follwing code will (a) import data into the database, (b) score items with an answer key, (c) estimate Rasch model parameters, and (d) export data as a CSV file. You can use the final output file as input into R for further analysis, or you can use R to connect directly to the jMetrik database and work with the results.
#import data into database
import{
delimiter(comma);
header(included);
options(display);
description();
file(C:/exam1-raw-data.txt);
data(db = testdb1, table = EXAM1);
}
#conduct item scoring with the answer key
scoring{
data(db = mydb, table = exam1);
keys(4);
key1(options=(A,B,C,D), scores=(1,0,0,0), variables= (item1,item9,item12,item15,item19,item21,item22,item28,item29,item30,item34,item38,item42,item52,item55));
key2(options=(A,B,C,D), scores=(0,1,0,0), variables=(item4,item6,item16,item18,item24,item26,item32,item33,item35,item43,item44,item47,item50,item54));
key3(options=(A,B,C,D), scores=(0,0,1,0), variables=(item3,item5,item7,item11,item14,item20,item23,item25,item31,item40,item45,item48,item49,item53));
key4(options=(A,B,C,D), scores=(0,0,0,1), variables=(item2,item8,item10,item13,item17,item27,item36,item37,item39,item41,item46,item51,item56));
}
#Run a Rasch models analysis.
#Item parameters saved as database table named exam1_rasch_output
#Residuals saved as a databse table named exam1_rasch_resid
#Person estimates saved to original data table. Person estimate in variable called "theta"
rasch{
center(items);
missing(ignore);
person(rsave, pfit, psave);
item(isave);
adjust(0.3);
itemout(EXAM1_RASCH_OUTPUT);
residout(EXAM1_RASCH_RESID);
variables(item1, item2, item3, item4, item5, item6, item7, item8, item9, item10, item11, item12, item13, item14, item15, item16, item17, item18, item19, item20, item21, item22, item23, item24, item25, item26, item27, item28, item29, item30, item31, item32, item33, item34, item35, item36, item37, item38, item39, item40, item41, item42, item43, item44, item45, item46, item47, item48, item49, item50, item51, item52, item53, item54, item55, item56);
transform(scale = 1.0, precision = 4, intercept = 0.0);
gupdate(maxiter = 150, converge = 0.005);
data(db = testdb1, table = EXAM1);
}
#Export output table for use in another program like R
export{
delimiter(comma);
header(included);
options();
file(C:/EXAM1_RASCH_OUTPUT.txt);
data(db = testdb1, table = EXAM1_RASCH_OUTPUT);
}
The software is still in its early stages of development. I am currently adding exploratory factor analysis and more advanced item response models. Unlike many other IRT programs, jMetrik is open source. all of the measurement procedures use the psychometrics library which is currently available on GitHub, https://github.com/meyerjp3/psychometrics. Anyone interested in contributing is welcomed.