关于算法:R语言信用风险回归模型中交互作用的分析及可视化

8次阅读

共计 2892 个字符,预计需要花费 8 分钟才能阅读完成。

多元统计分析 中,交互作用是指某因素作用随其余因素程度的不同而不同,两因素同时存在是的作用不等于两因素独自作用之和 (相加交互作用) 或之积 (相乘交互作用)。艰深来讲就是,当两个或多个因素同时作用于一个终局时,就可能产生交互作用,又称为效应润饰作用(effect modification)。当两个因素同时存在时,所导致的效应(A) 不等于它们独自效应相加 (B+C) 时,则称因素之间存在交互作用。当 A =B+ C 时称不存在交互效应; 当 A >B+ C 时称存在正交互作用,又称协同作用 (Synergy)。
在一个回归模型中,咱们想写的是

当咱们限度为线性模型时,咱们写

或者

然而咱们狐疑是否短少某些因素……比方,咱们错过所有可能的交互影响。咱们能够交互变量,并假如

能够进一步扩大,达到 3 阶

甚至更多。

假如咱们的变量 ​ 在这里是定性的,更确切地说是二元的。让咱们举一个简略的例子,应用信贷数据集。

Credit 数据是依据集体的银行贷款信息和申请客户贷款逾期产生状况来预测贷款守约偏向的数据集,数据集蕴含 24 个维度的,1000 条数据。

该数据集将通过一组属性形容的人员分类为良好或不良信用风险。
数据集将通过一组属性形容的人员分类为良好或不良信用风险。

咱们读取数据

db=Credit

咱们从三个解释变量开始,

 reg=glm(Y~X1+X2+X3,data=db,family=binomial)
summary(reg)

没有交互的回归像这样

这里有几种可能的交互作用(限度为成对的)。进行回归时察看到:

咱们能够画一幅图来可视化交互:咱们有三个顶点(咱们的三个变量),并且可视化了交互关系

 plot(sommetX,sommetY,cex=1,axes=FALSE,xlab="",ylab="",

for(i in 1:nrow(indices)){segments(sommetX[indices[i,2]],sommetY[indices[i,2]],
text(mean(sommetX[indices[i,2:3]]),mean(sommetY[indices[i,2:3]]),
}

text(sommetX,sommetY,1:k)

这给出了咱们的三个变量

这个模型仿佛是不残缺的,因为咱们仅成对地对待变量之间的相互作用。实际上,这是因为(在视觉上)短少未交互的变量。咱们能够依据须要增加它们

 reg=glm(Y~X1+X2+X3+X1:X2+X1:X3+X2:X3,data=db,family=binomial)
k=3
theta=pi/2+2*pi*(0:(k-1))/k
plot(X,Y
for(i in 1:nrow(indices)){segments(X[indices[i,2]],Y[indices[i,2]],
for(i in 1:k){cercle(c(cos(theta)[i]*1.18,sin(theta)[i]*1.18),.18)
text(cos(theta)[i]*1.35,sin(theta)[i]*1.35,
points(X,Y,cex=6,pch=1) 

这里失去

如果咱们更改变量的“_含意_”(通过从新编码,通过排列真值和假值),将取得下图

 glm(Y~X1+X2+X3+X1:X2+X1:X3+X2:X3,data=dbinv,family=binomial)
plot(sommetX,sommetY,cex=1
for(i in 1:nrow(indices)){segments(sommetX[indices[i,2]]
for(i in 1:k){cercle(c(cos(theta)[i]*1.18,sin(theta)[i]*1.18)

points(sommetX,sommetY,cex=6,pch=19) 

而后能够将其与上一张图进行比拟

应用 5 个变量,咱们减少了可能的交互作用。

而后,咱们批改后面的代码

 formule="Y~1"
for(i in 1:k) formule=paste(formule,"+X",i,sep="")
for(i in 1:nrow(indices)) formule=paste(formule,"+X",indices[i,2],":X",indices[i,3],sep="")
reg=glm(formule,data=db,family=binomial)
plot(sommetX,sommetY,cex=1
for(i in 1:nrow(indices)){segments(sommetX[indices[i,2]],sommetY[indices[i,2]],
for(i in 1:k){cercle(c(cos(theta)[i]*1.18,sin(theta)[i]*1.18)
points(sommetX,sommetY,cex=6 

给出了更简单的图,

咱们也能够只采纳 2 个变量,别离取 3 和 4 种指标。为第一个提取两个指标变量(其余模式为参考模式),为第二个提取三个指标变量,

formule="Y~1"
for(i in 1:k) formule=paste(formule,"+X",i,sep="")
for(i in 1:nrow(indices)formule=paste(formule,"+X",indices[i,2],":X",indices[i,3],sep="")
reg=glm(formule,data=db,family=binomial)
for(i in 1:nrow(indices){if(!is.na(coefficients(reg)[1+k+i])){segments(X[indices[i,2]],Y[indices[i,2]],
}
for(i in 1:k){cercle(c(cos(theta)[i]*1.18,sin(theta)[i]*1.18),.18)
text(cos(theta)[i]*1.35,sin(theta)[i]*1.35,
} 

咱们看到,在右边的局部(雷同变量的三种指标)和左边的局部不再有可能产生交互作用。

咱们还能够通过仅可视化显著交互来简化图形。

 for(i in 1:nrow(indices)){if(!is.na(coefficients(reg)[1+k+i])){if(summary(reg)$coefficients[1+k+i,4]<.1){

在这里,只有一个交互作用是显著的,简直所有的变量都是显著的。如果咱们用 5 个因子从新建设模型,

 for(i in 1:nrow(indices))
formule=paste(formule,"+X",indices[i,2],":X",indices[i,3],sep="")
reg=glm(formule,data=db,family=binomial)

for(i in 1:nrow(indices){if(!is.na(coefficients(reg)[1+k+i])){if(summary(reg)$coefficients[1+k+i,4]<.1){

咱们失去

正文完
 0