基本假设:正态性、独立性、线性、同方差性
常用R包:car(carData)、MASS、leap…
1. 原始数据的分析
plot(x,y); abline(lm(y~x))
library(carData);library(car)
scatterplot(x,y) #生成拟合的二元关系图(散点+箱线)
scatterplotMatrix() #生成散点图矩阵
cor() #计算相关系数
2. 回归模型的拟合(参数估计和检验)
# 数据准备
n <- ; p <-
Y <- as.matrix(dataset[,1])
X1 <- as.matrix(dataset[,2:p])
X <- cbind(1,X1)
XX <- t(X)%*%X
# 参数估计
Beta <- solve(XX)%*%t(X)%*%Y
e <- Y-X%*%Beta #<or> resid <- resid(lm) #残差的计算
SSe <- t(e)%*%e
sigma2 <- SSe/(n-p) || sigma2 <- sd(e)^2*(n-1)/(n-p) #σ标准差的估计
covBeta <- sigma2*solve(XX) #Beta的协方差阵
r <- matrix(nrow=p,ncol=p)
for (i in 1:p) {
for (j in 1:p)
r[i,j] <- covBeta[i,j]/(sqrt(covBeta[i,i])*sqrt(covBeta[j,j]))
} #Beta的相关系数阵
# 模型检验
Beta1 <- beta[-1]
Xc <- (X-matrix(1,nrow=18)%*%colMeans(X))[,-1]
RSS_I <- t(Beta1)%*%t(Xc)%*%Y
RSS_H <- n*mean(Y)^2
SS_He <- t(Y)%*%Y-RSS_H
RSS <- t(Beta)%*%t(X)%*%Y || RSS <- RSS_H + RSS_I
SSe <- t(Y)%*%Y-RSS
F <- (RSS-RSS_H)/(p-1)/(SSe/(n-p))
pf(F,p-1,n-p,lower.tail = T)
# 系数检验
t <- matrix(1,ncol=p)
for(j in 1:4) t[j]<-beta[j]/sqrt(sigma2*solve(t(X)%*%X)[j,j])
p-value <- 2*pt(abs(t),n-p,lower.tail = FALSE)
# 复相关系数
TSS<-t(Y-mean(Y))%*%(Y-mean(Y))
R2 <- RSS_I / TSS
Adjusted_R2 <- 1-(1-R2)*(n-1)/(n-p)
myfit <- lm(y~x1+x2+x3,dataframe)
summary() 展示拟合模型的详细结果
coefficients() 列出拟合模型的模型参数(截距项和斜率)
confint() 列出模型参数的置信区间(95%)
fitted() 列出拟合模型的预测值
anova() 生成拟合模型的方差分析表
vcov() 列出模型参数的协方差矩阵
AIC() 输出赤池信息统计量
plot() 生成评价拟合模型的诊断图
predict() 用拟合模型对新的数据集预测响应变量值
3. 变量选择
变量选择准则
## 平均残差平方和准则 (RMSq)
RMSq <- SSeq/(n-q)
## Cp准则
Cp <- SSeq/sigma2