多元统计分析中,交互作用是指某因素作用随其他因素水平的不同而不同,两因素同时存在是的作用不等于两因素单独作用之和(相加交互作用)或之积(相乘交互作用)。
通俗来讲就是,当两个或多个因素同时作用于一个结局时,就可能产生交互作用,又称为效应修饰作用(effect modification)。
可下载资源
当两个因素同时存在时,所导致的效应(A)不等于它们单独效应相加(B+C)时,则称因素之间存在交互作用。当A=B+C时称不存在交互效应;当A>B+C时称存在正交互作用,又称协同作用(Synergy)。
①Subgroups:识别对某干预受益最大的人群(亚组)To identify the subgroups of individuals in which the intervention or treatment is likely to have the largest effect (resources to implement interventions may be limited).
②Covariates:识别最可能施加干预的协变量以降低主要暴露因素的效应(另一主要暴露因素不容易施加干预的情况下)To find other covariates to be intervened upon to eliminate much or most of the effect of the primary exposure of interest (it may not be possible to intervene directly on the primary exposure of interest).
③Mechanism:揭示暴露影响事件发生的机制To provide insight into the mechanisms for the outcome.
④Power:提高评价某暴露对结局影响总效应的把握度To help increase power in testing for the overall effect of an exposure on an outcome.
⑤Model:仅从纯统计学角度,包含交互作用项的模型拟合数据更好To fit the data better when the model includes the additional flexibility allowed by an interaction term.
在一个回归模型中,我们想写的是
当我们限制为线性模型时,我们写
或者
但是我们怀疑是否缺少某些因素……比如,我们错过所有可能的交互影响。我们可以交互变量,并假设
可以进一步扩展,达到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){
我们得到
可下载资源
关于作者
Kaizong Ye是拓端研究室(TRL)的研究员。在此对他对本文所作的贡献表示诚挚感谢,他在上海财经大学完成了统计学专业的硕士学位,专注人工智能领域。擅长Python.Matlab仿真、视觉处理、神经网络、数据分析。
本文借鉴了作者最近为《R语言数据分析挖掘必知必会 》课堂做的准备。
非常感谢您阅读本文,如需帮助请联系我们!