在逻辑回归图中可视化分类数据

时间:2013-08-24 19:11:41

标签: r plot regression categorical-data

我正在尝试基于二进制数据创建逻辑回归图作为因变量(直接离开= 0或1)。自变量是连续数据(危险提示的持续时间),计数数据(危险提示时间)和分类数据(处理:蔗糖或章鱼胺):

AnimalID       Time     Duration     Treatment       Daytime     DirectLeave
       1     1039.6          1.1       sucrose      mornings               1
       2     1116.5          7.6            OA      mornings               0
       3      359.9          2.4       sucrose     afternoon               0
       4      594.2         27.3            OA     afternoon               1
       5      951.4         10.5            OA      mornings               1
       6      612.4          3.8       sucrose     afternoon               0

到目前为止,我能够创建两个图(下图),其中一条拟合线用于整个数据集:

library(car)
data_animal <- read.table("DirLeave_DurSorted.txt",header=T)

# Plot for relationship between immediate leave of animal and the time of danger cue presentation

pufftimegraph<-glm(DirLea ~ Time , family=binomial(link=logit), data=data_animal)
summary(pufftimegraph)
Anova(pufftimegraph)
data_animal$fitted<-pufftimegraph$fitted

dummy<-(data_animal$Time)
dummy<-sort(dummy)
print(dummy)

plot(data_animal$DirLea~data_animal$Time, xlab ="Time of the presentation of the danger cue", ylab="Proportion of wasps leaving the patch")
lines(data_animal$Time,(1/(1+(1/exp(0.0011188*data_Maxi$Time+-0.0174130)))), col="black")

# Plot for relationship between immediate leave of animal and duration of danger cue

durgraph<-glm(DirLea ~ Dur , family=binomial(link=logit), data=data_animal)
summary(durgraph)
Anova(durgraph)
data_animal$fitteddur<-durgraph$fitted
print(data_animal$fitteddur)

plot(data_animal$DirLea~data_animal$Dur, xlab ="Duration of the danger cue [s]", ylab="Proportion of wasps leaving the patch")
lines(data_animal$Dur,(1/(1+(1/exp(0.15020*data_animal$Dur+-1.00618)))), col="black")

enter image description here enter image description here

然而,我的研究目的是显示两种治疗方法之间的差异。我知道我需要两个类别的斜率和截距值,即蔗糖和章鱼胺,但Anova()仅为整个数据集提供一个值。 所以,我想创建两个合适的线条图:每个治疗一个。是否可以这样做,如果是这样的话?

1 个答案:

答案 0 :(得分:0)

此处的模型不依赖于治疗类型,因此无论如何都不会从同一模型中获得不同的曲线。要比较治疗之间的比较,您必须在模型中包含依赖于治疗的术语,或者将模型拟合到数据的子集。

将模型DirLea ~ Time与模型DirLea ~ Dur进行比较也很困难,因为它们不是嵌套的。根据您的实验设计以及两个变量是否具有任何相关性,这两个模型可能会捕获不同的效果或相同的效果

假设您开始使用的模型包含您要比较的所有内容:

model <- glm(DirLea ~ (Time + Dur)*treatment, 
             data=data_animal, family = binomial(link=logit))

您可以通过将人工数据提供给predict来构建任意拟合线,并使用subset提取数据的相关子集。在这里,将蔗糖处理和危险提示的数据图固定为某个值:

sucrose.line <- expand.grid(treatment = "sucrose", 
                            Time = seq(100, 1200, length=50)
                            Dur=mean(animal_data$Dur))
sucrose.line$fitted <- predict(model, sucrose.line)
lines(fitted ~ Time, data = sucrose.line,
      xlab ="Time of the presentation of the danger cue",    
      ylab="Proportion of wasps leaving the patch")