R for lm 中的 autoplot():为什么我得到 "Constant Leverage: Residuals vs Factor Levels" 而不是 "Residuals vs Leverage" 图?
autoplot() in R for lm: why do I get a "Constant Leverage: Residuals vs Factor Levels" instead of a "Residuals vs Leverage" plot?
我在 R 中使用一个连续变量 (DENSITY) 和一个因子 (SEASON) 进行 ANCOVA。当我检查模型假设时,我得到一个名为“恒定杠杆:残差与因子水平”的图,而不是“残差与杠杆”图。
limp.mod <- lm(EGGS~DENSITY*SEASON, data=limp)
autoplot(limp.mod,smooth.colour = NA, which=5)
Image:What I get
Image:What I want
如何获得“残差与杠杆”图?为什么我的教科书中完全相同的代码会给出另一个 autoplot() 输出?
在此先感谢您的帮助!
没有可复现的例子,我会先根据内置数据集创建一个模型iris
。
df1 <- iris[1:100, 3:5]
df1$Species <- droplevels(df1$Species)
str(df1)
#'data.frame': 100 obs. of 3 variables:
# $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
# $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
# $ Species : Factor w/ 2 levels "setosa","versicolor": 1 1 1 1 1 1 1 1 1 1 ...
fit <- lm(Petal.Length ~ Petal.Width*Species, df1)
至于情节,autoplot
是一个通用函数。包 ggfortify
包括 class "lm"
等对象的方法。
来自help("autoplot.lm")
:
which If a subset of the plots is required, specify a subset of the numbers 1:6.
默认为which = c(1, 2, 3, 5)
。尝试参数的所有 6 个值,我们发现想要的图不是其中之一。所以需要建立自定义图表。
残差和杠杆值可以分别从stats::resid
和stats::hatvalues
获得。
library(ggplot2)
dflev <- data.frame(Leverage = hatvalues(fit), y = resid(fit))
ggplot(dflev, aes(Leverage, y)) +
geom_point() +
geom_hline(yintercept = 0, linetype = "dashed") +
ggtitle("Residuals vs Leverage") +
lims(y = c(-1, 1)) +
ylab("") +
theme(plot.title = element_text(hjust = 0.5, face = "bold"))
我在 R 中使用一个连续变量 (DENSITY) 和一个因子 (SEASON) 进行 ANCOVA。当我检查模型假设时,我得到一个名为“恒定杠杆:残差与因子水平”的图,而不是“残差与杠杆”图。
limp.mod <- lm(EGGS~DENSITY*SEASON, data=limp)
autoplot(limp.mod,smooth.colour = NA, which=5)
Image:What I get
Image:What I want
如何获得“残差与杠杆”图?为什么我的教科书中完全相同的代码会给出另一个 autoplot() 输出?
在此先感谢您的帮助!
没有可复现的例子,我会先根据内置数据集创建一个模型iris
。
df1 <- iris[1:100, 3:5]
df1$Species <- droplevels(df1$Species)
str(df1)
#'data.frame': 100 obs. of 3 variables:
# $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
# $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
# $ Species : Factor w/ 2 levels "setosa","versicolor": 1 1 1 1 1 1 1 1 1 1 ...
fit <- lm(Petal.Length ~ Petal.Width*Species, df1)
至于情节,autoplot
是一个通用函数。包 ggfortify
包括 class "lm"
等对象的方法。
来自help("autoplot.lm")
:
which If a subset of the plots is required, specify a subset of the numbers 1:6.
默认为which = c(1, 2, 3, 5)
。尝试参数的所有 6 个值,我们发现想要的图不是其中之一。所以需要建立自定义图表。
残差和杠杆值可以分别从stats::resid
和stats::hatvalues
获得。
library(ggplot2)
dflev <- data.frame(Leverage = hatvalues(fit), y = resid(fit))
ggplot(dflev, aes(Leverage, y)) +
geom_point() +
geom_hline(yintercept = 0, linetype = "dashed") +
ggtitle("Residuals vs Leverage") +
lims(y = c(-1, 1)) +
ylab("") +
theme(plot.title = element_text(hjust = 0.5, face = "bold"))