简体   繁体   中英

R interaction.plot

I want to draw an interaction.plot for my data.

with(data, interaction.plot(biofeedback, diet, as.numeric(drug),
xlab="Biofeedback", ylab="Drug", ylim = c(0, 4), col = 2:3))

Result:

interact.plot结果

But clearly that's not correct because my data is:

##    biofeedback    diet drug pressure
## 1      present  absent    1      170
## 2      present  absent    1      175
## 3      present  absent    1      165
...
## 7      present present    1      161
## 8      present present    1      173
## 9      present present    1      157
...
## 19     present present    2      164
## 20     present present    2      166
## 21     present present    2      159
...

This data has different drugs for absent and present Biofeedback for present diet . And it has some drugs for absent diet . None of this shows on the plot. Why?

dput(data) 



## structure(list(biofeedback = structure(c(2L, 2L, 2L, 2L, 2L, 
## 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
## 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 
## 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
## 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
## 1L, 1L, 1L), .Label = c("absent", "present"), class = "factor"), 
##     diet = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 
##     2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 
##     1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 
##     1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 
##     2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 
##     2L, 2L), .Label = c("absent", "present"), class = "factor"), 
##     drug = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
##     1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 
##     3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 1L, 1L, 1L, 1L, 
##     1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
##     2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
##     3L, 3L), .Label = c("1", "2", "3"), class = "factor"), pressure = c(170L, 
##     175L, 165L, 180L, 160L, 158L, 161L, 173L, 157L, 152L, 181L, 
##     190L, 186L, 194L, 201L, 215L, 219L, 209L, 164L, 166L, 159L, 
##     182L, 187L, 174L, 180L, 187L, 199L, 170L, 204L, 194L, 162L, 
##     184L, 183L, 156L, 180L, 173L, 173L, 194L, 197L, 190L, 176L, 
##     198L, 164L, 190L, 169L, 164L, 176L, 175L, 189L, 194L, 217L, 
##     206L, 199L, 195L, 171L, 173L, 196L, 199L, 180L, 203L, 202L, 
##     228L, 190L, 206L, 224L, 204L, 205L, 199L, 170L, 160L, 179L, 
##     179L)), .Names = c("biofeedback", "diet", "drug", "pressure"
## ), row.names = c(NA, -72L), class = "data.frame")

It looks like there is no error. The average for each group is 2.0, which is what the plot shows.

> df$drug <- as.numeric(levels(df$drug))[df$drug]
> library(plyr)
> ddply(df, .(biofeedback, diet), summarise, val = mean(drug))
  biofeedback    diet val
1      absent  absent   2
2      absent present   2
3     present  absent   2
4     present present   2

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM