对 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。
我认为您不需要使用 ts
和 plot.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)])
.
我使用 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。
我认为您不需要使用 ts
和 plot.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)])
.