如何判断我们的线性回归模型是正确的?

1、回归诊断的基本方法
opar<-par(no.readOnly=TRUE)

fit <- lm(weight ~ height, data = women)
par(mfrow = c(2, 2))
plot(fit)
par(opar)

为理解这些图形,我们来回顾一下OLS回归的统计假设。
(1)正态性(主要使用QQ图) 当预测变量值固定时,因变量成正态分布,则残差值也应该是一个均值为0的正态分布。正态Q-Q图(Normal Q-Q,右上)是在正态分布对应的值下,标准化残差的概率图。若满足正态假设,那么图上的点应该落在呈45度角的直线上;若不是如此,那么就违反了正态性的假设。
(2)独立性 你无法从这些图中分辨出因变量值是否相互独立,只能从收集的数据中来验证。上面的例子中,没有任何先验的理由去相信一位女性的体重会影响另外一位女性的体重。假若你发现数据是从一个家庭抽样得来的,那么可能必须要调整模型独立性的假设。
(3)线性(使用左上角的图,该曲线尽量拟合所有点) 若因变量与自变量线性相关,那么残差值与预测(拟合)值就没有任何系统关联。换句话说,除了白噪声,模型应该包含数据中所有的系统方差。在“残差图与拟合图”Residuals vs Fitted,左上)中可以清楚的看到一个曲线关系,这暗示着你可能需要对回归模型加上一个二次项。
(4)同方差性(左下角,点随机分布在曲线的周围) 若满足不变方差假设,那么在位置尺度图(Scale-Location Graph,左下)中,水平线周围的点应该随机分布。该图似乎满足此假设。最后一幅“残差与杠图”(Residuals vs Leverage,右下)提供了你可能关注的单个观测点的信息。从图形可以鉴别出离群点、高杠杆值点和强影响点

通过看图重新修改模型

newfit <- lm(weight ~ height + I(height^2), data = women[-c(13, 15),])
par(mfrow = c(2, 2))
plot(newfit)
par(opar)

2、使用改进的方法进行

主要使用的car包,进行回归诊断

(1)自变量的正态分布

qqPlot()函数提供了更为精确的正态假设检验方法

library(car)
fit <- lm(Murder ~ Population + Illiteracy + Income +
Frost, data = states)
qqPlot(fit, labels = FALSE, simulate = TRUE, main = "Q-Q Plot")

(2)误差的独立性

durbinWatsonTest(fit)

lag Autocorrelation D-W Statistic p-value
1      -0.2006929      2.317691   0.248
Alternative hypothesis: rho != 0

(3)线性相关 性

crPlots(fit, one.page = TRUE, ask = FALSE)

(4)同方差性

1、car包提供了两个有用的函数,可以判断误差方差是否恒定。ncvTest()函数生成一个计分检验,零假设为误差方差不变,备择假设为误差方差随着拟合值水平的变化而变化。

2、spreadLevelPlot()函数创建一个添加了最佳拟合曲线的散点图,展示标准化残差绝对值 与拟合值的关系

library(car)
ncvTest(fit)

Non-constant Variance Score Test
Variance formula: ~ fitted.values
Chisquare = 1.746514    Df = 1     p = 0.1863156

满足方差不变 p = 0.1863156
spreadLevelPlot(fit)

3、线性模型假设的综合验证

library(gvlma)
gvmodel <- gvlma(fit)
summary(gvmodel)

Call:
lm(formula = Murder ~ Population + Illiteracy + Income + Frost,
data = states)


Residuals:
Min      1Q  Median      3Q     Max
-4.7960 -1.6495 -0.0811  1.4815  7.6210


Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 1.235e+00  3.866e+00   0.319   0.7510
Population  2.237e-04  9.052e-05   2.471   0.0173 *
Illiteracy  4.143e+00  8.744e-01   4.738 2.19e-05 ***
Income      6.442e-05  6.837e-04   0.094   0.9253
Frost       5.813e-04  1.005e-02   0.058   0.9541
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1


Residual standard error: 2.535 on 45 degrees of freedom
Multiple R-squared:  0.567,     Adjusted R-squared:  0.5285
F-statistic: 14.73 on 4 and 45 DF,  p-value: 9.133e-08




ASSESSMENT OF THE LINEAR MODEL ASSUMPTIONS
USING THE GLOBAL TEST ON 4 DEGREES-OF-FREEDOM:
Level of Significance =  0.05


Call:
gvlma(x = fit)


Value p-value                Decision
Global Stat        2.7728  0.5965 Assumptions acceptable.
Skewness           1.5374  0.2150 Assumptions acceptable.
Kurtosis           0.6376  0.4246 Assumptions acceptable.
Link Function      0.1154  0.7341 Assumptions acceptable.
Heteroscedasticity 0.4824  0.4873 Assumptions acceptable.

4、多重共线性

如何检测多重共线性

library(car)

vif(fit)

Population Illiteracy     Income      Frost
1.245282   2.165848   1.345822   2.082547
sqrt(vif(fit)) > 2

Population Illiteracy     Income      Frost
FALSE      FALSE      FALSE      FALSE

如何解决多重共线性?

使用岭回归、leasso。

如何判断我们的线性回归模型是正确的?1、回归诊断的基本方法oparfit par(mfrow = c(2, 2))plot(fit)par(opar)为理解这些图形,我们来回顾一下OLS回归的统计假设。(1)正态性(主要使用QQ图) 当预测变量值固定时,因变量成正态分布,则残差值也应该是一个均值为0的正态分布。正态Q-Q图(Normal Q-Q,右上)是
R 语言 回归 分析 回归 分析可以说是统计学的核心,它其实是一个广义的概念,通指那些用一个或多个预测变量(也称自变量或解释变量)来预测响应变量(也称因变量、效标变量或结果变量)的方法。通常, 回归 分析可以用来挑选与响应变量相关的解释变量,可以描述两者的关系,也可以生成一个等式,通过解释变量来预测响应变量。 最小二乘法 回归 是通过预测变量的加权和来预测量化的因变量,其 权重是通过数据估计而得的参数,目标是通过减少响应变量的真实值与预测值的差值来获得模型参数(截距项和斜率),具体而言,即使得残差平方和最小。下面将通过几篇博客介绍 回归 分析,这是第四篇:改进异常值。 之前的博客客介绍了如何对数据进行 诊断 :正态性
在常用的临床模型构建 ,主要分为两种,包括临床预测模型(Cox 回归 模型)和临床 诊断 模型(Logstic 回归 模型)。在之前的内容 ,阿琛给大家介绍了如何使用Nomogram图将临床预测模型可视化,以及Cox 回归 模型的相关评价指标。   下面是临床模型的第三集临床 诊断 模型篇,即如何对Logistic 回归 模型进行评价。   1.建立Logistic预测模型:   1.1 引用R包:   #install.packages("foreign")   #install.packages("rms")   #install.packages("pROC")   #install.packages("rmda")   #install.packages("nricens")   library(foreign)   library(rms) #构建Logstic模型   library(pROC) #绘制ROC曲线   library(rmda) #绘制DCA曲线   library(nricens) #计算NRI值
variance.model = list(model = "sGARCH", garchOrder = c(1, 1),submodel = NULL, external.regressors = NULL, variance.targeting = FALSE) distribution.model = "norm" ugarchfit(spec, datax, out.sample = 0, solver = "solnp", solver.control = list(),fit.control = list(stationarity = 1, fixed.se = 0, scale = 0)) myspec=ugarchspec(variance.model = list(model = "sGARCH", garchOrder = c(1, 1), submodel = NULL, external.regressors = NULL, variance.targeting = FALSE), mean.model = list(armaOrder = c(1, 1), include.mean = TRUE, archm = FALSE, archpow = 1, arfima = FALSE, external.regressors = NULL, archex = FALSE), distribution.model = "norm") myfit=ugarchfit(myspec,data=datax,solver="solnp") #rugarch包 模型结果的提取要依靠as.data.frame函数。比如提取模型的拟合值 as.data.frame(myfit,which="fitted") #提取残差序列: as.data.frame(myfit,which=" residuals") #提取方差序列: as.data.frame(myfit,which="sigma") #当然,也可以同时查看所有: as.data.frame(myfit,which=all) #通过plot(myfit)可以对模型结果进行图形 诊断 : plot(myfit) #如果模型通过检验,可以用ugarchforcast函数对未来进行预测: for<-ugarchforcast(myfit,n.ahead=20) library(zoo) #时间格式预处理 library(xts) #同上 library(timeSeires) #同上 library(urca) #进行单位根检验 library(tseries) #arma模型 library(fUnitRoots) #进行单位根检验 library(FinTS) #调用其 的自 回归 检验函数 library(fGarch) #GARCH模型 library(nlme) #调用其 的gls函数 library(fArma) #进行拟合和检验
(R,线性 回归 )R 语言 里的模型 诊断 图(Residuals vs Fitted,Normal QQ , Scale-Location ,Residuals Leverage)
线性 回归 ,是概率统计学里最重要的统计方法,也是机器学习 一类非常重要的算法。线性模型简单理解非常容易,但是内涵是非常深奥的。尤其是线性 回归 模型 的Diagnostics plot的阅读与理解一直被认为是线性 回归 的一个难点。 在任何线性模型 ,能够直接“lm”(模型有意义),既要考虑各个参数的t-test所得出的p-value,也要考虑总体模型F-检验得出的p-value。在这之后,还要清楚一个...
R 语言 的fitted() 和predict() 总结来说,fitted(拟合)是在给定样本上做预测,而predict(预测)是在新的样本上做预测。 以前一篇 的数据为例,图片是根据高度(height)来预测体重(weight)。 其 真实的数据是第一项,fitted得到的数据(拟合数据)是第二项,表现在图 : 真实值位于离散的点上,而fitted和predict得到的拟合值则是位于直线上。
人们提出所谓 回归 诊断 的问题,其主要内容有:关于误差项是否满足:独立性、等方差性、正态性。选择线性模型是否合适是否存在异常样本 回归 分析的结果是否对某些样本依赖过重,也就是 回归 模型是否具有稳定性自变量之间是否存在高度相关,即是否存在多重共线性下面我们通过一个小例子来大体认识一下 回归 诊断 的重要性。一、使用散点图显示变量之间的关系及修正过程:Anscombe&lt;-data.frame( X =c(...
这个图形描述了身高与体重的线性关系,这也是一个多项式图形 2:当我们的预测变量(自变量)不止一个时,就属于多元线性 回归 ,而且多元线性 回归 也可以包含多项式以及交互项 (1)在进行多远 回归 分析之前可以先描述变量之间的相关关系 上图为一个散点图矩阵,描述了五个变量之间的相关关系,我们可以通过非主对角线的散点图来查看两个变量之间的关系。 多元线性 回归 简单地就是OLS 回归 ,通过lm和
回归 诊断 在前面,我们给出了利用逐步 回归 来选择对因变量Y影响最显著的自变量进入 回归 方程的方法,并且还可以利用AIC准则或其他准则来选择最佳 回归 模型。但是这些只是从选择自变量上来研究,而没有对 回归 模型的一些特性做更进一步的研究,并且没哟研究一引起样本问题,异常样本的存在往往会给 回归 模型带来不稳定。为此,人们提出所谓 回归 诊断 的问题(regression diagnostics),其主要内容如下: fit <- lm(weight~height,data=women) summary(fit) #展示模型的详细结果 womenKaTeX parse error: Expected 'EOF', got '#' at position 20: …ht fitted(fit) #̲列出模型模拟的预测值 resi…height,women$weight, xlab=“Heig...
回归 诊断 技术提供了评价 回归 模型使用性的必要工具,能帮助发现并且纠正问题。 有几种方法进行 回归 诊断 。 分别是标准方法、car包 的函数、gvlma函数。建议先通过gvlma函数进行验证,如果违反假设条件,再使用其他方法来判断哪些假设没有满足并进行修改。 第一种:标准方法(了解),对lm()函数的返回对象使用plot()函数。 > fit<-lm(weight~height...
,y为因变量,x1和x2为自变量,mydata为数据集,family参数设置为binomial表示使用二项式分布进行建模。 2. 模型 诊断 :使用summary()函数对模型进行 诊断 ,查看模型拟合情况,例如: summary(model) 可以查看模型的系数、对数似然比、AIC和BIC等信息,以及每个自变量的显著性水平。 3. 假设检验:使用wald.test()函数进行假设检验,例如: wald.test(term = "x1", model = model) 其 ,term参数指定要检验的自变量,model参数指定要检验的模型。这样可以检验x1的系数是否显著不为0。 除了wald.test()函数,还可以使用lrtest()函数进行对数似然比检验、anova()函数进行方差分析等方法进行假设检验。