如果自變量X通過某一變量M對因變量Y産生一定影響,則稱M為X和Y的中介變量。研究中介作用的目的是在已知X和Y關系的基礎上,探索産生這個關系的内部作用機制。作用關系圖如下:
It occurs when the independent variables effect on the dependent variable is — as the name says — mediated by another variable: A mediator.
今天就給大家寫一個如何用R語言做中介作用的例子。
數據介紹 為了更好的讓大家理解中介作用,今天我們基于iris數據集自己模拟一個數據集。
df=iris set.seed(12334) df$random1=runif(nrow(df),min=min(df$Sepal.Length),max=max(df$Sepal.Length)) df$mediator=df$Sepal.Length*0.35 df$random1*0.65 df$random2=runif(nrow(df),min=min(df$mediator),max=max(df$mediator)) df$dv=df$mediator*0.35 df$random2*0.65
以上代碼,我們用花瓣的長度為自變量,以自變量為基礎模拟出了我們的中介變量mediator,還有因變量dv,此時因為我們數據都是自己模拟出來的,所以我們知道中介變量包含0.35的自變量變異,而因變量包含0.35的中介變量的變異,所以我們估計中介作用是存在的,而且自變量對因變量的總效應應該是35% × 35% = 12.25%。
上面的這段話,大家好好理解!
分析操作 接下來我們就來看看我們的統計結果是不是和我們想的一樣。
第一步,檢驗總效應,本例中就是花瓣長度是不是會影響dv這個變量。第二步,檢驗自變量對中介變量的效應,本例中就是花瓣長度對mediator這個變量的作用。第三步,同時檢驗中介變量和自變量對因變量的效應。第四步,對直接效應和間接效應進行比較。 下面我們一步一步看操作:
第一步檢驗總效應
總效應就是自變量和因變量之間的關系,在中介中對于總效應的理解有兩派思想,第一派認為隻有總效應顯著,才有中介作用;第二派人認為,自變量和因變量之間的關系不存在時也可以有中介作用。(Bollen 1989, p. 52; Hayes 2018,p. 80)
所以總效應有沒有問題不大,關鍵看你的審稿人如何想。
具體到我們的數據,檢驗總效應:
fit.totaleffect=lm(dv~Sepal.Length,df) summary(fit.totaleffect)
看到沒,總效應和我們預想的一樣0.12多,嘿嘿。
第二步,檢驗自變量對中介變量的效應
這一步檢驗必須的顯著才行,不然就不用做了,因為如果自變量都不能影響中介變量,那還有啥的中介作用呢?很好理解
fit.mediator=lm(mediator~Sepal.Length,df) summary(fit.mediator)
差不多,這一步的效應也大概是0.35,哈哈。
第三步同時檢驗中介變量和自變量對因變量的效應
這一步就是将自變量和中介變量同時納入回歸方程,這一步中中介變量必須顯著,整個方程變異的解釋力度必須更大,也就是R方比隻有自變量時更大。
fit.dv=lm(dv~Sepal.Length mediator,df) summary(fit.dv)
看上面的結果,我們知道中介變量作用依然顯著,結合步驟2我們就可以得出确實有中介作用,值得注意的是mediator的系數也差不多0.35。
之前第一步是我們的自變量對因變量還有顯著作用,此時沒了,說明我們這個是個完全中介,什麼意思呢?就是說自變量對因變量的作用完全的是中介變量造成的,或者說完全地被中介變量所解釋。同樣地,如果此步中自變量系數依然顯著,則為部分中介。
第四步拟合系數估計和效應對比
此時我們需要安裝一個新包mediation:
install.packages(mediation) library(mediation)
然後我們把我們二三步做的回歸方程喂給這個包的mediate方法:
results = mediate(fit.mediator, fit.dv, treat=Sepal.Length, mediator=mediator, boot=T) summary(results)
注意這個mediate方法需要我們指定哪個是自變量,哪個是中介變量,在本例中treat=Sepal.Length, mediator=mediator,然後用bootstrap方法估計系數置信區間。
下面寫一寫輸出的結果怎麼看:
ACME stands for average causal mediation effects,這個是自變量對因變量的間接作用,注意它是由自變量對中介變量的作用和中介變量對因變量的作用相乘得到的。0.3*0.37=0.11ADE stands for average direct effects,這個是自變量對因變量的直接效應,也就是控制了中介變量後,自變量對因變量的效應,也就是第三步做的。Total Effect stands for the total effect (direct indirect) of the IV on the DV. 這個就是總效應,也就是直接效應加間接效應ACME ADEProp. Mediated describes the proportion of the effect of the IV on the DV that goes through the mediator.這個是中介效應的占比,是用間接效應除以總效應得到的。0.113/0.13=0.87小結 今天給大家寫了中介作用的R語言檢驗,其實用結構方程做更簡單,不過這麼寫相信大家都能理解,如果有用請轉發點贊,感謝大家耐心看完。發表這些東西的主要目的就是督促自己,希望大家關注評論指出不足,一起進步。内容我都會寫的很細,用到的數據集也會在原文中給出鍊接,你隻要按照文章中的代碼自己也可以做出一樣的結果,一個目的就是零基礎也能懂,因為自己就是什麼基礎沒有從零學Python和R的,加油。
(站外鍊接發不了,請關注後私信回複“數據鍊接”獲取本頭條号所有使用數據)
往期内容:
R語言:利用caret的dummyVars函數設置虛拟變量
數據可視化——R語言為ggplot圖形添加P值和顯著性水平
機器學習:什麼是自然語言處理
R語言作圖:ggplot2 分面(facet)相關設置
R語言作圖:如何在同一圖層畫多個geoms
R數據分析:再寫stargazer包,如何輸出漂亮的表格
R數據分析:如何用R做驗證性因子分析及畫圖,實例操練
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!