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(方差膨胀因子)来检验多重共线性问题。如果存在多重共线性,即有可能存在两个变量高度相关,需要降维或剔除处理。

  • 4
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
R语言中进行分类变量中介分析,可以使用"mediation"包。具体步骤如下: 1. 安装和加载"mediation"包。 ``` install.packages("mediation") library(mediation) ``` 2. 进行自变量和中介变量之间的logistic回归,得到中介变量的系数和p值。 ``` fit.m1 <- glm(medvar ~ iv, data = data, family = binomial()) summary(fit.m1) ``` 其中,medvar为中介变量,iv为自变量,data为数据集。 3. 进行因变量和中介变量之间的logistic回归,得到因变量在中介变量控制下的系数和p值。 ``` fit.m2 <- glm(outcome ~ medvar + iv, data = data, family = binomial()) summary(fit.m2) ``` 其中,outcome为因变量,medvar和iv为中介变量自变量,data为数据集。 4. 进行因变量自变量之间的logistic回归,得到自变量的系数和p值。 ``` fit.y <- glm(outcome ~ iv, data = data, family = binomial()) summary(fit.y) ``` 其中,iv为自变量,outcome为因变量,data为数据集。 5. 计算中介效应和置信区间。 ``` med.out <- mediate(fit.m1, fit.m2, treat = "iv", mediator = "medvar", robustSE = TRUE) summary(med.out) ``` 其中,fit.m1和fit.m2分别为中介效应模型和完全模型,treat为自变量,mediator为中介变量。上述命令会输出中介效应和置信区间的估计值,以及各个路径的回归系数和显著性检验结果。 需要注意的是,"mediation"包还提供了其他的中介分析方法,如多重中介分析和非线性中介分析等。具体使用方法可以参考其官方文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值