R 通过在data.table中使用svyglm进行分组分析

R 通过在data.table中使用svyglm进行分组分析,r,cluster-analysis,data.table,R,Cluster Analysis,Data.table,我在data.table中有以下数据: h x1 y1 swNx11 1: 1 39.075565717 0 1.03317231703408 2: 1 40.445951251 0 7.14418755725832 3: 1 37.800722944 0 0.435946586361557 4: 1 41.085221504 0 0.381347141150498 5: 1 36.31807

我在data.table中有以下数据:

        h           x1 y1  swNx11
    1:  1 39.075565717  0  1.03317231703408
    2:  1 40.445951251  0  7.14418755725832
    3:  1 37.800722944  0  0.435946586361557
    4:  1 41.085221504  0  0.381347141150498
    5:  1 36.318077491  0  0.497077163135359
---                                                       
24996: 25 39.110138193  0  0.942922612158002
24997: 25 39.331940413  0  1.42227399208458
24998: 25 37.479473784  0  0.390657876415799
24999: 25 35.892044242  0  0.599937357458247
25000: 25 40.699588303  0  0.486486760245521
我在svyglm中创建了一个函数来分析它们:

msmMC <- function(y, x, sw, name){
msm <- svyglm(y ~ x,family=quasibinomial(link="logit"),design = svydesign(~ 1, weights = ~ sw))
out <- cbind("name",coef(summary(msm))[2,1],coef(summary(msm))[2,2])
return(out)
}

msmswNx1<-dt2[,list(dtmsm=list(msmMC(y1, x1, swNx1, Nx1))),by="h"]
outNx1 <- unlist(dt.lm[,msmswNx1])

msmMC我怀疑它是否对
lm
glm
polr
有效,因为错误是一个匹配的参数

您需要将整个内容包装在
列表中

dt2[,list(dtmsm=list(msmMC(y1, x1, swNx1, Nx1))),by="h"]
或者,您刚刚错误地放置了
list
调用,因为
msmMC
似乎返回一个可能是data.frame、list或data.table的对象

dt2[,list(dtmsm=msmMC(y1, x1, swNx1, Nx1)),by="h"]

您已将一个打字错误替换为另一个,错误显示您所用的
dt2[,list(dtmsm=list(msmMC(y1,x1,swNx1,Nx1)))by=“h”]
不是您所写的,因为错误消息中有一个空的
j
参数<代码>[.数据表(dt2,列表(dt
。鉴于您没有指定任何地层、PSU或复制权重,我怀疑您的数据实际上是一个复杂的样本调查设计。如果不是,您没有理由使用
调查
包或
svyglm
——相反,只需使用
glm
函数的
权重=
参数根据经验,
survey
对象不能很好地处理
数据。table
ffdf
或任何其他奇怪的数据类型:@安东尼:事实上,我的数据不是来自调查设计。我正在尝试拟合一个逆概率加权模型。我正在使用调查来获得模型中β系数的稳健标准误差。据我所知,我不能用glm函数来实现这一点,对吗?有什么想法吗?@user1849779 idk。在担心之前先弄清楚你想做什么t按组进行分解。:)如果您决定必须使用
调查
软件包,请停止使用
数据表
。请清理您的代码,并检查是否存在拼写错误。请提供一个可复制的示例,我们可以从中继续。@user1849779--您的错误消息来自您刚刚引入的新拼写错误。。。。。