我不太了解异方差。我想知道根据这个图我的模型是否合适。
我不太了解异方差。我想知道根据这个图我的模型是否合适。
Answers:
正如@IrishStat所评论的那样,您需要检查所观察到的值是否有错误,以查看是否存在可变性问题。我将在最后讨论这个问题。
只要你得到了什么,我们通过异方差性是指一个想法:如果你适合一个变量的线性模型你基本上是说,你作一个假设,你Ÿ 〜ñ (X β ,σ 2),或通俗地说,你等同预计 X β再加上一些错误有方差 σ 2。这实际上您的线性模型 Ŷ = X β + ε,其中,所述误差 ε 〜Ñ (0 ,σ 2)。好的,到目前为止,很酷,让我们在代码中看到:
set.seed(1); #set the seed for reproducability
N = 100; #Sample size
x = runif(N) #Independant variable
beta = 4; #Regression coefficient
epsilon = rnorm(N); #Error with variance 1 and mean 0
y = x * beta + epsilon #Your generative model
lin_mod <- lm(y ~x) #Your linear model
好的,我的模型如何表现:
x11(); par(mfrow=c(1,3)); #Make a new 1-by-3 plot
plot(residuals(lin_mod));
title("Simple Residual Plot - OK model")
acf(residuals(lin_mod), main = "");
title("Residual Autocorrelation Plot - OK model");
plot(fitted(lin_mod), residuals(lin_mod));
title("Residual vs Fit. value - OK model");
应该给你这样的东西: 这意味着您的残差似乎没有基于任意指数的明显趋势(第一个图-信息最少),它们之间似乎没有真正的相关性(第二个图-非常重要且可能比同方差更重要),并且拟合值没有明显的失败趋势,即。您的拟合值与残差似乎相当随机。基于此,我们可以说我们没有异方差性问题,因为我们的残差在各处似乎都具有相同的方差。
好的,但是您想要异方差。给定线性和可加性的相同假设,让我们定义另一个具有“明显”异方差问题的生成模型。也就是说,经过一些价值观,我们的观察将更加嘈杂。
epsilon_HS = epsilon;
epsilon_HS[ x>.55 ] = epsilon_HS[x>.55 ] * 9 #Heteroskedastic errors
y2 = x * beta + epsilon_HS #Your generative model
lin_mod2 <- lm(y2 ~x) #Your unfortunate LM
模型的简单诊断图:
par(mfrow=c(1,3)); #Make a new 1-by-3 plot
plot(residuals(lin_mod2));
title("Simple Residual Plot - Fishy model")
acf(residuals(lin_mod2), main = "");
title("Residual Autocorrelation Plot - Fishy model");
plot(fitted(lin_mod2), residuals(lin_mod2));
title("Residual vs Fit. value - Fishy model");
应该给出类似的内容: 在这里,第一个情节似乎有点“奇怪”;看起来我们有一些残差以较小的幅度聚集,但这并不总是一个问题...第二个图还可以,这意味着我们在不同滞后之间没有关联您的残差,因此我们可能会呼吸一会儿。第三个情节溢出了豆子:显然,当我们获得更高的值时,残差会爆炸。我们肯定在这个模型的残差中具有异方差性,我们需要做一些事情(例如IRLS,Theil-Sen回归等)。
在这里,问题确实很明显,但在其他情况下,我们可能会错过;为了减少我们错过它的机会,爱尔兰统计局还提到了另一个有见地的情节:残差与观察值,或者是我们手头的玩具问题:
par(mfrow=c(1,2))
plot(y, residuals(lin_mod) );
title( "Residual vs Obs. value - OK model")
plot(y2, residuals(lin_mod2) );
title( "Residual vs Obs. value - Fishy model")
它应该给出如下内容:
为了公平起见,您的残差与拟合值图似乎相对不错。检查残差与观察值之间的关系可能有助于确保您安全。(我没有提到QQ图或类似的东西,以免使事情更加混乱,但是您可能也想简短地检查一下。)我希望这有助于您了解异方差性以及应注意的事项。
您的问题似乎与异方差性有关(因为您通过名称提及并添加了标签),但是您的明确问题(例如,标题和结尾)较为笼统,“根据此,我的模型是否合适情节”。除了评估异方差性之外,还需要确定模型是否不合适。
我使用该网站(ht @Alexis)抓取了您的数据。请注意,数据以的升序排序fitted
。根据回归和左上图,它似乎足够忠实:
mod = lm(residuals~fitted)
summary(mod)
# ...
# Residuals:
# Min 1Q Median 3Q Max
# -0.78374 -0.13559 0.00928 0.19525 0.48107
#
# Coefficients:
# Estimate Std. Error t value Pr(>|t|)
# (Intercept) 0.06406 0.35123 0.182 0.856
# fitted -0.01178 0.05675 -0.208 0.836
#
# Residual standard error: 0.2349 on 53 degrees of freedom
# Multiple R-squared: 0.0008118, Adjusted R-squared: -0.01804
# F-statistic: 0.04306 on 1 and 53 DF, p-value: 0.8364
我在这里看不到任何异方差的迹象。从右上角(qq图)来看,正态性假设似乎也没有任何问题。
另一方面,红色低位拟合(在左上图)中的“ S”曲线以及acf和pacf图(在底部)确实存在问题。在最左侧,大多数残差都在灰色0线上方。当您向右移动时,大部分残差会下降到0以下,然后在上方,然后在下方。这样的结果是,如果我告诉你我正在查看一个特定的残差并且它具有负值(但是我没有告诉你我在看哪个残差),则可以准确地猜测附近的残差也被负面评价。换句话说,残差不是独立的 -了解某个残差会为您提供有关其他残差的信息。
除了绘图外,还可以进行测试。一种简单的方法是使用运行测试:
library(randtests)
runs.test(residuals)
# Runs Test
#
# data: residuals
# statistic = -3.2972, runs = 16, n1 = 27, n2 = 27, n = 54, p-value = 0.0009764
# alternative hypothesis: nonrandomness
回答您的明确问题:您的绘图显示出序列自相关/残差不独立。这意味着您的模型不适合其当前形式。