检测多重共线
> library(car)
> vif(fit)
Population Illiteracy Income Frost
1.245282 2.165848 1.345822 2.082547
> sqrt(vif(fit))>2 #problem?
Population Illiteracy Income Frost
FALSE FALSE FALSE FALSE
> #多重共线性可用统计量VIF进行检测。VIF的平方根表示变量回归参数的置信区间的膨胀为与模型无关的预测变量的程度。
离群点
> outlierTest(fit)
rstudent unadjusted p-value Bonferonni p
Nevada 3.542929 0.00095088 0.047544
> #若不显著,则说明数据集中么有离群点,若显著,则你必须删除该离群点,然后再检验是否还有其他离群点的存在。
> #高杠杆值的观测点可通过帽子统计量(hat statistics)判断。对于一个给定的数据集,帽子均值为P/N,其中P是模型估计的参数数目(包含截距项),n是样本量。一般来说,若观测点的帽子值大于帽子均值的2或3倍,就可以认为高杠杆点。
高杠杆点
> hat.plot<- function(fit){
+ p<- length(coefficients(fit))
+ n<- length(fitted(fit))
+ plot(hatvalues(fit), main="Index Plot Hat Value")
+ abline(h=c(2,3)*p/n, col="red", Ity=2)
+ identity(1:n, hatvalues(fit), names(hatvalues(fit)))
+ }
> hat.plot(fit)
强影响点
> cutoff <- 4/(nrow(states)-length(fit$coeffficients)-2)
> plot(fit, which=4, cook.levels=cutoff)
> abline(h=cutoff, Ity=2, col="red")
> avPlots(fit, ask=FALSE, id.method="identify")
> #avplot()函数可提供变量添加图
> influencePlot(fit, id.method="identify", main="Influence Plot", sub="Circle size is propertional to Cook's distance")
StudRes Hat CookD
Alaska 1.7536917 0.43247319 0.448050997
California -0.2761492 0.34087628 0.008052956
Nevada 3.5429286 0.09508977 0.209915743
Rhode Island -2.0001631 0.04562377 0.035858963
> #利用influence()函数,可以将离群点、杠杆值和强影响点的信息整合到一幅图形中。
变量变换
> summary(powerTransform(states$Murder))
bcPower Transformation to Normality
Est Power Rounded Pwr Wald Lwr Bnd Wald Upr Bnd
states$Murder 0.6055 1 0.0884 1.1227
Likelihood ratio test that transformation parameter is equal to 0
(log transformation)
LRT df pval
LR test, lambda = (0) 5.665991 1 0.017297
Likelihood ratio test that no transformation is needed
LRT df pval
LR test, lambda = (1) 2.122763 1 0.14512
There were 14 warnings (use warnings() to see them)
> #powerTransform()函数通过lambda的最大似然值来估计正态化变量X^λ。
> #Murder^0.6来正态化变量Murder。由于0.6很接近0.5,你可以尝试用平方根变化来提高模型正态性的符合程度。
> #在本例中λ=1的假设接受原假设,(p=0.145),因此没有强有力的证据表明本例需要变量变化。
> boxTidwell(Murder~ Population+Illiteracy, data=states)
MLE of lambda Score Statistic (z) Pr(>|z|)
Population 0.86939 -0.3228 0.7468
Illiteracy 1.35812 0.6194 0.5357
iterations = 19
> #boxTidwell()函数通过获得预测变量幂数的最大似然估计值来改善线性关系。上述例子结果表明,
> #使用Population^0.87和Illiteracy^1.36能够大大改善线性关系,但是对Population(p=0.75)和Illiteracy(p=0.54)的计分检验又表明变量并不需要变化。
> #响应变量变换还能改善异方差性(误差方差非恒定)