- 最后登录
- 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的名称就可以了。
6 U: o1 r. Z4 h+ x
; F( B5 \" ]1 Y9 H*****************.) x2 O& {5 i! M2 w
desc b1 b2/save.
T( L) y) C7 O( _2 lcompute idv = zb1.
( S! _2 Y' j+ m" a0 Zcompute mod = zb2.
+ E- T3 K( y) S2 m5 Scompute x = idv * mod.+ K! J7 s% ] z7 B" Y
compute dv = b3.
0 `. N$ m. f$ h! D
- D* P4 @& y! P! A$ ^- h' Z: O6 Sregression
' p+ t6 U! E. i' W1 t /matrix out ('filename')
# `4 J0 Q r9 G$ K: r /var= idv mod x dv
( @% b# K2 k! D /statistics=defaults zpp bcov : Q! u4 i! M2 q" A
/dependent=dv
; ~& `* N3 H" U6 S, [) A /enter idv mod ! e. L2 g6 k L
/test (x) .
7 ` j0 O9 I0 O7 v; @) H8 K- \8 T: H1 ]; `. U- z$ M
set mxloops=65.
- ~1 l5 ]! U+ _+ B3 l# |matrix.
' J" S" ^& @8 M1 U# X1 Y+ {( a5 R. B6 H* t' e8 b3 v. Y% {
compute multiMOD = 1.0 .
" _; Y# x }5 V3 m7 P$ l7 |( Ocompute multiIDV = 1.0 .
' V7 m: y4 K. |) U8 M& G* lcompute dichotom = 0 .
% a6 l4 Q6 \% Icompute dichotLo = 1 .
+ v! J1 s% _0 ^6 H9 ycompute dichotHi = 2 .+ l1 c# C; t) }' _9 D
mget /file='filename'.
" |) \4 V& z7 V# P& A8 T4 F2 G- R7 P
* Overall regression coeffs.
2 t2 a0 e; Y Y0 W- t7 c' `7 Ocompute beta = inv(cr(1:3,1:3)) * cr(1:3,4) .
: T. M1 v$ Y9 o0 o( j" c& g9 f0 \compute b = (sd(1,4) &/ sd(1,1:3)) &* t(beta) .& Y8 T2 E. M0 ~* h
compute a = mn(1,4) - ( rsum ( mn(1,1:3) &* b ) ) .
5 _# R& e. L @9 l4 Y/ rcompute r2all = t(beta) * cr(1:3,4) .. C. R) ]) a: k- }5 I. J
compute r2main = t(inv(cr(1:2,1:2))*cr(1:2,4))*cr(1:2,4).+ J% P- a; y+ H) Y. y7 c! ~0 u
compute r2chXn = r2all - r2main.
3 P9 X) j# Q- Q& Z& a+ j1 f- E% P" Zcompute fsquare = (r2all - r2main) / (1 - r2all) .
7 ]- [/ G) A/ G( r+ \% Y9 @compute F = (r2all-r2main) / ((1-r2all)/(nc(1,1)-3-1)).
. E! r: ~" \1 o( O! ?/ ?. M7 Ccompute dferror = nc(1,1) - 3 - 1.- M# ]2 d/ I" p# l% _
compute pF = 1 - fcdf(F,1,dferror) .. r4 m' }" E0 v8 W$ F# f2 m$ G
4 ]" U( X& J- y6 R% G I' Tprint {r2chXn,F,{1},dferror,fsquare,pF} /title="Coefficients for the Interaction"
; A: I$ A v* B1 ~( P3 P /clabels="Rsq. ch." "F" "df num." "df denom." "f-squared" "Sig. F"., b# U2 a, q4 h ^8 ~7 G
print {t(b),beta} /title="Beta weights for the full equation:"; e' o' _# F/ H; ?* o
/rlabels="idv" "mod" "Xn" /clabels="raw b" "std.beta" .
# o, q, H+ {" e+ D' P8 bprint a /title="The intercept is:" . q- G# E$ G7 U8 C+ V1 S1 |
# g1 ]" n3 D$ x! u: p# N
* g6 q8 p m8 q/ W: K! X, \# Q5 X* simple slopes info .
! H! t0 }. ?# L- ycompute modlo = mn(1,2) - (sd(1,2) * multiMOD) .& V9 l2 H9 T; Q- E* K7 E- B
compute modmd = mn(1,2).) ^& M" O* P9 n* o: W. p% b* C
compute modhi = mn(1,2) + (sd(1,2) * multiMOD) .+ [' V' ]- s3 {3 m
compute slopes={(b(1,1)+(b(1,3)*modlo)) ;
" J6 B- O5 T* l. T& X' X (b(1,1)+(b(1,3)*modmd)) ; (b(1,1)+(b(1,3)*modhi)) }.
( w/ A# ]5 p' b8 gcompute aslopes={ (b(1,2)*modlo+a) ; (b(1,2)*modmd+a) ; (b(1,2)*modhi+a) }.
% K; Y$ ^1 T9 H7 p' I2 s1 ncompute mse = (nc(1,1)/(nc(1,1)-3))*(sd(1,4)**2)*(1-r2all).$ n( a3 v2 d3 k' x3 E% q
compute Sb=mse*inv((mdiag(sd(1,1:3))*cr(1:3,1:3)*mdiag(sd(1,1:3)))*(nc(1,1)-1)).* o. U0 ]8 q1 L% M& M/ h+ o" C" b) `
compute SEslopes={ (sqrt ( {1,0,modlo} * Sb * t({1,0,modlo}) )) ;
; h9 _- L4 [: e, m: n5 d (sqrt ( {1,0,modmd} * Sb * t({1,0,modmd}) )) ;
0 `! ?0 [0 u/ X6 N (sqrt ( {1,0,modhi} * Sb * t({1,0,modhi}) )) }.
# C( _4 l& k* y r6 Z; F" @7 `compute tslopes = slopes &/ SEslopes . G% }% [6 M9 c5 A( ^1 i
compute df = { (nc(1,1)-3-1) ; (nc(1,1)-3-1) ; (nc(1,1)-3-1) }.
4 L* S9 H- F; I- U7 gcompute zslopes = slopes &* (sd(1,1)/sd(1,4)).9 B# a9 i0 ^+ V6 w
compute zSE = SEslopes &* (sd(1,1)/sd(1,4)) .
. [. Z1 _' ]( qcompute dfs = nc(1,1)-3-1 . j% L: R7 X8 k. }! d$ V6 g
compute pslopes = (1 - tcdf(abs(tslopes),dfs)) * 2.7 g7 V6 n# O/ v! V
# F7 c5 l7 s) u" k; n8 t
* df & t values -- from Darlington p 516 & Howell 87 p 586 -- p = 05 two-tailed .
% \+ l% ]. O1 E6 z2 [( O, P. W. M$ ycompute 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,
4 x; U$ r. u! B! M: P2 d 30,32,34,36,38,40,43,46,49,52,56,60,65,70,75,80,85,90,95,100,110,120,130,
! q8 f9 p* Q, a, B) n- H 150,175,200,250,300,400,500,600,700,800,900,1000,1000000000;) N6 h: w: ]8 z0 X. P
12.706,4.303,3.182,2.776,2.571,2.447,2.365,2.306,2.262,2.228,2.201,2.179,* |. i& K! E x/ [) T
2.160,2.145,2.131,2.120,2.110,2.101,2.093,2.086,2.074,2.064,2.056,2.048,6 W, E& w( X; E* ^1 J
2.042,2.037,2.032,2.028,2.024,2.021,2.017,2.013,2.010,2.007,2.003,2.000,
' U. N) `, F" n6 X 1.997,1.994,1.992,1.990,1.988,1.987,1.985,1.984,1.982,1.980,1.978,1.976,' n5 @4 e* B6 x: r( N# M
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 h5 \ X/ s8 x! I M7 t
compute tabledT = 0.
" f8 y& e7 E3 ~; V$ f& B$ gloop #a = 1 to 59 .
7 M9 g. ?# b- q" b& kdo if (dfs ge dft(1,#a) and dfs < dft(1,#a+1) ).
% [4 c! [5 t9 Acompute tabledT = dft(2,#a) .
( U, @% R8 N1 G6 v( i3 ]end if.% h% `" Y) \- N- x3 \, k3 H
end loop if (tabledT > 0).* }* A$ n$ q, O A2 \. w
compute confidLo = (zslopes - (tabledT &* zSE)) .
5 D0 E; e, F- z# R7 y* _8 kcompute confidHi = (zslopes + (tabledT &* zSE)) .! m# G1 Y' G3 ?: P" Y
" O3 Z8 A; [5 G: x% k- dprint { aslopes , slopes , tslopes , df , pslopes} - Y! t9 i/ P. t3 A1 K
/title="Simple Slope Coefficients for the DV on the IDV at 3"$ g+ E% R" `) t7 t2 x. m
+ " levels of the Moderator:"
, m& P" {- D+ G; c/ G8 Y; A }8 @ /rlabels="Mod=low" "Mod=med" "Mod=high"& r6 O o: o8 H) n& t
/clabels="a" "raw b" "t-test" "df" "Sig. T".1 {! t0 d# c2 f9 w/ f
print { zslopes , zSE , confidLO, confidHI }
/ C1 |3 t- K6 J8 n. J9 F: @ q4 e: T1 Y2 z /title="Standardized Simple Slopes & 95% Confidence Intervals: "
, _3 p* F/ F, `; P" A. Z& Z5 L; K) v1 e /rlabels="Mod=low" "Mod=med" "Mod=high"
6 ~2 v4 f }0 G1 q" a /clabels="std. beta" "SE" "95% Low" "95% Hi". L$ A! a' L% A0 u4 W5 s& \
print ((b(1,1)/b(1,3))*-1)/title="The simple slope for the DV on the IDV"% C& b5 w3 Z5 r4 Q
+ " is zero (flat) at Moderator =".# u: [- m# P7 |0 R6 r
print ((b(1,2)/b(1,3))*-1)/title="The simple regression lines at "* M" F; e$ `& \* L" F) j
+ "Mod=high and Mod=low intersect at IDV =".
, T2 M* Y- L2 o$ y: U1 ~, C. q% f+ V' ^
. W, N* L1 `+ b$ L
* data for plot.2 O4 K% ?+ M# a
compute idvlo = mn(1,1) - (sd(1,1) * multiIDV).# L! C9 C4 D" T8 v0 ]0 j0 h; u% u
compute idvhi = mn(1,1) + (sd(1,1) * multiIDV) .
* u- s! F2 ^7 `( @& s1 dcompute idv = { idvlo; idvhi; idvlo; idvhi; idvlo; idvhi } .3 Q! p" l+ A3 R+ K7 m4 f
do if (dichotom = 1).: s0 E: |2 I3 h6 x) y5 F; ^
compute idv = { dichotLO;dichotHi; dichotLO;dichotHi; dichotLO;dichotHi }.
- x0 q3 H% [" F: v6 d* B0 { D/ `end if.
+ l7 J- M, f* {; J+ ^compute moder = { modlo;modlo;modmd;modmd;modhi;modhi }.6 \0 N1 w3 E6 X6 @
compute dv = (b(1,1)&*idv)+(b(1,2)&*moder)+(b(1,3)&*idv&*moder)+a.6 ?6 C5 d* z2 ]( |0 z; e7 z
compute data = { idv , moder , dv }.( Q7 R$ W: n% v+ w+ p. i
) B2 C, f, I0 Z1 v4 Kprint data /title="Data for simple slope plots:" /clabels="IV" "Moderator" "DV" .
& V+ _/ n- r, l+ x6 x
o# r: u0 ~/ }1 Psave data /outfile=* / var=zb1 zb2 b3.- _. u; x" y+ |
: a- F( @( u; t8 d }2 kend matrix.( U! a, q& W1 g
& M2 H& O K: c* F* P @
plot vsize=15 / hsize=50 / format=contour(3) / plot=b3 with zb1 by zb2.
g3 g& p! y7 V igraph / line = mean (b3) by b1 by b2.
! W; q% V* ]- H& M |
|