R數據分析:雙連續變量交互作用的簡單斜率圖作圖及解釋

2021-01-20 高清飯拍

Interaction: When the effect of one independent variable differs based on the level or magnitude of another independent variable

對於交互作用相信很多人都不陌生,論文中也會經常出現,大家自己也會想要看看感興趣變量之間的交互,交互作用的意思就是在一個自變量的不同水平,另一個自變量的效應大小會有差別,這個和調節作用統計上基本上是一樣的,兩者只有理論意義上的差異。

今天就帶大家用一個實際例子做一個交互作用

y = A + B + A*B

上面的這個公式就是最簡單的,有交互作用的回歸,對於此方面的詳盡解釋,大家可以參考文獻:Jaccard & Turrisi 2003 Interaction Effects in Multiple Regression

今天重點給大家寫兩個連續變量的簡單斜率圖和解釋:

兩連續變量的交互

先模擬出我們今天的數據集:

library(car)

#此部分為數據的模擬
n <- 250
#模擬兩個正態分布的連續變量
X <- rnorm(n, 2.75, .75)
Z <- rnorm(n, 15, 15)
#模擬因變量
Y <- .7*X + .3*Z + 2.5*X*Z + rnorm(n, sd = 5)
#因變量轉化
Y = (Y - min(Y)) / (max(Y) - min(Y))*4
#生成我們的數據
GPA.Data <- data.frame(GPA=Y, Work.Ethic=X, IQ=Z)

上面的代碼生成一個模擬的數據框,我們假設應變量是學生的GPA,兩個自變量分別是學習態度和智商,我們文章要探討的就是學習態度和智商在影響GPA時的交互作用。

此時智商和態度都是正態分布的連續變量。

首先擬合模型:

GPA.Data$IQ.C <- scale(GPA.Data$IQ, center = TRUE, scale = FALSE)
GPA.Data$Work.Ethic.C <- scale(GPA.Data$Work.Ethic, center = TRUE, scale = FALSE)


GPA.Model.1 <- lm(GPA~IQ.C+Work.Ethic.C, GPA.Data)
GPA.Model.2 <- lm (GPA~IQ.C*Work.Ethic.C, GPA.Data)

library(stargazer)
stargazer(GPA.Model.1, GPA.Model.2,type="html",
column.labels = c("Main Effects", "Interaction"),
intercept.bottom = FALSE,
single.row=FALSE,
notes.append = FALSE,
header=FALSE,
out="test.html",
out.header=TRUE)

上面的代碼進行了有交互和沒有交互時的模型擬合,同時我還用了stargazer來輸出模型結果:


可以看到交互作用是有的,下面準備畫簡單斜率圖:

簡單斜率圖

兩個連續變量放在回歸方程中很好理解,在做交互的簡單斜率圖的時候我們就得指定水平,比如AB兩個連續變量有交互作用,我們如果以A為x軸做簡單斜率圖,我們需要表達的是A的效應隨著B的不同水平的不同而不同。

然而B是一個連續變量,所以我們此時得給B指定作圖的水平。

指定水平時一般有三種方法:hand picking, quantiles, standard deviation。

我們先來看hand picking:

library(effects)
Inter.HandPick <- effect('IQ.C*Work.Ethic.C', GPA.Model.2,
xlevels=list(IQ.C = c(-15, 0, 15),
Work.Ethic.C = c(-1.1, 0, 1.1)),
se=TRUE, confidence.level=.95, typical=mean)

Inter.HandPick <- as.data.frame(Inter.HandPick)
head(Inter.HandPick)

可以看到在我們指定的不同水平都有擬合係數均值:


有了上面的數據我們就可以做簡單斜率圖了:

Inter.HandPick$IQ <- factor(Inter.HandPick$IQ.C,
levels=c(-15, 0, 15),
labels=c("1 SD Below Population Mean", "Population Mean", "1 SD Above Population Mean"))


Inter.HandPick$Work.Ethic <- factor(Inter.HandPick$Work.Ethic.C,
levels=c(-1.1, 0, 1.1),
labels=c("Poor Worker", "Average Worker", "Hard Worker"))

library(ggplot2)
Plot.HandPick<-ggplot(data=Inter.HandPick, aes(x=Work.Ethic, y=fit, group=IQ))+
geom_line(size=2, aes(color=IQ))+
ylim(0,4)+
ylab("GPA")+
xlab("Work Ethic")+
ggtitle("Hand Picked Plot")


Plot.HandPick

運行以上代碼即得到簡單斜率圖:


因為我們選擇的B的水平是levels=c(-15, 0, 15),而我們模擬的B也就是IQ的分布是一個以15為均值15為標準差的正態分布,而後進行了中心化,所以我們畫簡單斜率圖選擇的這個水平levels=c(-15, 0, 15)就是均值和加減一個標準差的水平。這個是我們自己選的,所以叫做hand picking。

對於這個簡單斜率圖的解釋如下:

對於IQ均值在總體均值一個標準差以上的這些人,他們的學習態度越好那麼GPA也越好,在普通IQ的學生中也有這麼一種關係,但是比較弱一點,但是對於那些IQ低於人群一個標準差的同學,他們的學習態度再好,GPA好像也不增加。

我們接著看另外一種劃分水平的方法---quantiles

首先我們將我們的B的水平化出來:

IQ.Quantile <- quantile(GPA.Data$IQ.C, probs=c(0,.25,.50,.75,1))
IQ.Quantile <- round(IQ.Quantile, 2)

其餘的步驟和基本就一樣了,依然還是先跑我們的B的不同水平的係數均值:

library(effects)

Inter.Quantile <- effect('IQ.C*Work.Ethic.C', GPA.Model.2,
xlevels=list(IQ.C = c(-35.44, -9.78, -0.04, 9.89, 41.90),
Work.Ethic.C = c(-1.1, 0, 1.1)),
se=TRUE, confidence.level=.95, typical=mean)

Inter.Quantile <- as.data.frame(Inter.Quantile)


Inter.Quantile$IQ<-factor(Inter.Quantile$IQ.C,
levels=c(-35.44, -9.78, -0.04, 9.89, 41.90),
labels=c("0%", "25%", "50%", "75%", "100%"))

Inter.Quantile$Work.Ethic<-factor(Inter.Quantile$Work.Ethic.C,
levels=c(-1.1, 0, 1.1),
labels=c("Poor Worker", "Average Worker", "Hard Worker"))

然後再畫圖:

library(ggplot2)
Plot.Quantile<-ggplot(data=Inter.Quantile, aes(x=Work.Ethic, y=fit, group=IQ))+
geom_line(size=2, aes(color=IQ))+
ylab("GPA")+
xlab("Work Ethic")+
scale_color_manual(values=c("#42c5f4","#54f284","#f45dcc",
"#ff9d35","#d7afff"))+
theme_bw()+
theme(text = element_text(family="Impact", size=14, color="black"))+ #可以在這換字體
ggtitle("Quantile Plot")

Plot.Quantile


對於上面圖的解釋相信大家都會了,這兒不多羅嗦,直接繼續看第三種劃分水平的方法

第三種劃分水平的方法叫做Standard Deviation

其實我們第一種方法就是按照標準差劃分的,所以這個做出來的圖和第一種方法基本沒有區別,首先還是水平劃分:

IQ.SD <- c(mean(GPA.Data$IQ.C)-sd(GPA.Data$IQ.C),
mean(GPA.Data$IQ.C),
mean(GPA.Data$IQ.C)+sd(GPA.Data$IQ.C))

IQ.SD <- round(IQ.SD, 2)

然後做交互,得出係數均值:

Inter.SD <- effect(c("IQ.C*Work.Ethic.C"), GPA.Model.2,
xlevels=list(IQ.C=c(-14.75, 0, 14.75),
Work.Ethic.C=c(-1.1, 0, 1.1)))

Inter.SD <- as.data.frame(Inter.SD)


Inter.SD$IQ<-factor(Inter.SD$IQ.C,
levels=c(-14.75, 0, 14.75),
labels=c("1 SD Below Mean", "Mean", "1 SD Above Mean"))

Inter.SD$Work.Ethic<-factor(Inter.SD$Work.Ethic.C,
levels=c(-1.1, 0, 1.1),
labels=c("Poor Worker", "Average Worker", "Hard Worker"))

然後再出圖:


Plot.SD<-ggplot(data=Inter.SD, aes(x=Work.Ethic, y=fit, group=IQ))+
geom_line(size=1, aes(color=IQ))+
geom_point(aes(colour = IQ), size=2)+
geom_ribbon(aes(ymin=fit-se, ymax=fit+se),fill="gray",alpha=.6)+
ylim(0,4)+
ylab("GPA")+
xlab("Work Ethic")+
ggtitle("Standard Deviation Plot")+
theme_bw()+ #Removes the gray background
theme(panel.grid.major=element_blank(),
panel.grid.minor=element_blank(),
legend.key = element_blank())+ #Removes the lines
scale_fill_grey()
Plot.SD



此圖的解釋和第一種方法一模一樣哈。

小結

今天給大家寫了回歸中雙連續變量交互作用的簡單斜率圖的畫法和解釋,之後會給大家寫有分類變量的交互,感謝大家耐心看完。發表這些東西的主要目的就是督促自己,希望大家關注評論指出不足,一起進步。內容我都會寫的很細,用到的數據集也會在原文中給出連結,你只要按照文章中的代碼自己也可以做出一樣的結果,一個目的就是零基礎也能懂,因為自己就是什麼編程基礎沒有從零學Python和R的,加油。數據分析問題諮詢,代處理請私信。

(站外連結發不了,請關注後私信回復「數據連結」獲取本頭條號所有使用數據)

往期內容:

R數據分析:雙因素方差分析與交互作用檢驗

python機器學習:機器學習模型評價-交叉驗證與留一驗證


相關焦點

  • 如何分析調節作用?
    因此根據自變量和調節變量的數據類型,可以將調節作用分為四種,分別是:其中,當自變量X和調節變量均為定類數據時,使用【進階方法】中的【雙因素方差】進行分析。當交互項有顯著性時,則說明具有調節效應。另外三種情況均可使用【問卷研究】-【調節作用】進行分析。
  • 一文輕鬆看懂線性回歸分析的交互作用!
    作者:丁點helper來源:丁點幫你前幾天的文章,我們聚焦在回歸分析,今天來看看在回歸分析中常常要研究的一類難點問題——交互作用的探究。交互(interaction),字面上不太好理解,但是從數學表達上卻很簡單。
  • 多水平數據分析:R、Mplus和 HLM 應用對比
    以優秀程度來做結果變量,這種差異顯然每個人和每個人是不一樣(低水平),也可能一部分是不同班級之間有差異,不同學校之間有差異。所以,多水平模型的一個基本假定是,高水平差異能夠解釋結果變量的一部分。那麼,究竟是不是這樣呢?
  • 【R語言】相關性分析、相關係數的顯著性檢驗及可視化
    相關係數是對變量之間的相關程度的定量描述,相關係數值介於-1~1之間,越接近0相關性越低,越接近-1或1相關性越高;正負號表明相關方向,正號為正相關、負號為負相關。當數據呈正態分布時,才可以使用相關性分析。可以使用Shapiro-Wilk test進行檢查數據是否滿足正態分布。
  • 忽略交互效應後果很嚴重,審稿人很生氣!
    正文 當一個變量的作用取決於另一變量的值時,就會發生交互效應。交互效應在回歸分析,方差分析和設計的實驗中很常見。在此文中,我們將解釋交互效應,如何在回歸中解釋它們,以及如果不將其包括在模型中將面臨的問題。 在任何研究中,無論是味道測試還是製造過程,許多變量都會影響結果。
  • 基於PS-InSAR數據的北京市地面沉降影響因素及其交互作用探測
    本文分別採用因子探測與交互探測兩個模塊解釋單因子和不同影響因子之間的交互作用對地面沉降影響力的作用。1)因子探測。其核心思想是比較某一地理環境因子(自變量X)與地理事物(因變量Y)的變化在空間上是否具有顯著的一致性,如地理環境因子與地理事物的變化具有一致性,則說明該地理環境因子對地理事物的發生和發展具有決定意義,用q值來度量,其計算公式為:
  • SPSS超詳細教程:雙因素方差分析(Two-way ANOVA)
    4.1 結果判斷  4.1.1 判斷是否存在交互作用  採用雙因素方差分析的一個出發點就是判斷自變量之間是否存在交互作用,如本研究中的gender和education_level變量。  4.2.2 簡單主效應的解釋  對二分類變量簡單主效應的解釋比多分類變量容易,所以我們從性別變量的簡單主效應開始:    性別的簡單主效應就是在不同的受教育程度中分析性別的作用
  • 【科研加油站】SPSS操作之雙因素方差分析(Two-way ANOVA)
    4.1.3 當不存在交互作用時如果不存在交互作用,不同自變量的簡單主效應是一致的,我們可以直接討論主效應結果。也有研究者存在質疑,既然交互項沒有統計學意義,是否還需要在模型中保留交互項?考慮到研究樣本推論總體的可信性,我們仍建議在雙因素方差模型中保留交互項,供大家參考。
  • R繪圖:一文了解ggplot2顏色的設置
    :ggeconodist,基於ggplot2的另類箱圖R語言學習系列之「多變的熱圖」螞蟻金服在線可視化引擎 G2R繪圖:無與倫比的華麗風行(桑基圖)R繪圖:相關性分析與作圖(單基因相關性)R繪圖:相關性分析與作圖R繪圖ggsci: 高大上的論文配色,一文解決配色問題R繪圖 ggpubr:
  • 搞懂雙因素方差,原來這麼簡單
    單因素方差分析的使用非常普遍;相比之下雙因素方差對數據的要求更嚴格,因而更多用於實驗研究。如果實驗中涉及調節變量,自變量X和調節變量Z均為分類數據,此時也應該使用多因素方差分析方法。由於兩個自變量都是定類數據所以選擇方差分析。以廣告形式和地區作為自變量X,商品銷售額作為Y。2、操作:第1步:有交互的雙因素方差分析(1)選擇【進階方法】→【雙因素方差分析】。
  • R與生物專題 |第十一講 R作圖-ggplot2軟體包快速入門-qplot()函數
    #創建數據group= c("Male", "Female", "Child"),value= c(25, 25, 50) )df#創建數據df<-data.frame(group= c("Male", "Female", "Child"),value= c(25, 25, 50)
  • 管理心理學之統計(17)雙因素獨立測量方差分析
    1.什麼是雙因素獨立測量方差分析典型的試驗往往集中於一個自變量和一個因變量。在現實中,很少存在被隔離的變量。也就是說行為通常同時受多種變量的影響,這些變量間還可能存在交互作用。在研究內部,將兩個因素組合起來的優勢能夠檢驗由一個交互作用導致的效應。如圖溼度的主效應為10。當溫度是30度時,數據間的差異為20,這20分的差異不能被10的溼度主效應解釋。不能被解釋的平均數差異說明兩個因素間存在交互作用。為了評估交互作用,雙因素ANOVA首先需要識別不能被主效應解釋的平均數差異。假設陳述為:3.
  • 「兩組」連續變量之間的相關分析(SPSS:典型相關分析)
    1.常見的幾種相關一組連續變量與另一組連續變量之間的相關關係可以計算「典型相關分析」。
  • R語言統計篇: 單因素協方差分析
    (One-way ANCOVA)可以研究一個分類變量對一個連續變量的影響,同時校正其他變量的作用,這些變量也稱為協變量(Covariate)。也是單因素方差分析(One-way ANOVA,R語言統計篇:單因素方差分析)的一個延伸。比方說,我們現在想要研究不同BMI(偏輕,正常與超重)與空腹血糖的關係,同時校正血壓水平。在此研究中,BMI分組是一個分類變量(自變量),血糖是一個連續變量(因變量),血壓則是一個協變量(covariate)。c.
  • r語言卡方檢驗和似然比檢驗_r語言似然比檢驗代碼 - CSDN
    本文對應《R語言實戰》第9章:方差分析;第10章:功效分析 ====================================================================方差分析:回歸分析是通過量化的預測變量來預測量化的響應變量,而解釋變量裡含有名義型或有序型因子變量時
  • R臨床科研作圖-4-色彩斑斕與黑白肅穆
    方法簡單粗暴,一個命令即可快速按照不同雜誌風格快速改變配色,這是個人比較喜歡的幾個常見期刊的配色方案圖:1.1 Nature Publishing Group1.2 The New England Journal of Medicine
  • R語言從入門到精通:Day12--R語言統計--回歸分析
    當只有一個預測變量, 但同時包含變量的冪(比如,X、X2、X3)時,我們稱為多項式回歸。當有不止一個預測變量時,則稱為多元線性回歸。首先從一個簡單的線性回歸例子開始,然後逐步展示多項式回歸和多元線性回歸,最後介紹一個包含交互項的多元線性回歸的例子。
  • R與生物專題 | 第七講 R-相關性分析及作圖
    今天的更新,我們會帶您學習用R語言做相關性分析和作圖。相關性分析用於評估兩個或多個變量之間的關聯。例如,如果我們想知道父親和兒子的身高之間是否存在關係,可以計算相關係數來回答這個問題。注意,僅當數據呈正態分布時,才可以使用相關性分析。
  • SPSS超詳細教程:三因素方差分析
    本例中因變量只有研究對象的膽固醇水平,是連續變量,符合假設1:因變量唯一,且為連續變量;共有3個自變量:性別(gender)、心臟病風險(risk)和所用藥物(drug),都是分類變量,符合假設2:存在三個自變量,且都是分類變量;至於假設3,我們之前的章節(如簡單線性回歸分析
  • 從協方差分析看回歸與方差分析的聯繫
    文章來源: 丁點幫你微信公眾號作者:丁點helper無論是單因素還是雙因素方差分析,我們可以發現,它們都有一些共性,比如研究的因變量(如前文的硒含量、滿意度得分),都是定量變量;而自變量,即分組變量(如地區、教育程度、性別)都是定性變量。