【发布时间】:2019-01-25 06:17:30
【问题描述】:
此图从回归输出中获取残差,并按顺序绘制它们(X 轴是残差的等级)。
我对此的最佳尝试如下:
library(ggplot2)
library(modelr)
d <- d %>% add_residuals(mod1, var = "resid")
d$resid_rank <- rank(d$resid)
ggplot(data = d, aes(x = resid_rank, y = resid)) +
geom_bar(stat="identity") +
theme_bw()
但是,这会产生一个完全空白的图表。我试过这样的事情:
ggplot(data = d, aes(x = resid_rank, y = resid)) +
geom_segment(yend = 0, aes(xend=resid)) +
theme_bw()
但这会产生方向错误的细分。这样做的正确方法是什么,并通过第三个因素为这些线条着色?
假数据集:
library(estimatr)
library(fabricatr)
#simulation
dat <- fabricate(
N = 10000,
y = runif(N, 0, 10),
x = runif(N, 0, 100)
)
#add an outlier
dat <- rbind(dat, c(300, 5))
dat <- rbind(dat, c(500, 3))
dat$y_log <- log(dat$y)
dat$x_log <- log(dat$x)
dat$y_log_s <- scale(log(dat$y))
dat$x_log_s <- scale(log(dat$x))
mod1 <- lm(y_log ~ x_log, data = dat))
【问题讨论】:
-
可以添加示例数据(
dput(d))吗? -
我注意到你为残差创建了一个名为 resid 的变量,但是你在 d$resid_rank 上调用了 rank,不应该是 rank(d$resid) 吗?
-
好收获。这只是试图将所有变量名称更改为通用名称的错误格式。 @PoGibas,不幸的是数据是专有的,但我可以制作一个模拟数据集。