R语言与其它回归方法


压缩方法 & 降维方法

1. 岭回归

法①:lm.ridge函数

## lm.ridge函数进行岭回归
# 对样本数据进行标准化处理
data <- data.frame(scale(data0[,2:]))
# 对标准化处理后的数据(不含截距项)进行岭回归
library(MASS)
ridge <- lm.ridge(y~.-1, data= ,lambda=seq(0,3,0.1))
beta <- coef(ridge) ; beta
# 绘制岭迹图(部分格式调整不必要)
k <- ridge$lambda
plot(k,k,type="n",xlab="岭参数k",ylab="岭回归系数",ylim=c(-2.5,2.5))
linetype <- c(1:)   char <- c(18:)  #绘图格式调整
for(i in 1:)
	lines(k,beta[,i],type="o",lty=linetype[i],pch=char[i],cex=0.75)
legend(locator(1),inset=0.5,legend=c("x1","x2",...),cex=0.8,pch=char,lty=linetype)

## LinearRidge函数进行岭回归
library(ridge)
ridge <- linearRidge(y~ ,data= ,lambda="automatic",scaling=c("corrForm","scale","none"),...)
summary(ridge)  #多了参数检验的功能

案例:

#### 对数据进行标准化处理
scaledata <- scale(data)
X <- scaledata[,2:3]; Y <- scaledata[,1]; 
mean<-attr(scaledata,'scaled:center'); sd<-attr(scaledata,'scaled:scale')

#-----------------------------------------------------
#### 1. 复共线性判别
##* 使用方差膨胀因子
library(carData);library(car)
lm1 <- lm(Y~X1+X2,data=data.frame(scaledata))
vif(lm1) 
##* 使用条件数 k(lambda(1)/lambda(p-1)) 
# 用kappa函数直接计算
kappa(t(X)%*%X,exact=TRUE)
# 另法:手动计算矩阵的特征值并使用条件数k判别
Lambda <- eigen(t(X)%*%X)
Lambda$values[1]/Lambda$values[2]

  • 3
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值