- 最后登录
- 2014-6-18
- 注册时间
- 2009-3-1
- 威望
- 0
- 金钱
- 274
- 贡献
- 215
- 阅读权限
- 20
- 积分
- 489
- 日志
- 0
- 记录
- 0
- 帖子
- 56
- 主题
- 7
- 精华
- 0
- 好友
- 0
  
- 注册时间
- 2009-3-1
- 最后登录
- 2014-6-18
- 积分
- 489
- 精华
- 0
- 主题
- 7
- 帖子
- 56
|
我来分享一个计算simple slope effect和画图的SPSS macro (https://people.ok.ubc.ca/brioconn/simple/simple.html)。大家只要自行修改下面Macro中b1,b2,b3的名称就可以了。
. E- b8 M* ^' e- P' e% \& U& f9 S4 g8 }2 O2 j& D
*****************.2 E- K. h; t' l8 `
desc b1 b2/save.% q: {( A; l$ s z% G) \
compute idv = zb1.
+ `8 N; i9 l |9 y2 _3 G8 L. Qcompute mod = zb2.
$ L2 [ C, Y! D% a: h! ecompute x = idv * mod.
) _ p; x2 L9 F( i$ u$ Y$ x3 H6 F1 bcompute dv = b3.
% a4 V6 c) O* u( d/ w7 G% R/ b+ ^4 K0 b* ]( s( r+ {. H
regression
; E2 [3 A" H$ ~, P% L V /matrix out ('filename')
/ H! f1 a0 N' W- s /var= idv mod x dv
! _* D7 U8 t" v! K$ O5 w /statistics=defaults zpp bcov
0 @: Z7 X$ ]/ p /dependent=dv
1 F7 F! p+ n% S, w7 M /enter idv mod
! h( c4 Z6 S, Y3 _ /test (x) .0 s5 I' y8 A; a
8 q9 x8 O% r, i+ ~" w2 ]7 H8 zset mxloops=65.
$ x% A! F0 `3 x- n) {& E5 nmatrix.6 e- B: k2 l0 h2 g2 n
/ F) z% C3 S; o3 S0 z v1 T& zcompute multiMOD = 1.0 .% D+ Y' O* Y" I2 y" H. ]
compute multiIDV = 1.0 .2 m$ U! i3 ?$ }$ q. o7 H: D
compute dichotom = 0 .
, K2 x& ?& Z% l* O/ B* j/ n! Y7 V acompute dichotLo = 1 .7 G6 S# O, p+ {
compute dichotHi = 2 . z( f8 }; { {6 E! {
mget /file='filename'.
1 d5 b2 M5 Y5 X' v
4 z' s1 J) \* G1 K4 ^* Overall regression coeffs.' d# Z" L0 E6 F+ U) i d
compute beta = inv(cr(1:3,1:3)) * cr(1:3,4) . ~* @: R$ x [5 a- v
compute b = (sd(1,4) &/ sd(1,1:3)) &* t(beta) .
x2 W1 }/ k* c( _6 h) Vcompute a = mn(1,4) - ( rsum ( mn(1,1:3) &* b ) ) .
) X) L/ K* c icompute r2all = t(beta) * cr(1:3,4) .
; T5 `( D7 {, H# m; z! tcompute r2main = t(inv(cr(1:2,1:2))*cr(1:2,4))*cr(1:2,4).
7 e- _4 D; F& ` d; D" Kcompute r2chXn = r2all - r2main.# w& d& H r4 ~' g3 ]% D" Y
compute fsquare = (r2all - r2main) / (1 - r2all) .
2 p7 H6 O9 {8 F0 P" o; z7 o* Ccompute F = (r2all-r2main) / ((1-r2all)/(nc(1,1)-3-1)).: |( O& G+ c+ [
compute dferror = nc(1,1) - 3 - 1.
' h1 c( f" y/ a0 y# Zcompute pF = 1 - fcdf(F,1,dferror) .
" m$ j4 Q; L" n4 G5 F1 b
4 b" P) f* i9 O) g$ ^0 Dprint {r2chXn,F,{1},dferror,fsquare,pF} /title="Coefficients for the Interaction"
/ r- t9 o4 m' C! D; ` /clabels="Rsq. ch." "F" "df num." "df denom." "f-squared" "Sig. F".
0 O2 L/ e6 w! N9 a7 }+ tprint {t(b),beta} /title="Beta weights for the full equation:"
$ z2 z/ f ^: M4 \# e6 T /rlabels="idv" "mod" "Xn" /clabels="raw b" "std.beta" .
1 O/ m# m' _' n+ k1 b) lprint a /title="The intercept is:" .
: }2 d( B9 c g& k
# H4 f, J* @3 g" X; l7 d; i+ D# x: h7 a
* simple slopes info .
5 u. Z9 G m% S" |5 p% f; ncompute modlo = mn(1,2) - (sd(1,2) * multiMOD) .
# \2 V3 W6 j) g9 `/ X/ m2 Ycompute modmd = mn(1,2).4 x4 ]* W( H. A
compute modhi = mn(1,2) + (sd(1,2) * multiMOD) .
: [% z' ]7 `) w, Scompute slopes={(b(1,1)+(b(1,3)*modlo)) ;
4 y! R, R7 x# M# v5 ^ (b(1,1)+(b(1,3)*modmd)) ; (b(1,1)+(b(1,3)*modhi)) }./ J, I2 L7 Z% }% W( ~; J( p
compute aslopes={ (b(1,2)*modlo+a) ; (b(1,2)*modmd+a) ; (b(1,2)*modhi+a) }.& V# x7 p6 }4 a* V
compute mse = (nc(1,1)/(nc(1,1)-3))*(sd(1,4)**2)*(1-r2all).
: m: N" A! z8 x/ L1 zcompute Sb=mse*inv((mdiag(sd(1,1:3))*cr(1:3,1:3)*mdiag(sd(1,1:3)))*(nc(1,1)-1)).2 N4 i5 s" [2 f
compute SEslopes={ (sqrt ( {1,0,modlo} * Sb * t({1,0,modlo}) )) ;
& o: y: ], H3 g0 ]( C2 p (sqrt ( {1,0,modmd} * Sb * t({1,0,modmd}) )) ;
' o6 K$ K6 A1 Y% y1 c9 F5 ^ t+ |7 s (sqrt ( {1,0,modhi} * Sb * t({1,0,modhi}) )) }.7 w5 X# Q) Y/ \+ Y7 Y i
compute tslopes = slopes &/ SEslopes .+ D# k6 r0 \7 Y, e5 j) Y
compute df = { (nc(1,1)-3-1) ; (nc(1,1)-3-1) ; (nc(1,1)-3-1) }.! J- e5 w2 l4 Y! p, u
compute zslopes = slopes &* (sd(1,1)/sd(1,4)).0 }6 p0 w/ e) ~
compute zSE = SEslopes &* (sd(1,1)/sd(1,4)) .
$ u- ~ S" `% w9 w* Q! H- Acompute dfs = nc(1,1)-3-1 .
5 \' X+ g: }: k+ R) zcompute pslopes = (1 - tcdf(abs(tslopes),dfs)) * 2.
" E2 b5 B, B" q" g6 f& |; f$ f- w( s9 C3 ]& A/ m
* df & t values -- from Darlington p 516 & Howell 87 p 586 -- p = 05 two-tailed .
5 N5 Q% `: g F3 g/ c5 p) I# o6 c0 wcompute dft={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,22,24,26,28,
) z, _- [6 ]1 Z9 V$ E 30,32,34,36,38,40,43,46,49,52,56,60,65,70,75,80,85,90,95,100,110,120,130,- y9 y5 g9 Z) V: x" z, X; {! U
150,175,200,250,300,400,500,600,700,800,900,1000,1000000000;
$ v( l. @* r& B+ a7 M 12.706,4.303,3.182,2.776,2.571,2.447,2.365,2.306,2.262,2.228,2.201,2.179,
/ _" D4 B6 R- f$ s8 i 2.160,2.145,2.131,2.120,2.110,2.101,2.093,2.086,2.074,2.064,2.056,2.048,( k- V! U, t: Q/ f
2.042,2.037,2.032,2.028,2.024,2.021,2.017,2.013,2.010,2.007,2.003,2.000,: L4 P6 G$ a5 G* J
1.997,1.994,1.992,1.990,1.988,1.987,1.985,1.984,1.982,1.980,1.978,1.976,6 {1 M4 S9 Q. U3 l0 }/ J
1.974,1.972,1.969,1.968,1.966,1.965,1.964,1.963,1.963,1.963,1.962,1.962 }.
( Y2 t+ p/ z" T( s8 C) acompute tabledT = 0.
, X/ N" K; i! x; R7 a) `2 n' Y" eloop #a = 1 to 59 .) g2 U; Y. D6 O- p* U
do if (dfs ge dft(1,#a) and dfs < dft(1,#a+1) ).
; k1 [4 L! n3 Rcompute tabledT = dft(2,#a) .
( I. T% E1 c# P. Y/ ~0 M3 Kend if.2 x* X3 U9 `$ \& _
end loop if (tabledT > 0).
5 X! }3 @4 I( u7 Acompute confidLo = (zslopes - (tabledT &* zSE)) .
& L- E9 g) v" s# \' e @, @$ Rcompute confidHi = (zslopes + (tabledT &* zSE)) .
& S3 d9 {( M. O5 k( ~. L1 q) I
* Y$ t _ @# ^8 ^" K$ Eprint { aslopes , slopes , tslopes , df , pslopes} * |1 C4 y9 f, Y2 m& v0 f, V
/title="Simple Slope Coefficients for the DV on the IDV at 3"6 a. Q) Q/ d4 d- g' }1 h
+ " levels of the Moderator:"
! w' ], G# n& z x0 c; A# T/ g /rlabels="Mod=low" "Mod=med" "Mod=high"( T1 p8 f: X: O7 `' K$ b
/clabels="a" "raw b" "t-test" "df" "Sig. T".$ c4 d* k8 X* y9 p4 }# W+ F
print { zslopes , zSE , confidLO, confidHI }
, T+ J1 T) U3 U( W% e2 z2 y /title="Standardized Simple Slopes & 95% Confidence Intervals: "
_4 E6 Z' L! o9 k /rlabels="Mod=low" "Mod=med" "Mod=high"
& I. ~' ]: w: k$ J /clabels="std. beta" "SE" "95% Low" "95% Hi".2 Z6 ~' B& T, C' E F
print ((b(1,1)/b(1,3))*-1)/title="The simple slope for the DV on the IDV"3 L0 f- j. s! `; L4 E/ q) h5 t
+ " is zero (flat) at Moderator =".( f, a6 p& _$ {1 ~& G4 e
print ((b(1,2)/b(1,3))*-1)/title="The simple regression lines at "( u9 e! H6 b9 o( o$ K( N8 e
+ "Mod=high and Mod=low intersect at IDV =".
* v7 B" }/ i0 z9 g0 p* j: Z. p9 Q
) d6 y' `. y0 R" [) B
* data for plot.' j1 i2 q7 `! _
compute idvlo = mn(1,1) - (sd(1,1) * multiIDV).
# f! q1 ?* R1 I. R& f- b" Ccompute idvhi = mn(1,1) + (sd(1,1) * multiIDV) .
8 [/ _) M+ p& h+ g" D! A, M" }compute idv = { idvlo; idvhi; idvlo; idvhi; idvlo; idvhi } .) `! B. E5 P. y' V2 N
do if (dichotom = 1).
& }9 D- E: i' Q3 e9 f1 [1 F4 q* Mcompute idv = { dichotLO;dichotHi; dichotLO;dichotHi; dichotLO;dichotHi }.
+ M/ S4 X! Y; ?& _: Q; d9 m' M0 V- _end if.6 G8 S$ w* o8 ]
compute moder = { modlo;modlo;modmd;modmd;modhi;modhi }.% n5 k1 x& a# g2 n* A, c
compute dv = (b(1,1)&*idv)+(b(1,2)&*moder)+(b(1,3)&*idv&*moder)+a.
; q% C2 N2 H8 K; ?' E) icompute data = { idv , moder , dv }.' f _/ c4 s5 `1 {( G
# x7 ]$ B9 _1 D k2 g( K+ rprint data /title="Data for simple slope plots:" /clabels="IV" "Moderator" "DV" .
& q( o% B( h ?+ z& ]; l* e/ A: g/ H7 a, q* ?/ a
save data /outfile=* / var=zb1 zb2 b3.) N3 {! [$ u, L8 X$ H
- a/ L2 W. C: w# u# e
end matrix.
$ v% |7 M) G1 }8 {- L d8 D2 J0 C B1 ^# c
plot vsize=15 / hsize=50 / format=contour(3) / plot=b3 with zb1 by zb2.
+ {; h5 k; h/ U0 [( J; Egraph / line = mean (b3) by b1 by b2.$ R* E7 i. T4 F- Y; K G
|
|