R語言|資料預處理--4變數分析及相關性
因變數與自變數之間的關係包括兩種:自變數為數值型別和分類型別
請參考R專案客戶回覆預測與效益最大化
1、分別檢視資料的屬性為數值型和因子型別的屬性
which(sapply(cup98, is.numeric))
> idx.num
ODATEDW DOB CLUSTER AGE NUMCHLD INCOME WEALTH1 HIT
1 6 10 11 17 18 20 21
。。。
>which(sapply(cup98, is.factor))
OSOURCE STATE ZIP PVASTATE RECINHSE MDMAUD DOMAIN
2 3 4 5 7 8 9
64 65 67
。。。
2、求數值/分類變數與因變數的相關性:
1)、檢視因變數與其他數值型變數之間的相關係數:
> correlation <- cor(cup98$TARGET_D, cup98[, idx.num], use="pairwise.complete.obs") use為對存在缺失值計算相關係數的方法,即使在資料中存在缺失值,相關係數的計算結果也不可能為NA
> correlation<-abs(correlation)
> correlation<- correlation[, order(correlation, decreasing=T)]
> correlation
TARGET_D TARGET_B LASTGIFT RAMNTALL AVGGIFT
1.00000000000.7742323755 0.0616784458 0.0448101061 0.0442990841
MAXRAMNT INCOME CLUSTER2 NUMPRM12 WEALTH1
0.03922375090.0320627023 0.0290870830 0.0251337775 0.0248673117
MINRAMNT LASTDATE NUMPROM CLUSTER CARDPM12
0.02015786860.0188471021 0.0173371740 0.0171274879 0.0163577542
NUMCHLD CONTROLN CARDPROM FISTDATE ODATEDW
0.01492048990.0133664439 0.0113023931 0.0075324932 0.0069484311
HIT CARDGIFT NGIFTALL MAXADATE TIMELAG
0.00664837280.0064498822 0.0048990126 0.0044963520 0.0036115917
DOB HPHONE_D AGE RFA_2F
0.00275414720.0024315898 0.0022823598 0.0009047682
檢視任意兩個數值型變數之間的相關係數,並繪製散佈圖:
> cor(cup98[,idx.num])
> pairs(cup98)
繪製數值變數的散佈圖,並基於目標變數設定點的顏色:
使用函式jitter()新增少量的噪聲資料,在存在大量重疊時間點的情況這種設定很有用
> color <-ifelse(cup98$TARGET_D > 0, "blue", "black")
> pch <-ifelse(cup98$TARGET > 0, "+", ".")
>plot(jitter(cup98$AGE), jitter(cup98$HIT), pch=pch, col=color, cex=0.7,ylim=c(0, 70), xlab="AGE", ylab="HIT")
>legend("topleft", c("TARGET_D>0","TARGET_D=0"), col=c("blue", "black"),pch=c("+", "."))
2)、對於分類變數,使用卡方檢驗檢視自變數與因變數之間的關係:
> myChisqTest<- function(x) {
+ t1 <- table(cup98pos[,x], cup98pos$TARGET_D2)
+ plot(t1, main=x, las=1)
+ print(x)
+ print(chisq.test(t1))
+ }
>myChisqTest("GENDER")
[1]"GENDER"
Pearson's Chi-squared test
data: t1
X-squared = NaN, df= 42, p-value = NA
卡方值越大,說明相關性越小
對所有的分類變數求與因變數的卡方值:
> idx.cat <-which(sapply(cup98pos, is.factor))
>sapply(names(idx.cat), myChisqTest)
3、資料集接 《3缺失值離群點處理》中2
變數分析
#1)單變數分析
#簡單地看下部分變數的分佈,比如對於age變數,如下圖:
ggplot(traindata,aes(x = x2, y = ..density..)) + geom_histogram(fill = "blue", colour= "grey60", size = 0.2, alpha = 0.2) + geom_density()
#可以看到年齡變數大致呈正態分佈,符合統計分析的假設。再比如月收入變數,也可以做圖觀察觀察,如下:
ggplot(traindata,aes(x = x5, y = ..density..)) + geom_histogram(fill = "blue", colour= "grey60", size = 0.2, alpha = 0.2) + geom_density() + xlim(1,20000)
#月收入也大致呈正態分佈,符合統計分析的需要。
#2)變數之間的相關性:建模之前首先得檢驗變數之間的相關性,如果變數之間相關性顯著,會影響模型的預測效果。下面通過corrplot函式,畫出各變數之間,包括響應變數與自變數的相關性。
cor1 <-cor(traindata[, 1:11])
library(corrplot)
corrplot(cor1)
corrplot(cor1,method="number")
#由上圖可以看出,各變數之間的相關性是非常小的。其實Logistic迴歸同樣需要檢驗多重共線性問題,不過此處由於各變數之間的相關性較小,可以初步判斷不存在多重共線性問題,當然我們在建模後還可以用VIF(方差膨脹因子)來檢驗多重共線性問題。如果存在多重共線性,即有可能存在兩個變數高度相關,需要降維或剔除處理。