相比于R基础提供的评价模型拟合状况,car包中提供了大量函数,大大加强了拟合和评价回归模型的能力ide
函数 | 目的 |
qqplot() | 分位数比较图 |
durbinWatsonTest() | 对偏差自相关性作Durbin-Watson检验 |
crPlots() | 成分与残差图 |
ncvTest() | 对非恒定的偏差方差作得分检验 |
spreadLevelPlot() | 分散水平检验 |
outlierTest() | Bonferroni离群点检验 |
avPlots() | 添加的变量图形 |
inluencePlot() | 回归影响图 |
scatterplot() | 加强的散点图 |
scatterplotMatrix() | 加强的散点图矩阵 |
vif() | 方差膨胀因子 |
与基础包中的plot()函数相比,qqPlot()函数提供了更为精确的正态假设检验方法,它画出了在n-p-1个自由度的 t 分布下的 学生化残差(studentized residual,也称学生化删除残差或折叠化残差)图形。其中 n 是样本大小,p 是回归参数的数目(包括截距项)函数
> library(car) > states <- as.data.frame(state.x77[,c("Murder", "Population", + "Illiteracy", "Income", "Frost")]) > fit <- lm(Murder ~ Population + Illiteracy + Income + Frost, data=states) > qqPlot(fit, labels=row.names(states), id.method="identify", + simulate=TRUE, main="Q-Q Plot")
id.method = "identify"选项可以交互式绘图--待图形绘制后,用鼠标单击图形内的点,将会标注函数中labels选项的设定值,敲击 Esc键,从那个图形下拉菜单中选择Stop,或者在图形上右击,都将关门闭这种交互模式。spa
simulate = TRUE 时,95%的置信区间将会用参数自助法code
residplot()函数生成学生化残差柱状图(即直方图),并添加 正态曲线、核密度曲线和轴须图orm
经过这种方法来实现可视化,观察残差的正态性it
residplot <- function(fit, nbreaks=10) { z <- rstudent(fit) hist(z, breaks=nbreaks, freq=FALSE, xlab="Studentized Residual", main="Distribution of Errors") rug(jitter(z), col="brown") curve(dnorm(x, mean=mean(z), sd=sd(z)), add=TRUE, col="blue", lwd=2) lines(density(z)$x, density(z)$y, col="red", lwd=2, lty=2) legend("topright", legend = c( "Normal Curve", "Kernel Density Curve"), lty=1:2, col=c("blue","red"), cex=.7) } residplot(fit)
经过 成分残差图(compoet plus residual plot),也称 偏残差图(partial residual plot),查看出自变量与因变量之间是否呈非线性关系,也能够看看是否有不一样于已设定线性模型的系统误差,图形能够用car包中crplot()函数绘制io
#以下图 library(car) crPlots(fit)
若图形存在非线性,则说明对预测变量的函数形式建模不够充分,那么就须要添加一些曲线成分,好比多项式、或对一个或多个变量进行变换(如log(x)代替 x),或用其余回归变体形式而是不线性回归table
car包提供了两个有用的函数,能够判断偏差方差是否恒定。 ncvtest()函数生成一个计分检验,零假设(原假设)偏差方差不变,备择假设为偏差方差随着拟合值水平的变化而变化,若检验显著,则说明存在异方差性(偏差方差不恒定)function
spreadLevelPlot()函数建立一个添加了最佳拟合曲线的散点图,展现标准化残差绝对值与拟合值的关系,代码以下form
#检验同方差性 #以下图 #H0为方差恒定 不显著 > library(car) > ncvTest(fit) Non-constant Variance Score Test Variance formula: ~ fitted.values Chisquare = 1.746514 Df = 1 p = 0.1863156 #显著水平为 α = 0.05,p > 0.05表示 α错误(H0)为真,可是咱们却拒绝了)发生的几率大于5%,因此接受H0,计分检验不显著 > spreadLevelPlot(fit) Suggested power transformation: 1.209626
能够获得计分检验不显著(p = 0.19),说明知足方差不变假设。
也能够能够经过分布水平图看到这一点,其中点在水平的最佳拟合曲线周围呈水平随机分布。若违反了该假设,你将会看到一个非水平曲线
代码结果建议幂次变换(suggested power transformation)的含义是,通过 次幂(
)变换,非恒定的偏差方差将会平稳。例如,若图形显示了非水平趋势,建议幂次转换为0.5,在回归等式中用
代替 Y,可能会使模型那个知足同方差性,若建议幂次为0,则使用对数变换,对于当前例子,异方差习惯很不明显,所以建议幂次接近1(不须要进行变换)