6

結果(バイナリ)との関係を調整した(つまり、モデルに含まれる交絡因子から独立した)特定の独立変数の多変量ロジスティック回帰分析(GLM)の結果をプロットしたいと思います。

predictコマンドの後に、を使用して次の方法を推奨する投稿を見たことがありますcurve。これが例です。

x     <- data.frame(binary.outcome, cont.exposure)
model <- glm(binary.outcome ~ cont.exposure, family=binomial, data=x)
plot(cont.exposure, binary.outcome, xlab="Temperature",ylab="Probability of Response") 
curve(predict(model, data.frame(cont.exposure=x), type="resp"), add=TRUE, col="red")

ただし、これは多変量回帰モデルでは機能しないようです。交絡変数として「age」(任意-同じ長さの任意の変数である可能性があります)を追加すると、次のエラーが発生します。

> x     <- data.frame(binary.outcome, cont.exposure, age)
> model <- glm(binary.outcome ~ cont.exposure + age, family=binomial, data=x)
> plot(cont.exposure, binary.outcome, xlab="Temperature",ylab="Probability of Response") 
> curve(predict(model, data.frame(cont.exposure=x), type="resp"), add=TRUE, col="red")
Error in model.frame.default(Terms, newdata, na.action = na.action, xlev = object$xlevels) : 
  variable lengths differ (found for 'age')
In addition: Warning message:
  'newdata' had 101 rows but variable(s) found have 698 rows 

上記のモデルは、実行したいモデルの簡略版ですが、原則は同じです。交絡因子とは無関係に、バイナリ結果変数と連続曝露の関係をプロットしたいと思います。

上記の回避策、または私が興味を持っている関係を表示する別の方法のいずれかを取得することは素晴らしいことです。どうもありがとう。

4

1 に答える 1

8
set.seed(12345)
dataset <- expand.grid(Temp = rnorm(30), Age = runif(10))
dataset$Truth <- with(dataset, plogis(2 * Temp - 3 * Age))
dataset$Sample <- rbinom(nrow(dataset), size = 1, prob = dataset$Truth)
model <- glm(Sample ~ Temp + Age, data = dataset, family = binomial)
newdata <- expand.grid(
  Temp = pretty(dataset$Temp, 20), 
  Age = pretty(dataset$Age, 5))
newdata$Sample <- predict(model, newdata = newdata, type = "response")
library(ggplot2)
ggplot(newdata, aes(x = Temp, y = Sample)) + geom_line() + facet_wrap(~Age)

ここに画像の説明を入力

ggplot(newdata, aes(x = Temp, y = Sample, colour = Age, group = Age)) + 
  geom_line()

ここに画像の説明を入力

于 2012-07-02T11:47:16.220 に答える