三是x與Me的關係和Me與因變量的關係都是非線性的。這是“兩期的非線性中介作用”。
為了簡化起見,我們隻討論“前期的非線性中介作用”。
其他兩種非線性的中介其實是一樣的,讀者可以舉一反三。上麵已經提過,如果Me是x與y之間的中介變量,而x對Me的影響是a;Me對y的影響是b的話,那麼a×b就是Me這個中介變量的效用值(effectsize)。但是,如果這個中介關係不是線性的,而是曲線的,那麼我們應該如何處理呢?例如,工作壓力(x)和工作挑戰性(Me)的關係就可能是一個典型的倒U形關係。壓力很低時,工作簡單,工作挑戰性不會高。但是壓力過大時,員工已經放棄了,工作挑戰性也不會高。因此,適當(中度)的工作壓力,工作挑戰性是最高的。故工作挑戰性(Me)與工作壓力(x)的關係是一個倒U形的關係。我們知道如果x與Me的關係是線性的,x對Me的影響就可以用這個線性關係的斜率來表現。因此,如果Me=a0+a1x(a0是常數,是直線的截距),我們可以說x對Me的影響是a1。但是如果x與Me的關係是非線性(U形的關係)時,它們的數學關係就會為Me=a0+a1x+a2x2自然,工作的挑戰性(Me)隻是一個中介變量。壓力(x)最終影響的是員工的工作表現(y)。而我們假設工作挑戰性(Me)與工作表現(y)的關係還是簡單的線性的。工作挑戰越高,員工的表現就越好(為了簡化這個討論,我們就不要再假設會不會挑戰過高,導致工作表現減少等問題)。因此,y=b0+b1Me(b0是常數,是直線的截距;b1是直線的斜率)。我們就簡單地說Me對y的影響是b1。但是現在中介關係的效用值,已經不再是a×b這麼簡單了。因為現在x對Me的影響,已經不是一個常數,而是一個二次方的函數a1x+a2x2了。那麼,我們應該如何表現這個中介關係的效用值呢?如果我們用微積分的概念,把x對Me的影響表現為“當x改變一個單位時,Me所對應的改變”。
同樣的Me對y的影響,是“當Me改變一個單位時,y所對應的改變”。
Me的中介作用的效用值就是這兩個改變速率(rateofchange)的乘積。當x與Me的關係是線性時,前段的改變速率就是一個常數a。當Me與y的關係是線性時,前段的改變速率就是一個常數b。因此,兩個改變速率的乘積就是a×b。用微積分的符號來表示為中介變量的效用值=兩個改變速率的乘積=MeX×YMe當Me與x的關係是非線性,而Me與y的關係還是線性時,則Me=a0+a1x+a2x2
y=b0+b1MeMeX=a1+2a2xYMe=b1因此,在這個簡單的非線性中介關係裏,中介作用的效用值就是(a1+2a2x)×b1。要證明Me與x有一個倒U形的關係;同時,Me中介了x與y的關係,我們需要兩個條件:條件一:Me=a0+a1x+a2x2中a2不等於0,而且是一個負數。條件二:(a1+2a2x)×b1不等於0。第一個條件是證明Me與x的關係是倒U形的;第二個條件是Me中介了x與y的關係。但是我們如何證明這兩個條件呢?同上麵的非線性調節一樣,我們可用3個x的值,根據Me與x的估計非線性關係Me=a0+a1x+a2x2,求取Me的3個值。3個x的值,分別采用x的平均數xm和x的平均數加上x的一個標準差(xm+σ)以及x的平均數減去x的一個標準差(xm-σ)。把這3個x值代入Me=a0+a1x+a2x2的公式,求得的3個Me值中,中間的一個Me值應該比另外兩個Me值大。這樣才可以證明x與Me的關係是倒U形的。
那第二個條件又如何呢?如上麵討論,(a1+2a2x)×b1不等於0,就代表中介關係得到支持。但是,問題是這個條件不是一個常數,公式中包含了變量x在其中。我們要知道x的值是什麼,才可以知道中介關係是否成立。這就是為什麼要求3個x的值,來看看在不同情形下的x值。同樣的,我們用這3個x值,代入公式(a1+2a2x)×b1中,求得的3個中介作用的大小,應該是當x等於xm時,中介作用是最大的。
讀者大概會問,雖然x與Me有倒U形的關係,但是為什麼Me的值一定要在x=xm的時候最高呢?答案是並不需要。隻是因為我們一般做調研時都是用量表。我們沒有辦法知道這個倒U形的最高點在哪裏。故就隨便找3個點來表現而已。其實,最好的方法是多找幾個點(如5個點)來把倒U形這個關係表示出來。但是我們覺得x用同樣距離的點會比較有說服力。
根據上麵的討論,如果用Mplus程序寫出來,放在附錄6,供讀者參考。14.8總結我們在這一章裏,討論了幾種比較複雜的中介和調節作用。其中有:被調節的中介(或稱中介調節)(ModeratedMediation,MoMe)。被中介的調節(或稱調節中介)(MediatedModeration,MeMo)。跨層階的調節作用(MultilevelMediation)。跨層階的中介作用(MultilevelModeration)。跨層階的中介調節作用(MultilevelModeratedMediation)。跨層階的調節中介作用(MultilevelMediatedModeration)。非線性的中介作用(NonlinearMediation)。非線性的調節作用(NonlinearModeration)。管理學的分析方法日新月異。其中,運用到的數學與統計學也越來越複雜。我們發現中間有兩個很大的問題:第一,管理研究的方法的發展好像比理論的發展來得更快。這一現象是有點危險的。因為如果工具的發現開始領導理論的發展,那研究人員就變成是“為工具而建構模型”了。舉個例子,“中介效應”本來是給我們建構理論所用的。模型中的中介變量,就是我們的理論基礎。但是有了“中介調節效應”後,研究者就會覺得單有一個中介效應,好像模型不夠“優雅”。
如果能夠多加一個調節變量的話,那就好看很多了。更甚者,有些會希望加進模型的調節變量是一個跨層階的變量,使得整個模型變成一個“跨層階的中介調節”模型。本來把模型複雜化,理論上是更能解釋觀察的現象的。但是如果是“為了多加一個跨層階的變量而選取變量”,就往往會出現一些古古怪怪的變量,或者是與原來的理論完全沒有關係的變量,使得原來的理論應用不倫不類了。我在國內常常聽到研究生同學會“為方法而設計研究”。
同學學到了一個新的研究方法,就希望設計一個研究,可以運用一下這個新學會的小玩具。這樣的研究態度是非常危險的。第二,在這麼快的發展速度下,往往有不同的學者推陳出新。因而形成了不同的觀點。這些不同的觀點可能要經過一段時間才可以被人消化、歸納和分析,並從中選取比較好的方法,作為日後研究人員所采用。因此,研究人員往往就好像是年輕人追求時尚產品一樣,整天在追求“最時髦的”研究分析方法。如果應用不同方法的研究人員,自己對這些方法沒有很好地掌握,那就變成一個沒有品位的時尚追求者,今年流行穿一件圓領T恤外麵穿一件不扣鈕的襯衫,我跟著試試;明年流行穿小一個碼數的衣服時,我也試試;後年流行穿短褲加靴子,我也試試。這樣,就完全違反了一個學者的個人分析、理念、創新和為自己的夢想努力不懈的原則了。最後,我們希望讀者不會被這一章書裏的數學公式嚇跑了。我在文章中提供公式都是非不得已的。讀者明白了它們後,它們會是你極好的朋友,而且能夠幫助你解決很多問題。就算讀者不能完全明白這些數學公式背後的意義,也不要太焦慮。請讀者記著我們在第5章中提出的原則:①能看得懂的盡量掌握。②不能完全掌握的數學部分,也要明白它背後的理論意義。③切忌“不知道自己在做什麼”和“不明所是而為之”。
囫圇吞棗式地學習,在研究方法中是第一死穴。
M=a05+ax5X+az5Z+axz5XZ+em5SETRNG=MTMTINDEX=54321.MODELPROGRAMa05=.038aX5=.807aZ5=-.046aXZ5=-.136.COMPUTEPRED=a05+aX5*X+aZ5*Z+aXZ5*XZ.CNLRY,/OUTFILE=′C:\DATA\MODMED\STAGE1.SAV′/BOOTSTRAP=1000.上麵第一句是定下SPSS隨機數字產生器的種子=54321(其實任何一個數字都可以,隻要是這個分析與下麵討論的另一個分析的種子是一樣就可以了)。第二句是給下麵的估計方程一些開始的估計值,讓程序可以開一點找到運算的結果。那些a05,aX5,aZ5,aXZ5的數值,是用我們的整個樣本估計出來的。同樣的,其實用什麼開始值都可以。隻是開始值越是接近最後的估計,計算機所需的計算時間就越短。第三句是估計的模型,就是上麵的公式。第四句是告訴程式,這個估計牽涉二階變量(因為有XZ),故Preacher,Rucker和Hayes覺得用CNLR程序比較恰當,而不是我們一向習慣的線性回歸程序REG。第五句是生成的文檔的儲藏地點。第六句是叫程式在我們的樣本中,抽取1000個bootstrap樣本。每個樣本都用第三句的估計模型,估計出a05,aX5,aZ5,aXZ5的數值。
這就代表我們最後生成的檔案STAGE1.SAV中,會有1000個數據點,每個數據點將有4個變量,即a05,aX5,aZ5和aXZ5。這1000個bootstrap樣本就利用了我們的原來樣本,為我們了做成了1000組的a05,aX5,aZ5和aXZ5的估計數值。對於後期的調節中介作用,我們有公式為Y=b020+bx20X+bm20M+bz20Z+bxz20XZ+bmz20MZ+ey20SETRNG=MTMTINDEX=54321.MODELPROGRAMb020=-.029bX20=.281bM20=.310bZ20=.057bXZ20=-.131bMZ20=-.014.COMPUTEPRED=b020+bX20*X+bM20*M+bZ20*Z+bXZ20*XZ+bMZ20*MZ.CNLRY/OUTFILE=′C:\DATA\MODMED\STAGE2.SAV′/BOOTSTRAP=1000.上麵第一句是定下SPSS隨機數字產生器的種子=54321。其實這也是任何一個數字都可以。但是這裏有個很重要的要求,就是這個種子一定要與上麵程式用的種子相同。因為上麵的程式是幫助我們估計前期的調節中介,這裏的程式是幫助我們估計後期的調節中介。打個比方,上麵的程式就好像是為我們估計中介作用的X→M的a值。這個程式就好像是為我們估計中介作用的M→Y的b值。我們最後要把“每一個”bootstrap樣本的a值乘以b值。如果估計a值的bootstrap樣本,與估計b值的bootstrap樣本是不同的,這就好像把雞乘以鴨一樣,毫無意義。因此,為了保證前期的調節中介的bootstrap樣本與後期的調節中介的bootstrap樣本是一樣的,我們就要指定同樣的隨機數字產生器的種子[注:雖然我們說抽bootstap樣本是隨機的,但是計算機是很笨的。隻要開始的種子是一樣的,抽出來的樣本就會一模一樣]。第二句是給下麵的估計方程一些開始的估計值,讓程序可以早一點找到運算的結果。那些b020,bX20,bM20,bZ20,bXZ20,bMZ20的數值,是用我們的整個樣本估計出來的。第三句是估計的模型。第四句是同樣地用CNLR程序作為估計。第五句是生成的文檔的儲藏地點。第六句是叫程式在我們的樣本中,抽取1000個bootstrap樣本。每個樣本都用第三句的估計模型,估計出b020,bX20,bM20,bZ20,bXZ20,bMZ20的數值。這就代表我們最後生成的檔案STAGE2.SAV中,會有1000個數據點,每個數據點將有4個變量,就是b020,bX20,bM20,bZ20,bXZ20和bMZ20。這1000個bootstrap樣本就利用了我們的原來樣本,為我們做成了1000組的b020,bX20,bM20,bZ20,bXZ20和bMZ20的估計數值。有了這1000個bootstap樣本估計出來的前期和後期調節中介作用,我們就可以用一個簡單的Excel檔案,把不同的a與b值按我們的調節中介方程相乘,再按大小排列。這樣就形成一個調節中介作用的bootstrapping抽樣分布。有了這個分布,我們就可以用一般的bootstrapping的步驟去驗證我們樣本中的調節中介的效用值了。我們在附錄3中列出了一個“前期調節中介”的SPSS分析方法,供讀者參考。3使用SPSS程序驗證“前期調節中介”作用首先,按照內文,SPSS程序會產生1000個bootstrapping樣本的ax5,axz5,bm4估計(下表的(1)、(2)、(3)列)。假設調節變量正負一個標準差為-0.908(Z的低值=ZL)到+0.908(Z的高值=ZH)。把這兩個Z的值代進調節中介的效用值公式裏:效用值=(ax5+axz5Z)bm4我們就會得到“當Z=ZL的調節中介效用值”(下表的(4)列),和“當Z=ZH的調節中介效用值”(下表的(5)列)。這兩個數值的差(下表的(6)列),就是這個bootstrap樣本的“調節中介效用值”的估計。因為我們有1000個bootstrap樣本,所以我們就有1000個“調節中介效用值”的估計。計算了這1000個“調節中介效用值”,我們就把這些效用值“從大到小”逆序地排列出來(最大的排在最前)。因此,下標的第一個數據是在1000個bootstrap樣本中,“調節中介效用值”最大的。第二行是“調節中介效用值”第二大的,以此類推。這樣排序下去,第25個“調節中介效用值”就是我們驗證H0:(ax5+axz5Z)bm4=0的α=0.05的臨界值(假設是兩尾測驗)。如果我們原來的樣本的(ax5+axz5Z)bm4值是大於這個臨界值的,我們就推翻虛無假設,推論調節中介作用得到數據的支持。(1)(2)(3)(4)(5)(6)Bootstrap樣本(按第6列逆序排列)ZL=Z-σZ=-0.908ZH=Z+σZ
=0.908ax5axz5bm4(ax5+axz5ZL)bm4(ax5+axz5ZH)bm4(ax5+axz5ZL)bm4-
(ax5+axz5ZH)bm410.685-0.0520.1000.07330.06380.009420.609-0.0520.0800.05250.04490.0076250.702-0.0130.1420.10130.09800.00332610004跨層次的“調節中介”與“中介調節”的Mplus程序摘自劉東、張震、汪默,被調節的中介和被中介的調節:理論構建與模型檢驗。陳曉萍、徐淑英、樊景立編,組織與管理研究的實證方法(第二版),北京大學出版社,577584頁。
兩層次類型Ⅰ被中介的調節作用TITLE:AtwolevelTypeImediatedmoderationpathanalyticalmodel,
xandwareLevel2,mandyarelevel1,//x與w為二階變量,m與y為一階變量
Bothmandyhavebetweengroupvariance,//m與y有組內和組間的方差DATA;FILEISexample.txt;//數據檔案example.txtDEFINE:xw=(x3.0)*(w4.0);//x與w的乘積中心化,減低多重共線性VARIABLE:NAMESARExmwycluster;//變量名字,cluster為用來分組的變量USEVARIABLESARExmwyxw;//除了cluster是用來分組以外,其他都會在模型裏CENTERINGISGRANDMEAN(xw);//x與w的乘積中心化,減低多重共線性CLUSTER=cluster;//定義cluster是用來分組的變量BETWEEN=xwxw;//x,w,xw都是第二層階的變量ANALYSIS:TYPE=TWOLEVEL;//這一種模型在Mplus稱為
TWOLEVELMODEL;//我們的模型%WITHIN%//第一層階的模型yonm(bw)//第一層階隻有m影響y;m→y的效應大小,我們把它稱為“bw”(這命名可省略)%BETWEEN%//第二層階的模型monxw//第二層階有x,w,xw影響m;這一句首先說x,w影響mxw(a);//這一句接著說xw也影響m,我們把它的效用值稱為“a”yonm(bb)//m影響y,我們把它的效用值稱為“bb”xwxw;//除了m影響y外,x,w,xw對y的影響也要控製住MODELCONSTRAINT://定義如何使用上麵命名的“a”與“bb”NEW(ind);//做一個新的參數出來,稱為“ind”(代表indirect)ind=a*bb;//“ind”這個間接效應就是a*bbOUTPUT://注:因為是跨層次的分析,這個版本的Mplus沒有bootstrapping的步驟SAMPSTAT;//輸出統計項CINTERVAL;//利用正態分布的假設,計算估計參數的置信區間注:Mplus7.11不支持跨層次的bootstrapping。那麼我們估計了“跨層次的中介調節”是ind=a*bb後,如何知道這個(a*bb)的中介作用在總體是否顯著(總體的a*bb是否為0)呢?既然程序不允許我們做“樣本bootstrapping”,我們就唯有做“參數bootstrapping”了。我們假設當樣本夠大時,a與bb的抽樣分布都分別是正態分布。因此,我們從Mplus程序讀出a的估計和它相應的標準誤Sa,及b的估計,和它相應的標準誤Sbb,到這個網址(http://www.quantpsy.org/medmc/medmc.htm)輸入這4項數據進行“蒙第卡羅”“參數bootstrapping”,就可以知道a*bb在總體是否顯著了。兩層次類型Ⅱ被中介的調節作用。
TITLE;AtwolevelTypeIImediatedmoderationpathanalyticalmodel,wandmarelevel2,xandyarelevel1;//x與w為二階變量,m與y為一階變量DATA:FILEISexample,txt;//數據檔案example.txtVARIABLE:NAMESARExmwycluster;//變量名字,cluster為用來分組的變量USEVARIABLESARExmwy;//除了cluster是用來分組以外,其他都會在模型裏CENTERINGISGRANDMEAN(wm);//x與w中心化,減低多重共線性CENTERINGISGROUPMEAN(x);//因為類型Ⅱ牽涉HLM估計,按HLM習慣把x“小組中性化”CLUSTER=cluster;//定義cluster是用來分組的變量WITHIN=x;//x是第一層階的變量BETWEEN=wm;//w與m是第二層階的變量ANALYSIS:TYPE=TWOLEVELRANDOM;//這種模型稱為randomslope
modelMODEL;//我們的模型%WITHIN%//第一層階的模型S|yonx;//在第一層階中每一小組把y對應x回歸,不同小組的不同斜率稱為S%BETWEEN%//第二層階的模型monw(a);//第二層階中,w對m的影響稱為aSonm(b)//第二層階中,m對x→y的斜率(影響)的調節作用稱為bw;//w也影響x→y的斜率yonmw;//第二層階中,控製住m和w對y的影響(估計調節作用時控製主效應)ywithS;//因為第一階層的y和第二階層的S都是模型中獨立的因變量,我們讓它們相關MODELCONSTRAINT://定義新的參數NEW(ind);//做一個新的參數出來,稱為“ind”(代表indirect)ind=a*b;//“ind”這個間接效應就是a*bOUTPUT://注:因為是跨層次的分析,這個版本的Mplus沒有bootstrapping的步驟SAMPSTAT;//輸出統計項CINTERVAL;//利用正態分布的假設,計算估計參數的置信區間因為Mplus7沒有提供跨層次的中介模型的“樣本bootstrapping”工具,而Liu,Zhang和Mo(2012)也沒有使用上麵的Selig和Preacher(2008)的網頁程序,所以他們自己提供了以下這個R語言的程序來進行“參數bootstrapping”,用以驗證上麵估計的“跨層次中介調節”參數估計是否顯著。我們也把它列出來,在語句後稍作解釋。Rcodeforderivingtheempiricaldistributionofthemediatedmoderationeffect:以下就是R語言參數bootstrapping的程序。a=0.979這是a的參數估計(這些估計都可以從Mplus程序的輸出找到)b=0.540這是b的參數估計astd=0.058這是a的標準誤(standarderror)bstd=0.029這是b的標準誤rep=20000我們bootstrap20000次conf=95Ⅰ型錯誤α=0.05avec=rnorm(rep)*astd+a從一個(平均數=a,標準差=astd)的正態分布,隨機抽取20000個a值bvec=rnorm(rep)*bstd+b從一個(平均數=b,標準差=bstd)的正態分布,隨機抽取20000個b值ab=avec*bvec把這20000個a與b值各自相乘,產生20000個乘積low=(1conf/100)/2選取Ⅰ型錯誤α=0.05時的上下臨界點,並打印出來upp=((1conf/100)/2)+(conf/100)LL=quantile(ab,low)UL=quantile(ab,upp)LL4=format(LL,digits=5)UL4=format(UL,digits=5)hist(ab,breaks=′FD′,col=′skyblue*,xlab=paste(conf,′%ConfidenceInterval′,′LL′,LL4,′UL′,UL4,,main=′DistributionofIndirectEffect′)兩層次被中介的調節作用。
TITLE:Atwolevelfirststagemoderatedmediationpathanalyticalmodel,
wislevel2,x,m,yarelevel1,//w為二階變量,x,m與y為一階變量
mandybothhavebetweengroupvariance;DATA;FILEISexample,txt;//數據檔案example.txtVARIABLE:NAMESARExmwycluster;//變量名字,cluster為用來分組的變量USEVARIABLESARExmwy;//除了cluster是用來分組以外,其他都會在模型裏CENTERINGISGRANDMEAN(w);//第二層階的w總平均中心化CENTERINGISGROUPMEAN(x);//因為牽涉HLM估計,按HLM習慣把x“小組中性化”CENTERINGISGROUPMEAN(m);//按HLM習慣把m“小組中性化”CLUSTER=cluster;//定義cluster是用來分組的變量WITHIN=xm;//x與m是第一層階的變量BETWEEN=w;//w是第二層階的變量ANALYSIS:TYPE=TWOLEVELRANDOM;//這種模型稱為randomslopemodelMODEL://我們的模型%WITHIN%//第一層階的模型S|monx;//在第一層階中每一小組把m對應x回歸,不同小組的不同斜率稱為Syonm(b)//第一層階中,m對y的影響稱為“b”x;//第一層階中,x對y的要控製%BETWEEN%//第二層階的模型Sonw(al);//第二層階中,w對x→y的斜率(影響)的調節作用稱為“a1”[S](a0);//第二層階中,w對x→y的截距的調節作用稱為“a0”//注:這裏的a1就是內文的γ11;a0就是內文的γ10mwithS;//讓第二階層的m和S相關ywithS;//讓第二階層的y和S相關ywithm;//讓第二階層的m和y相關ywithw;//讓第二階層的w和y相關MODELCONSTRAINT://定義新的參數NEW(ind_hind_l);//做兩個新的參數出來,“ind_h”是m+σ的中介效應,“ind_h”是m-σ的中介效應,σ是m的標準差ind_h=(a0+a1*(0.85))*b;//如果我們假設m的平均是0,標準差是0.85,ind_h是m在正一個標準差時的數值ind_l=(a0a1*(0.85))*b;//ind_l是m在負一個標準差時的數值//注:這裏的ind_h就是內文的MoH;ind_l就是內文的MoL//注:這裏假設m的平均是0,標準差是0.85。在內文中我們假設Mo的均值是2.5,標準差是0.21NEW(diff);//做一個新的參數出來,稱為diffDiff=ind_hind_l;//diff是ind_h和ind_l的差。如果這個差額是顯著的,跨層次調節中介效應就顯著OUTPUT://注:因為是跨層次的分析,這個版本的Mplus沒有bootstrapping的步驟SAMPSTAT;//輸出統計項CINTERVAL;//利用正態分布的假設,計算估計參數的置信區間Rcodeforderivingtheempiricaldistributionofthedifferencebetweenmediationeffectsattwoconditionalvalues(+1/-1SDvaluesofW):a0istheconditionalmeanoftherandomslopeeffectbetweenXandMa0stdisthestandarderrorofa0a1isthepredictiveeffectofWontherandomslopeeffectbetweenXandMa1stdisthestandarderrorofalbisthefixedeffectofMonYbstdisthestandarderrorofb“rep=20000”definesthenumberofresamplingtobe20000“conf=95”definesthat95%Clwillbeused.以下是假設Mplus程序估計出來的數值(這些估計都可以從Mplus程序的輸出找到):a0=0.979a0是二階的w調節一階的x→m的方程的截距,也就是內文的γ10a1=0.050a1是二階的w調節一階的x→m的方程的斜率,也就是內文的γ11b=0.540b是一階的m→y的斜率,也就是內文的ba0std=0.051這是a0的標準誤(standarderror)a1std=0.058這是a1的標準誤bstd=0.029這是b的標準誤rep=20000我們bootstrap20000次conf=95Ⅰ型錯誤α=0.05a0vec=rnorm(rep)*a0std+a0從一個(平均數=a0,標準差=a0std)的正態分布,隨機抽取20000個a0值a1vec=rnorm(rep)*a1std+a1從一個(平均數=a1,標準差=a1std)的正態分布,隨機抽取20000個a1值bvec=rnorm(rep)*bstd+b從一個(平均數=b,標準差=bstd)的正態分布,隨機抽取20000個b值amhvec=a1vec*0.85+a0vec當w為均值加一個標準差時,x→m的效應amlvec=a1vec*(-0.85)+a0vec當w為均值減一個標準差時,x→m的效應abh=amhvec*bvec當w為均值加一個標準差時,(x→m的效應)*(m→y的效應)ab1=amlvec*bvec當w為均值減一個標準差時,(x→m的效應)*(m→y的效應)d=abhabl當w為均值正負一個標準差時,(x→m的效應)*(m→y的效應)的總效應之差額注:d就是“跨層次調節中介”的效應值low=(1conf/100)/2選取Ⅰ型錯誤α=0.05時的上下臨界點,並打印出來upp=((1conf/100)/2)+(conf/100)LL=quantile(d,low)UL=quantile(d,upp)LL4=format(LL,digits=5)UL4=format(UL,digits=5)hist(d,breaks=′FD′,col=′skyblue′,xlab=paste(conf,*%ConfidenceInterval,′LL′,LL4,′UL′,UL4),main=′DistributionofIndirectEffect*)5非線性的調節作用的Mplus程式TITLE:ModifiedfromexampleinHayes&Preacher2010;DATA:fileisc:\data.dat;VARIABLE:namesareXXsqMY;usevariablesareXXsqMY;ANALYSIS:bootstrap=1000;MODEL:YonX(a1)//M受X影響,效用值稱為a1Xsq(a2)//M受X平方影響,效用值稱為a2Mo(a3)//Y受X影響,效用值稱為c1XMo(a4)//Y受X平方影響,效用值稱為c2XsqMo(a5);//Y受M影響,效用值稱為b[Y](i1);//括號[]是指明我們把X對M影響的方程的截距估計,並把它稱為i1MODELCONSTRAINT:Mo=1;new(theta1theta2theta3);//創造3個新的變量,稱為theta1,2,3,它們的定義在下麵new(x1x2x3);//創造3個新的變量,稱為x1,x2,x3,它們就是X從數據求得的低、中、高值x1=2.45;//Xm-σ,X的均值減去一個標準差x2=5.5;//Xm,X的均值x3=8.45;//Xm+σ,X的均值加上一個標準差theta1=a1+2*a2*x1+a4*Mo*x1+2*a5*x1*Mo;//x對y的影響,當X是低值的時候theta2=a1+2*a2*x2+a4*Mo*x2+2*a5*x2*Mo;//x對y的影響,當X是均值的時候theta3=a1+2*a2*x3+a4*Mo*x3+2*a5*x3*Mo;//x對y的影響,當X是高值的時候Mo=0;new(theta4,theta5,theta6);theta4=a1+2*a2*x1+a4*Mo*x1+2*a5*x1*Mo;//x對y的影響,當X是低值的時候theta5=a1+2*a2*x2+a4*Mo*x2+2*a5*x2*Mo;//x對y的影響,當X是均值的時候theta6=a1+2*a2*x3+a4*Mo*x3+2*a5*x3*Mo;//x對y的影響,當X是高值的時候OUTPUT:cinterval(bcbootstrap);6非線性的中介作用的Mplus程式TITLE:ModifiedfromexampleinHayes&Preacher2010;DATA:fileisc:\data.dat;VARIABLE:namesareXXsqMY;usevariablesareXXsqMY;ANALYSIS:bootstrap=10000;MODEL:MonX(a1)//M受X影響,效用值稱為a1Xsq(a2);//M受X平方影響,效用值稱為a2YonX(c1)//Y受X影響,效用值稱為c1Xsq(c2)//Y受X平方影響,效用值稱為c2M(b);//Y受M影響,效用值稱為b[M](i1);//括號[]是指明我們把X對M的影響的方程的截距估計,並把它稱為i1MODELCONSTRAINT:new(theta1theta2theta3);//創造3個新的變量,稱為theta1,2,3,它們的定義在下麵new(predm1predm2predm3);//創造3個新的變量,稱為predm1,2,3,它們的定義在下麵new(x1x2x3);//創造3個新的變量,稱為x1,x2,x3,它們就是X從數據求得的低、中、高值x1=3.9460;//Xm-σ,X的均值減去一個標準差x2=5.2275;//Xm,X的均值x3=6.5090;//Xm+σ,X的均值加上一個標準差predm1=i1+a1*x1+a2*x1*x1;//上麵談到的“條件一”,當X是低值的時候predm2=i1+a1*x2+a2*x2*x2;//上麵談到的“條件一”,當X是均值的時候predm3=i1+a1*x3+a2*x3*x3;//上麵談到的“條件一”,當X是高值的時候theta1=(a1+2*a2*x1)*b;//上麵談到的“條件二”,當X是低值的時候theta2=(a1+2*a2*x2)*b;//上麵談到的“條件二”,當X是均值的時候theta3=(a1+2*a2*x3)*b;//上麵談到的“條件二”,當X是高值的時候OUTPUT:cinterval(bcbootstrap);根據上麵程序,我們應該得到的結果是:①premd2與premd1和prem3的95%置信區間應該是不重疊的,這表明這3個M值是不相等的[注:其實premd1和premd3是可以相等的,隻要premd2不等就可以了]。②premd2應該大於premd1和prem3,這樣x對Me的影響才是倒U形的關係。③theta2應該大於theta1和theta3,這樣y→Me→y的影響才是倒U形的關係。