0

我使用dose.p 计算来自glm 模型(probit 模型)的EDx(例如ED50)数据。

glm.logit <- glm(cbind(nok,nges-nok) ~ log(dosis), family=binomial(lk), data=edx.data)
r <- dose.p(glm.logit,p=seq(0.1,0.9,0.2))

r如下:

             Dose         SE
p = 0.1: 0.866650 0.10578072
p = 0.3: 1.301613 0.06405342
p = 0.5: 1.574622 0.05168480
p = 0.7: 1.847632 0.05971840
p = 0.9: 2.282595 0.09898567

exp(r) 将给出正确的 EDx:

> exp(r)
             Dose         SE
p = 0.1: 2.378928 0.10578072
p = 0.3: 3.675219 0.06405342
p = 0.5: 4.828918 0.05168480
p = 0.7: 6.344778 0.05971840
p = 0.9: 9.802082 0.09898567

但是如何提取所有数字(剂量和 SE)不仅可以计算 EDx,还可以计算置信上限和下限?最后我想计算这样一个表:

  p          Dose        Lower limit       Upper limit
0.1    exp(2.379)   exp(2.379-0.106)  exp(2.379+0.106)
0.2 ...

我试图提取这些数据,但收到一条错误消息:

> se <- r$SE
    Error in r$SE : $ operator is invalid for atomic vectors

非常感谢您提前

基督教

4

1 回答 1

0

您可以使用“属性”进行提取。放入 data.frame 使用

df = data.frame(p = seq(0.1,0.9,0.2), Dose.exp = unname(r[1:5]), SE = unname(attributes(r)$SE[, 1]))
于 2022-01-08T23:48:20.230 回答