楼主: Sohnia
3769 9

[学习分享] r语言ltm包参数估计以及python调用r语言 [推广有奖]

  • 1关注
  • 6粉丝

硕士生

13%

还不是VIP/贵宾

-

威望
0
论坛币
1898 个
通用积分
4.0548
学术水平
15 点
热心指数
15 点
信用等级
15 点
经验
3318 点
帖子
46
精华
1
在线时间
90 小时
注册时间
2017-1-18
最后登录
2021-4-17

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
好久没有发帖子了,最近又搞了一波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即可。
rdata.xls (20.29 KB)



二维码

扫码加我 拉你入群

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

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


10.1016@j.artint.2018.09.004.pdf

6.07 MB

需要: 5 个论坛币  [购买]

沙发
Sohnia 发表于 2020-2-13 17:22:57 |只看作者 |坛友微信交流群
网站的原因,第九步丢失了部分的代码,这里补上
  1. > data = read.csv(file)
  2. > fit = grm(data)
  3. > f_scores = factor.scores(fit, resp.patterns=data)
  4. > f_scores$score.dat$z1
复制代码


使用道具

藤椅
Sohnia 发表于 2020-2-13 17:24:46 |只看作者 |坛友微信交流群
Sohnia 发表于 2020-2-13 17:22
网站的原因,第九步丢失了部分的代码,这里补上
> f_scores\$score.dat\$z1

使用道具

板凳
HLM2019 学生认证  发表于 2020-2-29 19:32:20 |只看作者 |坛友微信交流群
你好,楼主,请问如何用R软件来得到IRT中的能力参数?

使用道具

报纸
Sohnia 发表于 2020-5-22 10:42:23 |只看作者 |坛友微信交流群
HLM2019 发表于 2020-2-29 19:32
你好,楼主,请问如何用R软件来得到IRT中的能力参数?
看藤椅那一楼

使用道具

地板
HLM2019 学生认证  发表于 2020-11-18 15:22:45 |只看作者 |坛友微信交流群
Sohnia 发表于 2020-5-22 10:42
看藤椅那一楼
谢谢楼主,请问藤椅是?

使用道具

7
XS1998 在职认证  学生认证  发表于 2021-7-19 08:35:45 |只看作者 |坛友微信交流群
Sohnia 发表于 2020-2-13 17:22
网站的原因,第九步丢失了部分的代码,这里补上
能问下这里的read是什么么?我想把我本地的数据输入进去,但是没有反应,应该怎么办啊?谢谢大佬帮下忙,论文真的需要,谢谢啦!

使用道具

8
XS1998 在职认证  学生认证  发表于 2021-7-19 08:37:14 |只看作者 |坛友微信交流群
Sohnia 发表于 2020-2-13 17:22
网站的原因,第九步丢失了部分的代码,这里补上
install.packages("ltm")
library(ltm)
file=" C:\\用户\\sky\\桌面mydata(1).csv"
data = read.csv
fit = grm(data)
f_scores = factor.scores(fit, resp.patterns=data)
f_scores$score.dat$z1
我是这样输入的程序

使用道具

9
XS1998 在职认证  学生认证  发表于 2021-7-19 08:40:53 |只看作者 |坛友微信交流群
您好,我想您能帮我看下,我想用您的那个程序估计项目参数,课时我本地的EXCEL数据传不上,您看我程序错在哪里了呢。谢谢!!您程序里面的read 是指什么。我这是初步学习R,有些代码还都弄不明白。
install.packages("ltm")
library(ltm)
file=" C:\\用户\\sky\\桌面mydata(1).csv"
data = read.csv
fit = grm(data)
f_scores = factor.scores(fit, resp.patterns=data)
f_scores$score.dat$z1

使用道具

10
XS1998 在职认证  学生认证  发表于 2021-7-19 14:19:14 |只看作者 |坛友微信交流群
Sohnia 发表于 2020-5-22 10:42
看藤椅那一楼
楼主为什么按照您的程序 项目参数没有跑出来啊,只有能力参数

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-27 06:44