搜索
人大经济论坛 附件下载

附件下载

所在主题:
文件名:  rdata.xls
资料下载链接地址: https://bbs.pinggu.org/a-3057075.html
附件大小:
20.29 KB   举报本内容
好久没有发帖子了,最近又搞了一波IRT,这是一个教程帖子,同时又是一个问答帖子。问题在后面。
一、ltm包进行参数估计
1.首先安装R语言,网上有教程,不说了。
2.安装ltm包,打开R,R里面有个控制台。输入
  1. > install.packages("ltm")
复制代码
然后会弹出一个镜像源,点击选择shanghai的镜像源那个即可。
3.导入ltm包
  1. > library(ltm)
复制代码
4.打开ltm自带的数据
  1. > Science
复制代码
可以看到里面一共有392个样本。
5.获取irt的项目参数,这里使用的是等级响应模型。返回的是irt的区分度和难度,不是斜率和截距。其他的参数可以参考ltm包的官方文档
  1. > fit = grm(Science)
复制代码
6.如果想获得斜率和截距,需要这个IRT.para这个参数为FALSE,默认值是TRUE。官方是这么解释的,if TRUE then the coefficients’ estimates are reported under the usual IRTparameterization.
  1. > fit = grm(Science, IRT.para=FALSE)
复制代码
7.获得能力参数的方法,返回的值里面有个z1就是能力参数,原本Science里面有392个样本,我不知道为啥会返回298个样本的能力值。希望知道的大神解答一下,在此谢过。如果把resp.patterns=Science加到fit.scores里面就能返回392样本的结果了,但是z1的结果跟没加的之前的不一样
  1. > factor.scores(fit)
复制代码
8.如果你想用着这批392样本个题目参数,去估计另外一批样本。假如另一批样本的变量叫做other,那么
  1. > factor.scores(fit, resp.patterns=other)
复制代码
9.如果你想使用本地的数据来进行参数估计,假如本地数据的路径是:D:\\data\\rdata.csv(ps:必须要两根斜线,否则报错)
  1. > file = "D:\\data\\rdata.csv"
复制代码
10.ps: 一般r语言中的赋值符号为 <-, 我这里用了=,结果是一样的。
二、python调用r语言的方法
1.安装rpy2,网上有教程。
2.程序如下。
  1. import pandas as pd
  2. #import numpy as np
  3. from rpy2.robjects import pandas2ri
  4. #from sklearn.metrics import f1_score, roc_auc_score, accuracy_score
  5. import rpy2.robjects as robjects
  6. r = robjects.rr.library('ltm')
  7. #rdata必须得是pandas.DataFrame类型
  8. rdata = pandas2ri.py2ri_pandasdataframe(rdata)
  9. fit = r.grm(rdata)
  10. theta = r['factor.scores'](fit, **{'method': "EAP",'resp.patterns':rdata})
  11. tmp = dict(zip(theta.names, list(theta)))
  12. #把结果转成pandas.DataFrame的类型
  13. tmp_df = pandas2ri.ri2py_dataframe(tmp['score.dat'])
复制代码
分享一下本地数据的格式吧,把xls后缀改成csv即可。






    熟悉论坛请点击新手指南
下载说明
1、论坛支持迅雷和网际快车等p2p多线程软件下载,请在上面选择下载通道单击右健下载即可。
2、论坛会定期自动批量更新下载地址,所以请不要浪费时间盗链论坛资源,盗链地址会很快失效。
3、本站为非盈利性质的学术交流网站,鼓励和保护原创作品,拒绝未经版权人许可的上传行为。本站如接到版权人发出的合格侵权通知,将积极的采取必要措施;同时,本站也将在技术手段和能力范围内,履行版权保护的注意义务。
(如有侵权,欢迎举报)
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

GMT+8, 2026-2-10 23:08