wilcox.test(Prob ~ So, data=UScrime) 2、wilcox.test(y1,y2,paried=TRUE):它适用于两组成对数据和无法保证正态性假设的情境。 例:sapply(UScrime[c(\
with(UScrime, wilcox.test(U1, U2, paired = TRUE))
多于两组的比较:
1、kruskal.test(y~A,data):各组独立
例:states <- as.data.frame(cbind(state.region, state.x77))
kruskal.test(Illiteracy ~ state.region, data=states) 2、friedman.test(y~A|B,data):各组不独立 非参数多组比较:
1、npmc() :npmc包 例:class <- state.region
var <- state.x77[, c(\
mydata <- as.data.frame(cbind(class, var)) rm(class,var) library(npmc)
summary(npmc(mydata), type = \
aggregate(mydata, by = list(mydata$class), median)
回归
用一个或多个预测变量(也称自变量或解释变量)来预测响应变量(也称因变量、效标变量或结果变量)的方法。
1、lm(): 拟合回归模型 lm(y~x1+x2+x3,data)
简单线性回归
1、lm(): (data是数据框)
例:fit <- lm(weight ~ height, data = women)
summary(fit) women$weight fitted(fit) residuals(fit)
plot(women$height, women$weight, main = \ xlab = \多项式回归
例:fit2 <- lm(weight ~ height + I(height^2), data = women)
summary(fit2)
plot(women$height, women$weight, main = \ xlab = \lines(women$height, fitted(fit2)) 2、scatterplot() :绘制二元关系图 例:library(car)
scatterplot(weight ~ height, data = women, spread = FALSE,
lty.smooth = 2, pch = 19, main = \
ylab = \多元线性回归
1、scatterplotMatrix():car包
scatterplotMatrix()函数默认在非对角线区域绘制变量间的散点图, 并添加平滑 (loess) 和线性拟合曲线。对角线区域绘制每个变量的密度图和轴须图。 例:fit <- lm(Murder ~ Population + Illiteracy + Income +
Frost, data = states) 有交互项的多元线性回归
例:fit <- lm(mpg ~ hp + wt + hp:wt, data = mtcars)
summary(fit)
1、effect() : effects包 :展示交互项的结果
term即模型要画的项, mod为通过lm()拟合的模型, xlevels是一个列表,指定变量要设定的常量值, multiline=TRUE选项表示添加相应直线。 例:library(effects)
plot(effect(\ multiline = TRUE) 回归诊断
1、confint():求模型参数的置信区间
例:fit <- lm(Murder ~ Population + Illiteracy + Income + Frost, data=states)
confint(fit)
2、plot():生成评价模型拟合情况的图形 例:fit <- lm(weight ~ height, data = women)
par(mfrow = c(2, 2)) plot(fit)
3、lm() : 删除观测点
例:newfit <- lm(weight ~ height + I(height^2), data = women[-c(13, 15),])
par(mfrow = c(2, 2)) plot(newfit) par(opar)
gvlma包提供了对所有线性模型假设进行检验的方法
检验正态性:
4、qqPlot():car包:学生化残差(studentized residual,也称学生化删除残差或折叠化残差) 例:library(car)
fit <- lm(Murder ~ Population + Illiteracy + Income + Frost, data = states)
qqPlot(fit, labels = row.names(states), id.method = \ \
注:id.method = \选项能够交互式绘图 5、fitted():提取模型的拟合值 例:fitted(fit)[“Nevada”]
6、residuals():二项式回归模型的残差 例:residuals(fit)[“Nevada”]
7、residplot():生成学生化残差柱状图(即直方图),并添加正态曲线、核密度曲线和轴须图。它不需要加载car包
例:residplot <- function(fit, nbreaks=10) { z <- rstudent(fit)
hist(z, breaks=nbreaks, freq=FALSE, xlab=\ main=\
rug(jitter(z), col=\
curve(dnorm(x, mean=mean(z), sd=sd(z)), add=TRUE, col=\ lines(density(z)$x, density(z)$y, col=\ legend(\
legend = c( \ lty=1:2, col=c(\}
residplot(fit) 误差的独立性
8、durbinWatsonTest() :验证独立性 例:durbinWatsonTest(fit) 验证线性
9、crPlots():car包成分残差图也称偏残差图 例:crPlots(fit)
同方差性 (car包的两个函数)
10、ncvTest() :生成一个计分检验,零假设为误差方差不变,备择假设为误差方差随着拟合值水平的变化而变化。若检验显著,则说明存在异方差性
11、spreadLevelPlot():添加了最佳拟合曲线的散点图,展示标准化残差绝对值与拟合值的关系。
例:library(car)
ncvTest(fit)
spreadLevelPlot(fit) 线性模型假设的综合验证
1、gvlma() :gvlma包:线性模型假设进行综合验证,同时还能做偏斜度、峰度和异方差性的评价
例:library(gvlma)
gvmodel <- gvlma(fit) summary(gvmodel) 多重共线性
1、vif() :car包 :函数提供VIF值,
vif >2就表明存在多重共线性问题
例:vif(fit)
sqrt(vif(fit)) > 2 异常观测值
1、outlierTest() :car包 :求得最大标准化残差绝对值Bonferroni调整后的p值 例:library(car)
outlierTest(fit) 高杠杆值点
1、hat.plot() :观测点的帽子值大于帽子均值的2或3倍,即可以认定为高杠杆值点 例:hat.plot <- function(fit){ p <- length(coefficients(fit)) n <- length(fitted(fit))
plot(hatvalues(fit), main = \ abline(h = c(2, 3) * p/n, col = \
identify(1:n, hatvalues(fit), names(hatvalues(fit))) }
hat.plot(fit) 强影响点 :Cook’s D值大于4/(n-k -1),则表明它是强影响点,其中n 为样本量大小, k 是 预测变量数目。
例:cutoff <- 4/(nrow(states) - length(fit$coefficients) - 2)
plot(fit, which = 4, cook.levels = cutoff) abline(h = cutoff, lty = 2, col = \
1、influencePlot():car包:离群点、杠杆值和强影响点的信息整合到一幅图形中 例:influencePlot(fit, id.method = \ sub = \纵坐标超过+2或小于2的州可被认为是离群点,
水平轴超过0.2或0.3的州有高杠杆值(通常为预测值的组合)。 圆圈大小与影响成比例,圆圈很大的点可能是对模型参数的估计造成的不成比例影响的强影响点 变量变换
1、powerTransform():car包:函数通过λ 的最大似然估计来正态化变量x。
例:library(car)
summary(powerTransform(states$Murder))
2、boxTidwell():car包:通过获得预测变量幂数的最大似然估计来改善线性关系 例:library(car)
boxTidwell(Murder ~ Population + Illiteracy, data = states) 模型比较
1、anova():基础包:比较两个嵌套模型的拟合优度
例:fit1 <- lm(Murder ~ Population + Illiteracy + Income + Frost, data = states)
fit2 <- lm(Murder ~ Population + Illiteracy, data = states) anova(fit2, fit1)
2、AIC():AIC值越小的模型(可以不嵌套)要优先选择,它说明模型用较少的参数获得了足够的拟合度。
例:fit1 <- lm(Murder ~ Population + Illiteracy + Income + Frost, data = states)
fit2 <- lm(Murder ~ Population + Illiteracy, data = states) AIC(fit1, fit2) 变量选择
1、stepAIC():MASS包:逐步回归模型
?