R语言与线性回归分析

本文详细探讨了R语言进行线性回归分析的过程,包括原始数据分析、模型拟合与参数检验、变量选择策略如逐步回归和全子集回归,以及回归诊断中的多重共线性问题。此外,还介绍了改进措施如删除观测点、Box-Cox变换,以及岭回归的应用。
摘要由CSDN通过智能技术生成


基本假设:正态性、独立性、线性、同方差性
常用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-(n-2*q)<
  • 7
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值