gpt4 book ai didi

r - 如何预测随机和固定效应模型?

转载 作者:行者123 更新时间:2023-12-04 15:42:54 27 4
gpt4 key购买 nike

我最近刚刚从 STATA 更​​改为 R,并且在实现 STATA 命令的 R 等效项 xtlogit,fe or re 时遇到了一些麻烦。和 predict .我可以请求一些帮助来调整以下场景:

  data <- read.table("http://people.stern.nyu.edu/wgreene/Econometrics/healthcare.csv",header=TRUE, sep=",", na.strings="NA", dec=".", strip.white=TRUE)

require(caret) # for confusionMatrix

#### subset into test & train according to the panel nature (split individuals rather then observations)
nID <- length(unique(data$id))
p = 0.50# partition

inTrain <- sample(unique(data$id), round(nID * p), replace=FALSE)

training <- data[data$id %in% inTrain, ]

testing <- data[!data$id %in% inTrain, ]


pooled <- glm(WORKING~WHITEC+FEMALE+BLUEC+HHNINC+AGE+AGESQ+EDUC+DOCVIS,data=training, family=binomial(link="logit"))

prediction.working= round(predict(pooled,newdata=testing,type="response"))

confusionMatrix(prediction.working,testing$WORKING) # Accuracy between both

此外,我想为随机效果和固定效果执行这些程序。所以我首先尝试了随机效果,但没有成功:
   library(glmmML)
RE <- glmmML(WORKING~WHITEC+FEMALE+BLUEC+HHNINC+AGE+AGESQ+EDUC+DOCVIS, family=binomial(link="logit"), data=training, cluster=id, method="ghq", n.points=12)



prediction.working= round(predict(RE,newdata=testing,type="response"))

但这似乎不起作用。请问如何调整 glm关于随机效应和固定效应的模型,以便使用 predict功能。

最佳答案

欢迎来到 R。我也是一个 STATA 转换者。

这是一个棘手的问题,但它的答案对于理解是必不可少的。要了解为什么 predict功能不适用于 glmmML 您需要了解 S3 方法(请参阅 http://adv-r.had.co.nz/OO-essentials.html )。

让我解释一下。 R 是一种面向对象的语言。这意味着 R 中的所有内容都是一个对象(即向量、函数、data.frame)。每个对象都包含属性。属性本质上是关于对象本身的元数据。例如,data.frame 中的变量名称就是属性。所有对象都具有的一个属性是类。要查看任何对象的类,只需调用 class()功能。

很多(但不是全部)函数使用 S3 方法。 predict功能是这些功能之一。这意味着当您调用 predict , predict函数查看对象的类。然后根据类(class)选择应该使用哪个其他预测功能。例如,如果您的对象是类 lm ,预测函数将调用 predict.lm功能。其他 predict功能包括:predict.glm对于 glm 的对象类(class),predict.loess对于 loess 的对象类(class),predict.nls对于 nls 的对象类等(要查看完整列表,请阅读 predict 帮助)。不幸的是,没有predict.glmmML功能存在。因此,当您调用 predictglmmML 类对象的函数你得到一个错误。

id <- factor(rep(1:20, rep(5, 20)))
y <- rbinom(100, prob = rep(runif(20), rep(5, 20)), size = 1)
x <- rnorm(100)
dat <- data.frame(y = y, x = x, id = id)
fit.2 <- glmmML(y ~ x, data = dat, cluster = id)
predict(fit.2)
Error in UseMethod("predict") :
no applicable method for 'predict' applied to an object of class "glmmML"
class(fit.2)
[1] "glmmML"

该错误信息非常丰富。它基本上说 R 尝试使用 S3 方法,但是,没有“predict.glmmML”
mclogit 呢? user227710 建议的功能。让我们来看看
data(Transport)

fit <- mclogit(
cbind(resp,suburb)~distance+cost,
data=Transport
)

class(fit)
[1] "mclogit" "lm"
fit的类(class)是 mclogitlm .将 predict工作?是的!当您调用 predict(fit) predict函数将首先查找 predict.mclogit ,不存在。接下来会寻找 predict.lm .确实存在。

关于r - 如何预测随机和固定效应模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31299101/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com