R

时间:2019-12-10 20:35:19

标签: r dplyr regression

我正在尝试使用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,所以我正在丢失分组,但是不确定如何解决。我也尝试使用nestmap方法:

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感谢您的宝贵时间。

1 个答案:

答案 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")))