R语言 使用plot_model根据交互作用项更改数据点的颜色

mf98qq94  于 2023-04-09  发布在  其他
关注(0)|答案(1)|浏览(319)

我目前正在运行一个随机截取模型,在这个模型中,我正在回归福利的平均变化,这取决于不同国家收入人口中最富有的5%的偏好,并将其与特定国家的金融全球化程度相互作用。
我能够将实际数据绘制到我的图上,但是每当我试图为不同层次的金融全球化数据着色时,R都会给我输出:

'Error: Discrete value supplied to continuous scale'

这是即使我的'金融全球化'变量是一个数字类和连续。
这是模型:

model <- lmer(dgentav14 ~ p95*Financial_Open_Logged + gent +
                loggdpt + growtht + unempt + factor(topic) + 
                factor(wave) + (1 | country), 
              data = data_master1, 
              REML = FALSE)

这就是我试图将给定金融开放水平的实际数据绘制到图表上的方法:

plot_model(model, 
           type = "int", 
           terms = c("p95", "Financial_Open_Logged"), 
           show.data = FALSE) + 
           geom_point(data = data_master1, 
                      aes(x = p95, 
                          y = dgentav14, 
                          colour = 'Financial_Open_Logged'),  
                      inherit.aes = FALSE) +
  scale_color_continuous()

最后:这是我从R得到的:

Scale for colour is already present.
Adding another scale for colour, which will replace the existing scale.
Error: Discrete value supplied to continuous scale
rryofs0p

rryofs0p1#

问题是plot_model()将条件变量值转换为一个因子,然后用该因子变量对线条和色带进行着色(即,生成一个离散的色标)。在ggnewscale包中,有一个选项用于生成新的色标,该色标可以沿着现有色标共存。以下是一个示例:

data(Duncan, package="carData")
library(ggplot2)
library(sjPlot)
library(ggnewscale)
library(lme4)
library(dplyr)
m <- lmer(prestige ~ income*education + (1|type), data=Duncan)
plot_model(m, 
           type = "int", 
           terms = c("income", "education"), 
           show.data = FALSE) + 
  labs(color="Education\nCondition") + 
  new_scale_color() + 
  geom_point(data = Duncan %>% rename(ed_data = education), 
             aes(x = income, 
                 y = prestige , 
                 colour = ed_data),  
             inherit.aes = FALSE) +
  scale_color_continuous(name="Education\nData\nValues")

创建于2023-04-06带有reprex v2.0.2

相关问题