我正在尝试使用frm
软件包运行分数响应模型来预测考试成绩。我的代码如下:
frac.test <- sample.test %>%
group_by(year, state) %>%
do(model = frm(y = sample.test$perc.prof,
x = sample.test[,c("sch.enr", "perc.wh", "perc.bl", "perc.hs", "perc.as", "perc.econ.dis", "perc.ell", "urban.flag",
"charter.flag", "high", "middle")],
linkfrac = "logit"))
我希望将回归按年份和状态分组,但目前结果未正确分组。我可以确认这一点,因为如果我运行模型一年并陈述状态,则会得到不同的预测。我意识到这与问题类似:Linear Regression and group by in R,但是由于frm()的语法不同,因此并不完全相同。我想是因为我在打电话给y = sample.test$perc.prof
,所以我正在丢失分组,但是不确定如何解决。我也尝试使用nest
和map
方法:
frac.test2 <- sample.test %>%
nest(-year, -state) %>%
mutate(fit = map(data, ~ frm(y = sample.test2$perc.prof,
x = sample.test2[,c("sch.enr", "perc.wh", "perc.bl", "perc.hs", "perc.as", "perc.econ.dis", "perc.ell", "urban.flag",
"charter.flag", "high", "middle")],
linkfrac = "logit")))
我很高兴使用任何一种方法,我只想一种可以正常工作的方法。我的数据可以在这里找到:http://www.sharecsv.com/s/bf1c215a9c306a7429b314660d31914b/frm_SO_data.csv感谢您的宝贵时间。
答案 0 :(得分:2)
使用mutate
或.x
访问.
内部的数据集,而不是整个数据集,即sample.test
。在第一种方法中使用.
代替ample.test
。
library(dplyr)
library(frm)
frac.test2 <- sample.test %>%
nest(-year, -state) %>%
mutate(fit = map(data, ~ frm(y=.x$perc.prof, x=.x[,c("sch.enr", "perc.wh", "perc.bl", "perc.hs", "perc.as", "perc.econ.dis", "perc.ell", "urban.flag",
"charter.flag", "high", "middle")],
linkfrac = "logit")))