gpt4 book ai didi

在 data.table 中运行回归

转载 作者:行者123 更新时间:2023-12-04 15:34:33 25 4
gpt4 key购买 nike

请参阅假数据集。

library(data.table)
library(MASS)
n=5000
DT = data.table(
grp=1:n,
name=as.character(as.hexmode(1:n)),
x= sample(c(1:400),n,replace = TRUE)
)

setkey(DT,grp)

UIDlist <- unique(DT[,grp])
IDnamelist <- paste0("V", 1 : length(UIDlist), sep = "")
test <- DT[, (IDnamelist):=lapply(UIDlist,function(x) grp ==x)][, V5000:= NULL]

我有一个 data.table,其中有 4 列,“grp”、“Name”、“x”、“y”。然后我在“grp”的每个级别上添加虚拟。
然后我需要在 MASS 包中使用 glm.nb 运行回归。

首先我试过这个
SumResult <- glm.nb(x ~ factor(uid), data = test) 

但是在加dummy的时候一定要注意,grp中有N层的时候,我们加了N-1个dummy。所以这个方法在我看来并不合适。

所以我试过这个:
SumResult <- glm.nb( x ~ V1 + V2 + V3 + V4 + .....+ V4999  , data = test)

编写所有 V1、V2、... V4999 来进行回归是愚蠢的。

有没有代码可以达到目的?

谢谢

最佳答案

您可以尝试通过字符串操作来创建您的公式对象

formula <- as.formula(paste0("x ~ ", paste(names(test)[-(1:3)], collapse = " + ")))
sumresult <- glm.nb(formula, data = test)

您还可以使用@BrandonBertelsen 更具可读性的代码
glm.nb(x ~ ., data = test[-c(1:3)])

关于在 data.table 中运行回归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21364256/

25 4 0