Hi Federico. AFAIK, there is no way in SPSS that is nearly as easy as -margins- and -marginsplot- in Stata. However, using NOMREG with a bunch of TEST sub-commands, I can duplicate the contrasts you get from -margins-, but with one caveat. Bear in mind that when you use -margins- after -logit-, the default is to display predicted probabilities. If you want log-odds, you need to add the option predict(xb). I.e., try this:
margins, dydx(r) at(m=(30(5)70)) vsquish predict(xb)
Now the "slopes" that you see are on the log-odds scale, and look like this:
--------------------------------------
| Delta-method
| dy/dx std. err.
-------------+------------------------
r |
_at |
1 | .2405485 .0965139
2 | .2071807 .0807686
3 | .173813 .0653655
4 | .1404453 .0506178
5 | .1070776 .0373113
6 | .0737099 .0276142
7 | .0403421 .02595
8 | .0069744 .0335367
9 | -.0263933 .046005
--------------------------------------
I can reproduce those contrasts in SPSS using the NOMREG command to estimate the model with a a TEST sub-command, as follows. I used NOMREG because LOGISTIC REGRESSION and GENLIN, other commands you could use to estimate the model, do not have a TEST sub-command. But when you compare the table of coefficients to the table from Stata, you'll see that it estimates the same model.
NOMREG y (BASE=LAST ORDER=DESCENDING) WITH r m
/MODEL r m r*m
/INTERCEPT=INCLUDE
/PRINT=PARAMETER SUMMARY LRT CPS STEP MFI
/TEST "Intercept"
ALL 1 0 0 0
/TEST "B for simple effect of r"
ALL 0 1 0 0
/TEST "B for simple effect of m"
ALL 0 0 1 0
/TEST "B for r*m"
ALL 0 0 0 1
/TEST "r-slopes for m=30(5)70"
ALL 0 1 0 30;
ALL 0 1 0 35;
ALL 0 1 0 40;
ALL 0 1 0 45;
ALL 0 1 0 50;
ALL 0 1 0 55;
ALL 0 1 0 60;
ALL 0 1 0 65;
ALL 0 1 0 70
.
I included the 4 TEST sub-commands to demonstrate that I could reproduce the coefficients and SEs shown in the table of coefficients. The final TEST sub-command duplicates the 9 contrasts from Stata shown above. Here are is the relevant SPSS output:
Est SE Wald df Sig. Exp(B) Lower Upper
C1 .241 .097 6.212 1 .013 1.272 1.053 1.537
C2 .207 .081 6.580 1 .010 1.230 1.050 1.441
C3 .174 .065 7.071 1 .008 1.190 1.047 1.352
C4 .140 .051 7.699 1 .006 1.151 1.042 1.271
C5 .107 .037 8.236 1 .004 1.113 1.035 1.197
C6 .074 .028 7.125 1 .008 1.076 1.020 1.136
C7 .040 .026 2.417 1 .120 1.041 .990 1.095
C8 .007 .034 .043 1 .835 1.007 .943 1.075
C9 -.026 .046 .329 1 .566 .974 .890 1.066
To make those results accessible for graphing, you could use OMS to write the relevant tables to a new dataset, etc. But as you can already see, that is a fairly cumbersome process compared to using -margins- and -marginsplot- in Stata. Others may be able to suggest less cumbersome approaches, but I will be surprised if any of them are as straightforward as -margins- and -marginsplot- in Stata.
HTH.