R语言异常观测值

检测多重共线

> 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)的计分检验又表明变量并不需要变化。

> #响应变量变换还能改善异方差性(误差方差非恒定)

你可能感兴趣的:(R语言异常观测值)