R語言信用風險迴歸模型中交互做用的分析及可視化

原文連接:http://tecdat.cn/?p=21892 

引言

多元統計分析 中,交互做用是指某因素做用隨其餘因素水平的不一樣而不一樣,兩因素同時存在是的做用不等於兩因素單獨做用之和(相加交互做用)或之積(相乘交互做用)。通俗來說就是,當兩個或多個因素同時做用於一個結局時,就可能產生交互做用,又稱爲效應修飾做用(effect modification)。當兩個因素同時存在時,所致使的效應(A)不等於它們單獨效應相加(B+C)時,則稱因素之間存在交互做用。當A=B+C時稱不存在交互效應;當A>B+C時稱存在正交互做用,又稱協同做用(Synergy)。
在一個迴歸模型中,咱們想寫的是html

當咱們限制爲線性模型時,咱們寫python

或者編碼

可是咱們懷疑是否缺乏某些因素……好比,咱們錯過全部可能的交互影響。咱們能夠交互變量,並假設spa

能夠進一步擴展,達到3階code

甚至更多。orm

假設咱們的變量 ​ 在這裏是定性的,更確切地說是二元的。htm

信貸數據

讓咱們舉一個簡單的例子,使用信貸數據集。ci

Credit數據是根據我的的銀行貸款信息和申請客戶貸款逾期發生狀況來預測貸款違約傾向的數據集,數據集包含24個維度的,1000條數據。rem

該數據集將經過一組屬性描述的人員分類爲良好或不良信用風險。
數據集將經過一組屬性描述的人員分類爲良好或不良信用風險。get

創建模型

咱們讀取數據

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){

咱們獲得


最受歡迎的看法

1.R語言多元Logistic邏輯迴歸 應用案例

2.面板平滑轉移回歸(PSTR)分析案例實現

3.matlab中的偏最小二乘迴歸(PLSR)和主成分迴歸(PCR)

4.R語言泊松Poisson迴歸模型分析案例

5.R語言迴歸中的Hosmer-Lemeshow擬合優度檢驗

6.r語言中對LASSO迴歸,Ridge嶺迴歸和Elastic Net模型實現

7.在R語言中實現Logistic邏輯迴歸

8.python用線性迴歸預測股票價格

9.R語言如何在生存分析與Cox迴歸中計算IDI,NRI指標

相關文章
相關標籤/搜索