Hi everyone,
I'm interested in plotting the association between a continous Level 1 variable (PCS) and continous outcome (Diary_OCS). I've found the syntax below online to generate the figure/scatterplot and it works well. However, I would like to make sure that the syntax is adequate considering the nested structure of my dataset. More specifically, I'd like to make sure that the slope represents the "fixed" effect (i.e., the average slope of all within-person slopes). Thanks in advance for your support. Oliver GGRAPH /GRAPHDATASET NAME="GraphDataset" VARIABLES= Lev1_PCS Lev1_Diary_OCS id /GRAPHSPEC SOURCE=INLINE. BEGIN GPL SOURCE: s=userSource(id( "GraphDataset" ) ) DATA: Lev1_PCS=col( source(s), name( "Lev1_PCS" ) ) DATA: Lev1_Diary_OCS=col( source(s), name( "Lev1_Diary_OCS" ) ) DATA: id = col(source(s), name("ID"), unit.category()) ELEMENT: point( position(Lev1_PCS * Lev1_Diary_OCS)) ELEMENT: line(position(smooth.linear(Lev1_PCS * Lev1_Diary_OCS)), shape(id)) END GPL. <http://spssx-discussion.1045642.n5.nabble.com/file/t340718/Fig1.jpg> -- Sent from: http://spssx-discussion.1045642.n5.nabble.com/ ===================== To manage your subscription to SPSSX-L, send a message to [hidden email] (not to SPSSX-L), with no body text except the command. To leave the list, send the command SIGNOFF SPSSX-L For a list of commands to manage subscriptions, send the command INFO REFCARD |
One simple way to show that would be to group de-mean the data (for both the
X and Y variables), and then plot those de-meaned values. So something like: ******************************************. AGGREGATE OUTFILE=* MODE=ADDVARIABLES /BREAK GroupIndicator /MeanPCS = MEAN(PCS) /MeanDiary = MEAN(Diary_OCS). COMPUTE DiffPCS = PCS - MeanPCS. COMPUTE DiffDiary = Diary_OCS - MeanDiary. ******************************************. And then in the scatterplot replace PCS with DiffPCS and Diary_OCS with DiffDiary. Then the OLS line in the scatterplot will show the regression slope when controlling for the fixed effects. See also these blog posts of mine for other ideas about plotting multi-level data: - https://andrewpwheeler.wordpress.com/2014/07/13/smoothed-regression-plots-for-multi-level-data/ - https://andrewpwheeler.wordpress.com/2014/03/04/visualizing-multi-level-data-using-ellipses/ ----- Andy W [hidden email] http://andrewpwheeler.wordpress.com/ -- Sent from: http://spssx-discussion.1045642.n5.nabble.com/ ===================== To manage your subscription to SPSSX-L, send a message to [hidden email] (not to SPSSX-L), with no body text except the command. To leave the list, send the command SIGNOFF SPSSX-L For a list of commands to manage subscriptions, send the command INFO REFCARD |
Hi Andy,
Thanks for your reply. It is very much appreciated. Perhaps I was not clear in my previous post, but my goal is to create a figure/regression slope that does represent the fixed effect (i.e., the average slope of all within-person slopes). In that case, the syntax from my previous post would make sense, right ? Thanks again, Oliver -- Sent from: http://spssx-discussion.1045642.n5.nabble.com/ ===================== To manage your subscription to SPSSX-L, send a message to [hidden email] (not to SPSSX-L), with no body text except the command. To leave the list, send the command SIGNOFF SPSSX-L For a list of commands to manage subscriptions, send the command INFO REFCARD |
Administrator
|
Oliver, it might help if you showed the syntax for the model that generates
the fitted values. It sounds like it might be a random intercept model, possibly via MIXED. HTH. Oliver wrote > Hi Andy, > > Thanks for your reply. It is very much appreciated. > > Perhaps I was not clear in my previous post, but my goal is to create a > figure/regression slope that does represent the fixed effect (i.e., the > average slope of all within-person slopes). In that case, the syntax from > my > previous post would make sense, right ? > > Thanks again, > Oliver > > > > -- > Sent from: http://spssx-discussion.1045642.n5.nabble.com/ > > ===================== > To manage your subscription to SPSSX-L, send a message to > LISTSERV@.UGA > (not to SPSSX-L), with no body text except the > command. To leave the list, send the command > SIGNOFF SPSSX-L > For a list of commands to manage subscriptions, send the command > INFO REFCARD ----- -- Bruce Weaver [hidden email] http://sites.google.com/a/lakeheadu.ca/bweaver/ "When all else fails, RTFM." NOTE: My Hotmail account is not monitored regularly. To send me an e-mail, please use the address shown above. -- Sent from: http://spssx-discussion.1045642.n5.nabble.com/ ===================== To manage your subscription to SPSSX-L, send a message to [hidden email] (not to SPSSX-L), with no body text except the command. To leave the list, send the command SIGNOFF SPSSX-L For a list of commands to manage subscriptions, send the command INFO REFCARD
--
Bruce Weaver bweaver@lakeheadu.ca http://sites.google.com/a/lakeheadu.ca/bweaver/ "When all else fails, RTFM." PLEASE NOTE THE FOLLOWING: 1. My Hotmail account is not monitored regularly. To send me an e-mail, please use the address shown above. 2. The SPSSX Discussion forum on Nabble is no longer linked to the SPSSX-L listserv administered by UGA (https://listserv.uga.edu/). |
In reply to this post by Oliver
People use the term fixed effects differently (not your fault), so let me try
to be clear what I am suggesting. So the graph you show in your original code would be the simple linear regression of: eq.1: Diary = Intercept + B1*PCS + e So the slope in your original graph is B1. Pretend you only have two groups, what I believe you want to plot is B1f below: eq.2: Diary = B1f*PCS + B2*(Group = 1) + B3*(Group = 2) + e B1 (what you show in your original plot) will not necessarily equal B1f. B1f is the least squares dummy value way to control for the "fixed effects" (what I call "fixed effects" are B2 and B3 in the above equation, not B1f). Another way to accomplish this same estimate though is: eq.3: Diary_j - Mean[Diary Group j] = B1f*(PCS_j - Mean[PCS Group j]) + e Equation 2 and 3 will produce the same estimate of B1f, and so using the group mean centered approach is an easy way to show the slope of the effect controlling for between group means. You can't simply superimpose the slope of B1f on the original variables PCS and Diary, because it won't have any necessary relationship to the original point cloud. Example below: **************************************************************************************************. *Simulate multi-level data. SET SEED 10. INPUT PROGRAM. LOOP #G = 1 TO 5. LOOP #i = 1 TO 20. COMPUTE Group = #G. COMPUTE PCS = 10 + RV.NORMAL(#G*5,1). END CASE. END LOOP. END LOOP. END FILE. END INPUT PROGRAM. DATASET NAME Sim. COMPUTE #Within = PCS - (10 + Group*5). *Between is positive, within is negative. COMPUTE Diary = 5 + 2*Group - 1*#Within + RV.NORMAL(0,1). FORMATS Diary PCS (F2.0). EXECUTE. ******************************************************. *Overall slope and scatterplot. REGRESSION /DEPENDENT Diary /METHOD=ENTER PCS. GGRAPH /GRAPHDATASET NAME="graphdataset" VARIABLES=PCS Diary /GRAPHSPEC SOURCE=INLINE. BEGIN GPL SOURCE: s=userSource(id("graphdataset")) DATA: PCS=col(source(s), name("PCS")) DATA: Diary=col(source(s), name("Diary")) GUIDE: axis(dim(1), label("PCS")) GUIDE: axis(dim(2), label("Diary")) ELEMENT: line(position(smooth.linear(PCS*Diary))) ELEMENT: point(position(PCS*Diary)) END GPL. ******************************************************. ******************************************************. *Slope when controlling for the fixed effects. *Controlling for group fixed effects. *Least square dummy value approach. VECTOR G(5,F1.0). COMPUTE G(Group) = 1. RECODE G1 TO G5 (SYSMIS = 0). EXECUTE. REGRESSION /NOORIGIN /DEPENDENT Diary /METHOD=ENTER PCS G1 TO G5. *Using the demeaned variables. AGGREGATE OUTFILE=* MODE=ADDVARIABLES /BREAK Group /MeanPCS = MEAN(PCS) /MeanDiary = MEAN(Diary). COMPUTE PCS_Diff = PCS - MeanPCS. COMPUTE Diary_Diff = Diary - MeanDiary. FORMATS Diary_Diff PCS_Diff (F2.0). *Exact same slope as with the dummy variables, standard error is not correct though. REGRESSION /DEPENDENT Diary_Diff /METHOD=ENTER PCS_Diff. *Now making a scatterplot of the group de-meaned variables to show this. GGRAPH /GRAPHDATASET NAME="graphdataset" VARIABLES=PCS_Diff Diary_Diff /GRAPHSPEC SOURCE=INLINE. BEGIN GPL SOURCE: s=userSource(id("graphdataset")) DATA: PCS=col(source(s), name("PCS_Diff")) DATA: Diary=col(source(s), name("Diary_Diff")) GUIDE: axis(dim(1), label("PCS Group Mean Differenced")) GUIDE: axis(dim(2), label("Diary Group Mean Differenced")) ELEMENT: line(position(smooth.linear(PCS*Diary))) ELEMENT: point(position(PCS*Diary)) END GPL. ******************************************************. **************************************************************************************************. So here is the first graph, the way I constructed the data you can clearly tell the difference between groups. <http://spssx-discussion.1045642.n5.nabble.com/file/t329824/Multilev.png> And here is the second graph of the group de-meaned variables, which more clearly shows the negative linear relationship after taking into account the group intercepts. <http://spssx-discussion.1045642.n5.nabble.com/file/t329824/Multilev1.png> You can do other plots to show both the group intercepts and slopes at the same time, which I linked to in my prior answer. ----- Andy W [hidden email] http://andrewpwheeler.wordpress.com/ -- Sent from: http://spssx-discussion.1045642.n5.nabble.com/ ===================== To manage your subscription to SPSSX-L, send a message to [hidden email] (not to SPSSX-L), with no body text except the command. To leave the list, send the command SIGNOFF SPSSX-L For a list of commands to manage subscriptions, send the command INFO REFCARD |
In reply to this post by Bruce Weaver
Bruce & Andy: Thanks for your replies.
Bruce: Below you'll find the syntax used to analyse the association between the two Level 1 variables. Essentially, what I'm trying to do is to come up with a Figure/slope that depicts this association. MIXED Lev1_Diary_OCS WITH Lev1_PCS /PRINT=SOLUTION TESTCOV /METHOD=ML /FIXED= Lev1_PCS /RANDOM INTERCEPT | SUBJECT(ID) COVTYPE (ID) /REPEATED=Wave | SUBJECT(ID) COVTYPE(AR1) . -- Sent from: http://spssx-discussion.1045642.n5.nabble.com/ ===================== To manage your subscription to SPSSX-L, send a message to [hidden email] (not to SPSSX-L), with no body text except the command. To leave the list, send the command SIGNOFF SPSSX-L For a list of commands to manage subscriptions, send the command INFO REFCARD |
Last time I tried to get graphs - basically predictions from MIXED - I didn't succeed at first. But the same analyses set up in GENLINMIXED where models can be saved as xml files and subsequently used in the Scoring Wizard (under Utilities) did the trick. Could that work for you as well?
-----Original Message----- From: SPSSX(r) Discussion [mailto:[hidden email]] On Behalf Of Oliver Sent: Tuesday, May 15, 2018 5:54 AM To: [hidden email] Subject: Re: Figures with nested data & multilevel modeling Bruce & Andy: Thanks for your replies. Bruce: Below you'll find the syntax used to analyse the association between the two Level 1 variables. Essentially, what I'm trying to do is to come up with a Figure/slope that depicts this association. MIXED Lev1_Diary_OCS WITH Lev1_PCS /PRINT=SOLUTION TESTCOV /METHOD=ML /FIXED= Lev1_PCS /RANDOM INTERCEPT | SUBJECT(ID) COVTYPE (ID) /REPEATED=Wave | SUBJECT(ID) COVTYPE(AR1) . -- Sent from: http://spssx-discussion.1045642.n5.nabble.com/ ===================== To manage your subscription to SPSSX-L, send a message to [hidden email] (not to SPSSX-L), with no body text except the command. To leave the list, send the command SIGNOFF SPSSX-L For a list of commands to manage subscriptions, send the command INFO REFCARD ===================== To manage your subscription to SPSSX-L, send a message to [hidden email] (not to SPSSX-L), with no body text except the command. To leave the list, send the command SIGNOFF SPSSX-L For a list of commands to manage subscriptions, send the command INFO REFCARD
Robert Lundqvist
|
In reply to this post by Oliver
With random intercepts there is no simple analog to the group de-meaned
charted I suggested. So I might just say get the predicted values and superimpose them on the chart, making either different colors for each group or putting the groups into a set of small multiples. **************************************************************************************************. *Simulate multi-level data. SET SEED 10. INPUT PROGRAM. LOOP #G = 1 TO 5. LOOP #i = 1 TO 20. COMPUTE Group = #G. COMPUTE PCS = 10 + RV.NORMAL(#G*5,1). COMPUTE Wave = #i. END CASE. END LOOP. END LOOP. END FILE. END INPUT PROGRAM. DATASET NAME Sim. COMPUTE #Within = PCS - (10 + Group*5). *Between is positive, within is negative. COMPUTE Diary = 5 + 2*Group - 1*#Within + RV.NORMAL(0,1). FORMATS Diary PCS (F2.0). RENAME VARIABLES (Group = ID)(Diary = Lev1_Diary_OCS)(PCS = Lev1_PCS). EXECUTE. MIXED Lev1_Diary_OCS WITH Lev1_PCS /PRINT=SOLUTION TESTCOV /METHOD=ML /FIXED= Lev1_PCS /RANDOM INTERCEPT | SUBJECT(ID) COVTYPE (ID) /REPEATED=Wave | SUBJECT(ID) COVTYPE(AR1) /SAVE PRED(PredVal). *If a small number of IDs, can superimpose onto the same plot. FORMATS ID PredVal (F2.0). GGRAPH /GRAPHDATASET NAME="graphdataset" VARIABLES=Lev1_PCS Lev1_Diary_OCS ID PredVal /GRAPHSPEC SOURCE=INLINE /FRAME INNER=YES. BEGIN GPL SOURCE: s=userSource(id("graphdataset")) DATA: Lev1_PCS=col(source(s), name("Lev1_PCS")) DATA: Lev1_Diary_OCS=col(source(s), name("Lev1_Diary_OCS")) DATA: ID=col(source(s), name("ID"), unit.category()) DATA: PredVal=col(source(s), name("PredVal")) GUIDE: axis(dim(1), label("Lev1_PCS")) GUIDE: axis(dim(2), label("Lev1_Diary_OCS")) GUIDE: legend(aesthetic(aesthetic.color.interior), label("ID")) ELEMENT: line(position(Lev1_PCS*PredVal), color(ID), size(size."1")) ELEMENT: point(position(Lev1_PCS*Lev1_Diary_OCS), color.interior(ID)) END GPL. *For a larger number would suggest small multiples. GGRAPH /GRAPHDATASET NAME="graphdataset" VARIABLES=Lev1_PCS Lev1_Diary_OCS ID PredVal /GRAPHSPEC SOURCE=INLINE /FRAME INNER=YES. BEGIN GPL PAGE: begin(scale(1000px,700px)) SOURCE: s=userSource(id("graphdataset")) DATA: Lev1_PCS=col(source(s), name("Lev1_PCS")) DATA: Lev1_Diary_OCS=col(source(s), name("Lev1_Diary_OCS")) DATA: ID=col(source(s), name("ID"), unit.category()) DATA: PredVal=col(source(s), name("PredVal")) COORD: rect(dim(1,2), wrap()) GUIDE: axis(dim(1), label("Lev1_PCS")) GUIDE: axis(dim(2), label("Lev1_Diary_OCS")) GUIDE: axis(dim(3), opposite()) GUIDE: legend(aesthetic(aesthetic.color.interior), label("ID")) ELEMENT: line(position(Lev1_PCS*PredVal*ID), size(size."1")) ELEMENT: point(position(Lev1_PCS*Lev1_Diary_OCS*ID), size(size."3")) PAGE: end() END GPL. **************************************************************************************************. ----- Andy W [hidden email] http://andrewpwheeler.wordpress.com/ -- Sent from: http://spssx-discussion.1045642.n5.nabble.com/ ===================== To manage your subscription to SPSSX-L, send a message to [hidden email] (not to SPSSX-L), with no body text except the command. To leave the list, send the command SIGNOFF SPSSX-L For a list of commands to manage subscriptions, send the command INFO REFCARD |
Hi Andy,
Thanks again for trying to come up with solution. It seems like generating a Figure displaying a Level 1 association in SPSS is not straightforward. I've tried to come up with the same Figure as the ones you generated, but I was not able. This is probably because of my limitations in terms of knowledge when it gets to SPSS syntax. This is also possibly due to the fact that your data were "simulated" and not based on my actual data. Attached you'll find the dataset with the Level 1 independent variable (Lev1_PCS), the outcome (Lev1_OCS), and the clustering (ID). Do you think it would be possible to generate the Figure ? If it works, I could then try to learn (and re-use) the syntax that is needed to generate the Figure. Thanks again, Andy. Oliver Dataset;_PCS_&_OCS.sav <http://spssx-discussion.1045642.n5.nabble.com/file/t340718/Dataset%3B_PCS_%26_OCS.sav> -- Sent from: http://spssx-discussion.1045642.n5.nabble.com/ ===================== To manage your subscription to SPSSX-L, send a message to [hidden email] (not to SPSSX-L), with no body text except the command. To leave the list, send the command SIGNOFF SPSSX-L For a list of commands to manage subscriptions, send the command INFO REFCARD |
You changed your variable names from the initial post. If you do:
RENAME VARIABLES (Lev1_OCS = Lev1_Diary_OCS)(Wave_Day = Wave). My code will work. Here are a few examples using your dataset (note you need to change the FILE HANDLE location to your local machine). For this dataset constraining the slopes to be equal does not seem too crazy, but allowing the slopes to vary as well seems reasonable. **************************************************************************************************. DATASET CLOSE ALL. OUTPUT CLOSE ALL. FILE HANDLE data /NAME = "C:\Users\axw161530\Desktop\SPSS". GET FILE = "data\Dataset;_PCS_&_OCS.sav". DATASET NAME Nab. RENAME VARIABLES (Lev1_OCS = Lev1_Diary_OCS)(Wave_Day = Wave). EXECUTE. MIXED Lev1_Diary_OCS WITH Lev1_PCS /PRINT=SOLUTION TESTCOV /METHOD=ML /FIXED= Lev1_PCS /RANDOM INTERCEPT | SUBJECT(ID) COVTYPE (ID) /REPEATED=Wave | SUBJECT(ID) COVTYPE(AR1) /SAVE PRED(PredVal). *If a small number of IDs, can superimpose onto the same plot. FORMATS ID PredVal (F2.0). *For a larger number would suggest small multiples. GGRAPH /GRAPHDATASET NAME="graphdataset" VARIABLES=Lev1_PCS Lev1_Diary_OCS ID PredVal /GRAPHSPEC SOURCE=INLINE /FRAME INNER=YES. BEGIN GPL PAGE: begin(scale(1000px,1000px)) SOURCE: s=userSource(id("graphdataset")) DATA: Lev1_PCS=col(source(s), name("Lev1_PCS")) DATA: Lev1_Diary_OCS=col(source(s), name("Lev1_Diary_OCS")) DATA: ID=col(source(s), name("ID"), unit.category()) DATA: PredVal=col(source(s), name("PredVal")) COORD: rect(dim(1,2), wrap()) GUIDE: axis(dim(1), label("Lev1_PCS")) GUIDE: axis(dim(2), label("Lev1_Diary_OCS")) GUIDE: axis(dim(3), opposite()) GUIDE: legend(aesthetic(aesthetic.color.interior), label("ID")) ELEMENT: line(position(Lev1_PCS*PredVal*ID), size(size."1")) ELEMENT: point(position(Lev1_PCS*Lev1_Diary_OCS*ID), size(size."3")) PAGE: end() END GPL. *Now lets allows both random intercept and random slope!. MIXED Lev1_Diary_OCS WITH Lev1_PCS /PRINT=SOLUTION TESTCOV /METHOD=ML /FIXED= Lev1_PCS /RANDOM INTERCEPT Lev1_PCS | SUBJECT(ID) COVTYPE (ID) /REPEATED=Wave | SUBJECT(ID) COVTYPE(AR1) /SAVE PRED(PredRandSlope). FORMATS PredRandSlope (F3.0). GGRAPH /GRAPHDATASET NAME="graphdataset" VARIABLES=Lev1_PCS Lev1_Diary_OCS ID PredRandSlope /GRAPHSPEC SOURCE=INLINE /FRAME INNER=YES. BEGIN GPL PAGE: begin(scale(1000px,1000px)) SOURCE: s=userSource(id("graphdataset")) DATA: Lev1_PCS=col(source(s), name("Lev1_PCS")) DATA: Lev1_Diary_OCS=col(source(s), name("Lev1_Diary_OCS")) DATA: ID=col(source(s), name("ID"), unit.category()) DATA: PredRandSlope=col(source(s), name("PredRandSlope")) COORD: rect(dim(1,2), wrap()) GUIDE: axis(dim(1), label("Lev1_PCS")) GUIDE: axis(dim(2), label("Lev1_Diary_OCS")) GUIDE: axis(dim(3), opposite()) GUIDE: legend(aesthetic(aesthetic.color.interior), label("ID")) ELEMENT: line(position(Lev1_PCS*PredRandSlope*ID), size(size."1")) ELEMENT: point(position(Lev1_PCS*Lev1_Diary_OCS*ID), size(size."3")) PAGE: end() END GPL. **************************************************************************************************. Here is a graph of the random intercepts plus slopes (the second graph). <http://spssx-discussion.1045642.n5.nabble.com/file/t329824/RandomSlopes.png> ----- Andy W [hidden email] http://andrewpwheeler.wordpress.com/ -- Sent from: http://spssx-discussion.1045642.n5.nabble.com/ ===================== To manage your subscription to SPSSX-L, send a message to [hidden email] (not to SPSSX-L), with no body text except the command. To leave the list, send the command SIGNOFF SPSSX-L For a list of commands to manage subscriptions, send the command INFO REFCARD |
In reply to this post by Oliver
Hi everyone,
I'd like to plot the association between two continous Level 1 variables. Attached is the dataset with the Level 1 independent variable (Lev1_PCS), the outcome (Lev1_OCS), and the clustering (ID). It would be very much appreciated if someone could provide me with some syntax in order to generate a figure depicting the association based on the attached dataset. Thanks in advance ! Oliver Dataset.sav <http://spssx-discussion.1045642.n5.nabble.com/file/t340718/Dataset.sav> -- Sent from: http://spssx-discussion.1045642.n5.nabble.com/ ===================== To manage your subscription to SPSSX-L, send a message to [hidden email] (not to SPSSX-L), with no body text except the command. To leave the list, send the command SIGNOFF SPSSX-L For a list of commands to manage subscriptions, send the command INFO REFCARD |
In reply to this post by Andy W
Hi Andy,
For some reason I had not seen your syntax based on my actual data/variable names. Thank you so much for coming up with this syntax. I'm very grateful for your support. As you can see attached, I did get an error message from SPSS when I tried to generate the plot/figure. SPSS says "unrecognizable setting FRAME". Do you know what that means and/or where I made a mistake with the syntax ? I've attached the dataset, syntax, & output with the error message. Thanks again, Andy. O. Dataset;_PCS_&_OCS.sav <http://spssx-discussion.1045642.n5.nabble.com/file/t340718/Dataset%3B_PCS_%26_OCS.sav> Syntax.sps <http://spssx-discussion.1045642.n5.nabble.com/file/t340718/Syntax.sps> Output.spv <http://spssx-discussion.1045642.n5.nabble.com/file/t340718/Output.spv> -- Sent from: http://spssx-discussion.1045642.n5.nabble.com/ ===================== To manage your subscription to SPSSX-L, send a message to [hidden email] (not to SPSSX-L), with no body text except the command. To leave the list, send the command SIGNOFF SPSSX-L For a list of commands to manage subscriptions, send the command INFO REFCARD |
Andy,
I attached the wrong dataset. My apologies for the confusion. The proper dataset is attached. Dataset;_PCS_&_OCS_1.sav <http://spssx-discussion.1045642.n5.nabble.com/file/t340718/Dataset%3B_PCS_%26_OCS_1.sav> Best, O. -- Sent from: http://spssx-discussion.1045642.n5.nabble.com/ ===================== To manage your subscription to SPSSX-L, send a message to [hidden email] (not to SPSSX-L), with no body text except the command. To leave the list, send the command SIGNOFF SPSSX-L For a list of commands to manage subscriptions, send the command INFO REFCARD |
In reply to this post by Oliver
Just delete the line
/FRAME INNER=YES. and replace with just . ----- Andy W [hidden email] http://andrewpwheeler.wordpress.com/ -- Sent from: http://spssx-discussion.1045642.n5.nabble.com/ ===================== To manage your subscription to SPSSX-L, send a message to [hidden email] (not to SPSSX-L), with no body text except the command. To leave the list, send the command SIGNOFF SPSSX-L For a list of commands to manage subscriptions, send the command INFO REFCARD |
Hi Andy,
Thanks for getting back to me. Your suggestion works, and I'm able to generate Level 1 plots separately for each ID using the syntax you proposed. Is there a way to generate a single plot for the entire sample ? Ideally, I'd like to plot the "average" within-person slope, similar to what you did when you simulated the data (see attached). Is there a way to do this ? In most papers, we don't have enough room to present separate figures for each ID, so a single one would be ideal. Below is what I mean by a single plot: Untitled.png <http://spssx-discussion.1045642.n5.nabble.com/file/t340718/Untitled.png> Thanks again Andy. O. -- Sent from: http://spssx-discussion.1045642.n5.nabble.com/ ===================== To manage your subscription to SPSSX-L, send a message to [hidden email] (not to SPSSX-L), with no body text except the command. To leave the list, send the command SIGNOFF SPSSX-L For a list of commands to manage subscriptions, send the command INFO REFCARD |
Hi Andy,
Sorry to bother you again with this, but your are so helpful that I cannot resist to follow-up with another question. As you can see attached, your syntax works great to generate figures displaying the Level 1 association of interest. However, this is done separately for each participant in my study. I was wondering whether it would be possible to have a single Figure that represents the average of these slopes ? Please correct me if I'm wrong, but I guess that's what you meant by "group de-meaned variables" in your post from May 14, right ? Using your simulated data, you had generated a nice positive slope. Would it be possible to do this with my actual data ? Thanks again, Andy. O. Dataset.sav <http://spssx-discussion.1045642.n5.nabble.com/file/t340718/Dataset.sav> Syntax.sps <http://spssx-discussion.1045642.n5.nabble.com/file/t340718/Syntax.sps> Figure;_Separately_for_each_ID.jpg <http://spssx-discussion.1045642.n5.nabble.com/file/t340718/Figure%3B_Separately_for_each_ID.jpg> -- Sent from: http://spssx-discussion.1045642.n5.nabble.com/ ===================== To manage your subscription to SPSSX-L, send a message to [hidden email] (not to SPSSX-L), with no body text except the command. To leave the list, send the command SIGNOFF SPSSX-L For a list of commands to manage subscriptions, send the command INFO REFCARD |
You can try something like below. Note this will not work if you include
anymore covariates into the model. **************************************************. MIXED Lev1_Diary_OCS WITH Lev1_PCS /PRINT=SOLUTION TESTCOV /METHOD=ML /FIXED= Lev1_PCS /RANDOM INTERCEPT Lev1_PCS | SUBJECT(ID) COVTYPE (ID) /REPEATED=Wave | SUBJECT(ID) COVTYPE(AR1) /SAVE PRED(PredRandSlope) FIXPRED(PredFix). GGRAPH /GRAPHDATASET NAME="graphdataset" VARIABLES=Lev1_PCS Lev1_Diary_OCS ID PredRandSlope /GRAPHSPEC SOURCE=INLINE . BEGIN GPL PAGE: begin(scale(1000px,1000px)) SOURCE: s=userSource(id("graphdataset")) DATA: Lev1_PCS=col(source(s), name("Lev1_PCS")) DATA: Lev1_Diary_OCS=col(source(s), name("Lev1_Diary_OCS")) DATA: ID=col(source(s), name("ID"), unit.category()) DATA: PredRandSlope=col(source(s), name("PredRandSlope")) COORD: rect(dim(1,2), wrap()) GUIDE: axis(dim(1), label("Lev1_PCS")) GUIDE: axis(dim(2), label("Lev1_Diary_OCS")) GUIDE: axis(dim(3), opposite()) GUIDE: legend(aesthetic(aesthetic.color.interior), label("ID")) ELEMENT: line(position(Lev1_PCS*PredRandSlope*ID), size(size."1")) ELEMENT: point(position(Lev1_PCS*Lev1_Diary_OCS*ID), size(size."3")) PAGE: end() END GPL. **************************************************. ----- Andy W [hidden email] http://andrewpwheeler.wordpress.com/ -- Sent from: http://spssx-discussion.1045642.n5.nabble.com/ ===================== To manage your subscription to SPSSX-L, send a message to [hidden email] (not to SPSSX-L), with no body text except the command. To leave the list, send the command SIGNOFF SPSSX-L For a list of commands to manage subscriptions, send the command INFO REFCARD |
Whoops my bad, copy-pasted old graph, not the new one.
**************************************************. MIXED Lev1_Diary_OCS WITH Lev1_PCS /PRINT=SOLUTION TESTCOV /METHOD=ML /FIXED= Lev1_PCS /RANDOM INTERCEPT Lev1_PCS | SUBJECT(ID) COVTYPE (ID) /REPEATED=Wave | SUBJECT(ID) COVTYPE(AR1) /SAVE PRED(PredRandSlope) FIXPRED(PredFix). GGRAPH /GRAPHDATASET NAME="graphdataset" VARIABLES=Lev1_PCS Lev1_Diary_OCS ID PredRandSlope PredFix /GRAPHSPEC SOURCE=INLINE . BEGIN GPL PAGE: begin(scale(800px,600px)) SOURCE: s=userSource(id("graphdataset")) DATA: Lev1_PCS=col(source(s), name("Lev1_PCS")) DATA: Lev1_Diary_OCS=col(source(s), name("Lev1_Diary_OCS")) DATA: ID=col(source(s), name("ID"), unit.category()) DATA: PredRandSlope=col(source(s), name("PredRandSlope")) DATA: PredFix=col(source(s), name("PredFix")) COORD: rect(dim(1,2), wrap()) GUIDE: axis(dim(1), label("Lev1_PCS")) GUIDE: axis(dim(2), label("Lev1_Diary_OCS")) ELEMENT: point(position(Lev1_PCS*Lev1_Diary_OCS), size(size."6")) ELEMENT: line(position(Lev1_PCS*PredFix), size(size."4")) PAGE: end() END GPL. **************************************************. ----- Andy W [hidden email] http://andrewpwheeler.wordpress.com/ -- Sent from: http://spssx-discussion.1045642.n5.nabble.com/ ===================== To manage your subscription to SPSSX-L, send a message to [hidden email] (not to SPSSX-L), with no body text except the command. To leave the list, send the command SIGNOFF SPSSX-L For a list of commands to manage subscriptions, send the command INFO REFCARD |
Hi Andy,
Hope you're doing well. I can't thank you enough for your help in coming up with an SPSS syntax that can be used to generate a Figure for displaying longitudinal (i.e., Level 1) associations. I've seen your webpage online, and I was wondering whether you are offering paid ($) stats consulting services ? If not, would you be interested in being co-author on some papers that require your support ? I'm just asking given the importance of your contribution. Thanks in advance for your letting me know. Best, O. -- Sent from: http://spssx-discussion.1045642.n5.nabble.com/ ===================== To manage your subscription to SPSSX-L, send a message to [hidden email] (not to SPSSX-L), with no body text except the command. To leave the list, send the command SIGNOFF SPSSX-L For a list of commands to manage subscriptions, send the command INFO REFCARD |
This isn't really the appropriate place for this conversation. You can go to
my website and find my email. Often I can just give advice for folks (for free) -- same as a bunch of others here on the list-serve. ----- Andy W [hidden email] http://andrewpwheeler.wordpress.com/ -- Sent from: http://spssx-discussion.1045642.n5.nabble.com/ ===================== To manage your subscription to SPSSX-L, send a message to [hidden email] (not to SPSSX-L), with no body text except the command. To leave the list, send the command SIGNOFF SPSSX-L For a list of commands to manage subscriptions, send the command INFO REFCARD |
Free forum by Nabble | Edit this page |