- 最后登录
- 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! z' B" ~2 `
/ V* r2 }/ M( S8 b*****************., P& ?# D) S0 [ X9 J
desc b1 b2/save.
$ j5 S8 c( ^8 Q' H1 [! A7 kcompute idv = zb1., [/ P3 k7 p* \6 \
compute mod = zb2.
! j' s3 P# [5 D) xcompute x = idv * mod.
j+ q/ M- R4 [; ]( ]. n4 tcompute dv = b3.; U7 N$ B- U Y, j3 r& Q6 M
0 V( m; q; J3 v2 u7 sregression
+ s7 o* a& i2 D6 @8 r /matrix out ('filename') ) B+ v6 v4 n/ e$ }3 _. q9 _: R
/var= idv mod x dv
$ Q4 |9 C' I7 z9 K /statistics=defaults zpp bcov
1 T+ {( P1 F. M2 E6 r- j' O /dependent=dv* Q) O1 `# T+ o h5 r0 T: H) N* I1 F
/enter idv mod
6 V& L" m/ z* m$ F$ a. ? /test (x) .% d# \6 T" F4 ]6 l6 k1 t
$ p& J9 I E* r! g' B1 A! n8 Lset mxloops=65. [+ o8 r) s; Y
matrix.
+ n5 h2 I' j2 A+ G
' i" r3 l+ o2 S' Tcompute multiMOD = 1.0 .5 ?( ^+ V/ J" F8 I% {% o. V/ ?
compute multiIDV = 1.0 .
4 Z& G$ H' }& H: V* U% K! Pcompute dichotom = 0 .7 }/ T. q$ ?+ d9 W6 G* U" c
compute dichotLo = 1 .4 X) e* Z9 @1 j8 q6 }$ V3 j
compute dichotHi = 2 .$ m! }% n+ w0 n0 Z; m
mget /file='filename'.
4 O: f& F; |2 d6 v
; m1 z! w! L: T/ C. q* Overall regression coeffs.
0 `! t) e. h- \) g* n4 \compute beta = inv(cr(1:3,1:3)) * cr(1:3,4) .0 Z* n' g! P0 {) J' @2 Y
compute b = (sd(1,4) &/ sd(1,1:3)) &* t(beta) .8 p* |8 ?5 b/ w# s6 D. R
compute a = mn(1,4) - ( rsum ( mn(1,1:3) &* b ) ) .7 [; Q& y6 }. `: S
compute r2all = t(beta) * cr(1:3,4) .
% Z( @( K$ w3 h" p6 jcompute r2main = t(inv(cr(1:2,1:2))*cr(1:2,4))*cr(1:2,4).1 }* l3 _: ]: H8 [( Z
compute r2chXn = r2all - r2main.
9 N7 i+ C8 m) `8 \( Rcompute fsquare = (r2all - r2main) / (1 - r2all) .; J. W. P3 X% ^
compute F = (r2all-r2main) / ((1-r2all)/(nc(1,1)-3-1))." v& H- O1 y; g2 U
compute dferror = nc(1,1) - 3 - 1.2 s; u1 {2 o! N9 U' d9 N& l" x
compute pF = 1 - fcdf(F,1,dferror) .0 B: t! G: Y; G9 \" h0 m7 E. q
6 f& J: P( v& B \- a3 B" u& qprint {r2chXn,F,{1},dferror,fsquare,pF} /title="Coefficients for the Interaction"7 s7 Z+ Y+ W. L3 h. d5 {
/clabels="Rsq. ch." "F" "df num." "df denom." "f-squared" "Sig. F".8 K }4 Y1 t* e4 }* Y
print {t(b),beta} /title="Beta weights for the full equation:"
8 Z& F# `8 }) H3 d3 d# { /rlabels="idv" "mod" "Xn" /clabels="raw b" "std.beta" ." ]6 a% j: d7 v) X" F
print a /title="The intercept is:" .
7 L! n( g, ~' Z( _! H, T Q
& I+ k( O4 v' @) r, a/ T* `
: E4 Q0 L, B% t% [8 w$ @" c* simple slopes info ." I% D( w. S3 ]' b E6 ]- l
compute modlo = mn(1,2) - (sd(1,2) * multiMOD) .; `+ ~! l3 j) _+ C
compute modmd = mn(1,2).. T2 z6 [; F/ ?! S; ^9 ]/ D
compute modhi = mn(1,2) + (sd(1,2) * multiMOD) .- m" ?, D+ i9 I# |* u
compute slopes={(b(1,1)+(b(1,3)*modlo)) ;. [6 Y3 W& \5 a: ?
(b(1,1)+(b(1,3)*modmd)) ; (b(1,1)+(b(1,3)*modhi)) }.
, B, ^$ o; e, T0 N/ R8 pcompute aslopes={ (b(1,2)*modlo+a) ; (b(1,2)*modmd+a) ; (b(1,2)*modhi+a) }.2 ~3 k/ @1 ~2 d( s5 F. W
compute mse = (nc(1,1)/(nc(1,1)-3))*(sd(1,4)**2)*(1-r2all).
0 \; ?6 ~5 I4 \" @7 s5 ?9 _compute Sb=mse*inv((mdiag(sd(1,1:3))*cr(1:3,1:3)*mdiag(sd(1,1:3)))*(nc(1,1)-1)).
/ B% O: {. n8 N. Q; i6 z5 ccompute SEslopes={ (sqrt ( {1,0,modlo} * Sb * t({1,0,modlo}) )) ;
! d0 l& H# v$ h& t# j% w (sqrt ( {1,0,modmd} * Sb * t({1,0,modmd}) )) ;7 C% W+ e) J' O3 g+ ^* B0 g: j
(sqrt ( {1,0,modhi} * Sb * t({1,0,modhi}) )) }.
$ r+ Y: e) V8 y. z7 Z3 ycompute tslopes = slopes &/ SEslopes .
' u9 \, ^" ~) L7 hcompute df = { (nc(1,1)-3-1) ; (nc(1,1)-3-1) ; (nc(1,1)-3-1) }." E4 P; e3 B, S% Z6 Z/ q$ |) x
compute zslopes = slopes &* (sd(1,1)/sd(1,4)).
. d8 k5 M0 W( a# F2 x0 S6 k1 ~1 c" rcompute zSE = SEslopes &* (sd(1,1)/sd(1,4)) .- Y1 C; t2 W: e) v% i7 y
compute dfs = nc(1,1)-3-1 .2 z- @5 W/ o5 E+ r. |& Q
compute pslopes = (1 - tcdf(abs(tslopes),dfs)) * 2.# k; c6 u8 X7 |
/ t/ y! Q( ?$ q: X! @1 e* df & t values -- from Darlington p 516 & Howell 87 p 586 -- p = 05 two-tailed .* c; g$ ^3 u: f
compute 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,
1 u$ H/ w. h b7 a% m 30,32,34,36,38,40,43,46,49,52,56,60,65,70,75,80,85,90,95,100,110,120,130,
- Z, ^7 X/ W5 { 150,175,200,250,300,400,500,600,700,800,900,1000,1000000000;
% U4 U3 ~7 y. N2 u 12.706,4.303,3.182,2.776,2.571,2.447,2.365,2.306,2.262,2.228,2.201,2.179,' P- {+ e% f- }, R" q+ r
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) g8 N2 m* B 2.042,2.037,2.032,2.028,2.024,2.021,2.017,2.013,2.010,2.007,2.003,2.000,' X$ _( x6 `1 D4 [9 W
1.997,1.994,1.992,1.990,1.988,1.987,1.985,1.984,1.982,1.980,1.978,1.976,# z9 W* Y# d* x7 I3 y
1.974,1.972,1.969,1.968,1.966,1.965,1.964,1.963,1.963,1.963,1.962,1.962 }.
1 w1 j1 [3 r8 z0 o! ~1 xcompute tabledT = 0.
1 i$ ]* ]' v4 oloop #a = 1 to 59 .
+ m9 s- o0 Z8 R$ |/ q" y9 e$ odo if (dfs ge dft(1,#a) and dfs < dft(1,#a+1) ).; x& P2 u! R' i0 c9 a& R2 ]
compute tabledT = dft(2,#a) .
" H4 ?2 O0 h0 l- y1 J' u3 v" F% Send if.) j- [6 v4 ]+ b. o, W
end loop if (tabledT > 0).
: L& [7 F& @) q j% B6 scompute confidLo = (zslopes - (tabledT &* zSE)) .
2 y9 h" [$ d% T7 N) n3 _# D9 ]compute confidHi = (zslopes + (tabledT &* zSE)) ." F/ @; a0 V, |
; n ^2 t* f! L' Q; @- pprint { aslopes , slopes , tslopes , df , pslopes} % n' O$ z+ j' p( D
/title="Simple Slope Coefficients for the DV on the IDV at 3") M* J4 q) D' E/ {6 p* |
+ " levels of the Moderator:"
3 P2 v8 ?. ?: c0 L! C /rlabels="Mod=low" "Mod=med" "Mod=high"
$ W& f9 A2 e2 T3 z/ \7 }& w9 J /clabels="a" "raw b" "t-test" "df" "Sig. T".
4 C" m0 \( [; X. E( L4 k Yprint { zslopes , zSE , confidLO, confidHI } ! j; J% t- V4 K$ y
/title="Standardized Simple Slopes & 95% Confidence Intervals: "
# W* d4 u" [3 e; M$ k+ I4 m/ t. u /rlabels="Mod=low" "Mod=med" "Mod=high" 7 H- g& H0 ] @! p
/clabels="std. beta" "SE" "95% Low" "95% Hi".% ^9 L' a( d% s
print ((b(1,1)/b(1,3))*-1)/title="The simple slope for the DV on the IDV"
& i5 i! |3 Y, b+ " is zero (flat) at Moderator =".
# `0 d. T6 Y' H) m4 |% @- E# ~# l+ |print ((b(1,2)/b(1,3))*-1)/title="The simple regression lines at "
1 m0 |8 I8 f5 z8 x+ r: b e+ "Mod=high and Mod=low intersect at IDV =".& j$ u0 C5 Z4 ]1 z; Q
/ K4 [* q; i5 `+ ^; ?
" g- J1 C8 [( _& F+ }* data for plot.& k3 N/ k- V( e. O4 f: ?
compute idvlo = mn(1,1) - (sd(1,1) * multiIDV).# Q! N* f w, Z% @ @5 k
compute idvhi = mn(1,1) + (sd(1,1) * multiIDV) .3 O% {8 I$ K/ m! E5 X
compute idv = { idvlo; idvhi; idvlo; idvhi; idvlo; idvhi } .% O) `+ B( `% d* E+ b9 E
do if (dichotom = 1).: Z# c3 |1 ]! v& p8 _) F
compute idv = { dichotLO;dichotHi; dichotLO;dichotHi; dichotLO;dichotHi }.0 v D3 c% X8 D# z$ p% o& i. |
end if." @1 |; d- w8 f# X
compute moder = { modlo;modlo;modmd;modmd;modhi;modhi }.
$ h: d0 L' H0 T- t% k$ E* U; pcompute dv = (b(1,1)&*idv)+(b(1,2)&*moder)+(b(1,3)&*idv&*moder)+a.
" u/ p, F% G6 ^$ Wcompute data = { idv , moder , dv }.
) k/ d: e0 c5 {& ]
, _ n" ~: `0 a; Y/ w4 ^print data /title="Data for simple slope plots:" /clabels="IV" "Moderator" "DV" .
0 d+ a. E4 [6 a x. s' j$ v4 Y8 v [3 H1 i8 ]3 n* C5 N* F
save data /outfile=* / var=zb1 zb2 b3.- N. S& S2 d I- a& d& h
! z- F9 i+ O- u# L4 f8 Dend matrix.8 g0 c2 V0 _# }/ \5 y1 i
, K+ V; B' m5 u8 z- o: G
plot vsize=15 / hsize=50 / format=contour(3) / plot=b3 with zb1 by zb2.
8 I8 i- x1 r1 _9 W# y! q, agraph / line = mean (b3) by b1 by b2.
, y. r+ \5 ?! Z2 O/ S! J |
|