rms包Glm:如何在公式

时间:2017-02-10 20:44:17

标签: r rms

我正在尝试使用R中的rms包中的Glm()构建一个glm模型。 但我不知道指标的Glm公式中的正确表达式。

允许我使用虹膜数据作为例子, 在基础R glm函数中,我的代码有效,如下所示:

model1 = glm(Sepal.Length~Sepal.Width + Petal.Length + ifelse(Sepal.Width==3,1,0),data=iris)

但如果我在Glm中使用相同的公式,它将返回

 model2 = Glm(Sepal.Length~Sepal.Width + Petal.Length + ifelse(Sepal.Width==3,1,0),data=iris)
  

if(!length(fname)||!any(fname == zname)){:       缺少需要TRUE / FALSE的值

或者如果我使用

model3 = Glm(Sepal.Length~Sepal.Width + Petal.Length + asis(Sepal.Width==3),data=iris)
  

if(asc [i] == 8)next的错误:缺少值需要TRUE / FALSE

我只是不知道定义此转换的正确方法。另外我知道我可以通过将此指标作为数据中的新列来解决此问题,但之后我无法使用rms的{​​{1}}函数生成正确的图。

1 个答案:

答案 0 :(得分:0)

正如评论中所建议的那样,这似乎工作得很好(我真的不知道我在用datadist做什么,但是摸索着......)

 iris$sepal3 <- as.numeric(iris$Sepal.Width==3)
 library(rms)
 ddist <- with(iris,datadist(Sepal.Width, Petal.Length, sepal3))
 options(datadist="ddist")
 model1 <- Glm(Sepal.Length~Sepal.Width + Petal.Length + sepal3,
               data=iris)
 plot(Predict(model1))

(我收到关于Calling 'structure(NULL, *)' is deprecated的警告信息,但我认为这是因为我使用R的开发版本和rms版本5.1.0 ...