一、ltm包进行参数估计
1.首先安装R语言,网上有教程,不说了。
2.安装ltm包,打开R,R里面有个控制台。输入
- > install.packages("ltm")
3.导入ltm包
- > library(ltm)
- > Science
5.获取irt的项目参数,这里使用的是等级响应模型。返回的是irt的区分度和难度,不是斜率和截距。其他的参数可以参考ltm包的官方文档
- > fit = grm(Science)
- > fit = grm(Science, IRT.para=FALSE)
- > factor.scores(fit)
- > factor.scores(fit, resp.patterns=other)
- > file = "D:\\data\\rdata.csv"
二、python调用r语言的方法
1.安装rpy2,网上有教程。
2.程序如下。
- import pandas as pd
- #import numpy as np
- from rpy2.robjects import pandas2ri
- #from sklearn.metrics import f1_score, roc_auc_score, accuracy_score
- import rpy2.robjects as robjects
- r = robjects.rr.library('ltm')
- #rdata必须得是pandas.DataFrame类型
- rdata = pandas2ri.py2ri_pandasdataframe(rdata)
- fit = r.grm(rdata)
- theta = r['factor.scores'](fit, **{'method': "EAP",'resp.patterns':rdata})
- tmp = dict(zip(theta.names, list(theta)))
- #把结果转成pandas.DataFrame的类型
- tmp_df = pandas2ri.ri2py_dataframe(tmp['score.dat'])