对 R 中的 x 轴进行排序

Sorting the x axes in R

我使用 R 中的 glm 函数构建了一个逻辑回归模型(称为 'mylogit'),如下所示:

mylogit <- glm(answer ~ as.factor(gender) + age, data = mydata, family = "binomial")

其中年龄是数字,性别是分类(男性和女性)。

然后我开始使用构建的模型进行预测。

pred <- predict(mylogit, type = "response")

我可以通过以下方式轻松制作预测的时间序列图:

plot.ts(ts(pred))

给出一个看起来像这样的情节:

Plot of Time against Predictions

给出了预测图。

我的问题是: 是否可以根据 glm 中指定的性别(男性或女性)将 x 轴分段?换句话说,我可以在y轴上有预测,在x轴上有性别(分为男性和女性)吗?

我要绘制的数据样本与此类似:

我做到了:

bind = cbind(mydata, pred)

'bind' 看起来像这样:

pred          age        gender
0.9461198     32          male
0.9463577     45         female
0.9461198     45         female
0.9461198     37         female
0.9477645     40          male
0.8304513     32         female

查看 this blog post 上的 #4,“4. 如何创建两个不同的 X 轴或 Y 轴”。

我对你的建议是你看一些专用的 R 绘图工具,比如 ggplot2

我认为您不需要使用 tsplot.ts,因为您拥有的数据不是时间序列,对吗?绘图前只需排序 pred

# Get data
str <- "pred,age,gender
0.9461198,32,male
0.9463577,45,female
0.9461198,45,female
0.9461198,37,female
0.9477645,40,male
0.8304513,32,female"
bind <- read.csv(textConnection(str))

# Plot
bind <- bind[order(bind$gender),]
plot(bind$pred, col = bind$gender)

library(ggplot2)
ggplot(bind, aes(x = gender, y = pred)) +
  geom_point(position = position_jitter(width = .3))

或者不创建 bind 你可以 plot(pred[order(mydata$gender)]).