BookmarkSubscribeRSS Feed
StrugglingStats
Calcite | Level 5

Hello, 

 

I'm trying to output the MCLines (Duncan) portion of my glm, however it keeps giving me a warning.

Data looks like this:

CompoundsConcentrationMatrixDaysRecoveryPurpose
Compound1100M1Day10.800 
    0.830 
    0.870 
   Day2 1.200 
    0.920 
    1.210 
  M2Day11.310 
    0.970 
    1.000 
   Day2 0.970 
    1.040 
    1.020 
  M3Day10.960 
    0.960 
    1.010 
   Day2 1.090 
    0.880 
    1.050 
  M4Day10.980 
    1.050 
    1.040 
   Day2 1.000 
    0.990 
    1.020 
 500M1Day10.874CCAlpha
    0.940CCAlpha
    1.030CCAlpha
   Day2 1.016CCAlpha
    1.194CCAlpha
    0.980CCAlpha
  M2Day11.316CCAlpha
    1.086CCAlpha
    1.230CCAlpha
   Day2 1.016CCAlpha
    0.916CCAlpha
    1.296CCAlpha
  M3Day11.010CCAlpha
    0.850CCAlpha
    1.086CCAlpha
   Day2 1.062CCAlpha
    0.938CCAlpha
    0.944CCAlpha
  M4Day11.034CCAlpha
    1.016CCAlpha
    1.014CCAlpha
   Day2 1.060CCAlpha
    1.002CCAlpha
    0.852CCAlpha
 1000M1Day10.996 
    0.921 
    1.035 
   Day2 1.217 
    0.942 
    1.302 
  M2Day11.149 
    1.098 
    1.106 
   Day2 1.030 
    0.955 
    1.004 
  M3Day10.993 
    0.923 
    0.912 
   Day2 0.929 
    0.929 
    0.957 
  M4Day11.056 
    1.001 
    1.073 
   Day2 0.994 
    1.055 
    0.906 

 

My Code:

PROC IMPORT OUT= SASUSER.IMPW_0001 
            DATAFILE= "P:\working\data.xlsx" 
            DBMS=EXCELCS REPLACE;
     SHEET="'Data$'";
     SCANTEXT=YES;
     USEDATE=YES;
     SCANTIME=YES;
RUN;


ods html body="&type proc varcomp with type I.html" path="desktop\SASOUTPUT" style=minimal;
option pagesize=90 linesize=90 formdlim='_';

ods trace on;



data sastx;
retain conc;
retain matr;
retain day;
retain compnd titletemp Purptemp file2open; 


set SASUSER.IMPW_0001 /*(firstobs=2)*/;
 if lengthn(compounds) gt 0 then compnd= compounds; else compounds= compnd;
 if lengthn(Title) gt 0 then titletemp= Title;
 if concentration gt 0 then  conc= concentration; else concentration=conc;
 if lengthn(matrix) gt 0 then   matr= matrix; else matrix= matr;
 if lengthn(days) gt 0 then day= days; else days= day;
 if Recovery gt 0 then nobs+ 1;
 if Recovery < 0 then Recovery = ' ';
if lengthn(Filename) gt 0 then file2open= Filename;
 Keep concentration matrix days compounds Recovery nobs file2open Purpose Title; 
run;
proc sql noprint;
   select file2open
      into :procfile
      from Work.sastx;
%let procfile=P:\working\data.xlsx; 
data CCAlphaCalc;
set sastx;
  if Purpose = "CCAlpha" then output;
  Keep concentration compounds Recovery Purpose Title;
run;
PROC IMPORT OUT= WORK.LODData
            DATAFILE= "P:\working\data.xlsx" 
            DBMS=EXCELCS REPLACE;
     SHEET="'LOD Data$'";
     SCANTEXT=YES;
     USEDATE=YES;
     SCANTIME=YES;
RUN;


data CalcLOD;
retain compnd; 
set WORK.LODData /*(firstobs=2)*/;
 if lengthn(compounds) gt 0 then compnd= compounds; else compounds= compnd;
 Keep compounds UnspikedConc SpikedConc ; 

run;
proc sort data=CCAlphaCalc;
        by compounds;
proc sort data=CalcLOD;
        by compounds;

proc sort data=sastx;
        by nobs;

proc sql noprint;
   select Title
      into :type
      from Work.sastx;
%let type=&type; 
Proc Means data=CalcLOD N Mean STD MIN Max;
		var UnspikedConc SpikedConc;
		by compounds;
		TITLE " Simple Descriptive Statistics of LOD Data for &type";
		ods output Summary = LODCompounds;
run;
Proc Means data=CCAlphaCalc N Mean STD MIN Max;
		var Recovery concentration;
		by compounds;
		TITLE " Simple Descriptive Statistics of CCAlpha Data for &type";
		ods output Summary = CCAlphaCompounds;
run;
proc print;
where nobs lt 21;

title "Analysis of &type by proc glm and varcomp with method=type I";
title2 " &type ";
proc sort data=sastx;
        by compounds;
	
proc glm data=sastx;
        by compounds;
        class concentration matrix days;
        model Recovery = concentration matrix(concentration) days(matrix concentration)/ss3;
        test h=concentration e=matrix(concentration);
        test h=matrix(concentration) e=days(matrix concentration);
        lsmeans concentration matrix(concentration) days(matrix concentration)/stderr;
		random concentration matrix(concentration) days(matrix concentration)/test;
		means concentration matrix(concentration) days(matrix concentration)/duncan;
ods output LSMeans = LSMeanCompounds AltErrTests

 = AltErrTestsCompounds OverallANOVA
= OverallANOVACompounds Means = MeansCompounds MCLines
 = DuncanCompounds;
Data RSDCompounds;
 
	Set MeansCompounds;
	PercentRSDcompound = 100 * SD_Recovery /Mean_Recovery;
	run; 
proc sort data=sastx;
        by compounds concentration;
		ods select all;
		ods show;
Data CalcValues;
	Set sastx;
	CalcValue = concentration * Recovery;
	Conc2 = concentration**2;
	W1 = 1/concentration;
	w2 = 1/Conc2;
	run;

The Output:

NOTE: Analytical products:

      SAS/STAT 15.1
      SAS/ETS 15.1
      SAS/IML 15.1
      SAS/QC 15.1

NOTE: Additional host information:

 X64_10PRO WIN 10.0.19041  Workstation

NOTE: SAS initialization used:
      real time           1.15 seconds
      cpu time            1.10 seconds

1    PROC IMPORT OUT= SASUSER.IMPW_0001
2                DATAFILE= "P:\working\data.xlsx"
3                DBMS=EXCELCS REPLACE;
4         SHEET="'Data$'";
5         SCANTEXT=YES;
6         USEDATE=YES;
7         SCANTIME=YES;
8    RUN;

NOTE: SASUSER.IMPW_0001 data set was successfully created.
NOTE: The data set SASUSER.IMPW_0001 has 14999 observations and 18 variables.
NOTE: PROCEDURE IMPORT used (Total process time):
      real time           2.78 seconds
      cpu time            0.14 seconds


9
10
11   ods html body="&type proc varcomp with type I.html" path="desktop\SASOUTPUT" style=minimal;
WARNING: Apparent symbolic reference TYPE not resolved.
NOTE: Writing HTML Body file: &type proc varcomp with type I.html
ERROR: Physical file does not exist, P:\working\desktop\SASOUTPUT\&type proc varcomp with type I.html.
ERROR: No body file. HTML output will not be created.
12   option pagesize=90 linesize=90 formdlim='_';
13
14   ods trace on;
15
16
17
18   data sastx;
19   retain conc;
20   retain matr;
21   retain day;
22   retain compnd titletemp Purptemp file2open;
23
24
25   set SASUSER.IMPW_0001 /*(firstobs=2)*/;
26    if lengthn(compounds) gt 0 then compnd= compounds; else compounds= compnd;
27    if lengthn(Title) gt 0 then titletemp= Title;
28    if concentration gt 0 then  conc= concentration; else concentration=conc;
29    if lengthn(matrix) gt 0 then   matr= matrix; else matrix= matr;
30    if lengthn(days) gt 0 then day= days; else days= day;
31    if Recovery gt 0 then nobs+ 1;
32    if Recovery < 0 then Recovery = ' ';
33   if lengthn(Filename) gt 0 then file2open= Filename;
34    Keep concentration matrix days compounds Recovery nobs file2open Purpose Title;
35   run;

NOTE: Character values have been converted to numeric values at the places given by:
      (Line):(Column).
      32:34
NOTE: Variable Purptemp is uninitialized.
NOTE: There were 14999 observations read from the data set SASUSER.IMPW_0001.
NOTE: The data set WORK.SASTX has 14999 observations and 9 variables.
NOTE: DATA statement used (Total process time):
      real time           0.03 seconds
      cpu time            0.03 seconds


36   proc sql noprint;
37      select file2open
38         into :procfile
39         from Work.sastx;
40   %let procfile=P:\working\data.xlsx;
NOTE: PROCEDURE SQL used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds


41   data CCAlphaCalc;
42   set sastx;
43     if Purpose = "CCAlpha" then output;
44     Keep concentration compounds Recovery Purpose Title;
45   run;

NOTE: There were 14999 observations read from the data set WORK.SASTX.
NOTE: The data set WORK.CCALPHACALC has 24 observations and 5 variables.
NOTE: DATA statement used (Total process time):
      real time           0.01 seconds
      cpu time            0.01 seconds


46   PROC IMPORT OUT= WORK.LODData
47               DATAFILE= "P:\working\data.xlsx"
48               DBMS=EXCELCS REPLACE;
49        SHEET="'LOD Data$'";
50        SCANTEXT=YES;
51        USEDATE=YES;
52        SCANTIME=YES;
53   RUN;

NOTE: WORK.LODDATA data set was successfully created.
NOTE: The data set WORK.LODDATA has 19999 observations and 8 variables.
NOTE: PROCEDURE IMPORT used (Total process time):
      real time           0.77 seconds
      cpu time            0.14 seconds


54
55
56   data CalcLOD;
57   retain compnd;
58   set WORK.LODData /*(firstobs=2)*/;
59    if lengthn(compounds) gt 0 then compnd= compounds; else compounds= compnd;
60    Keep compounds UnspikedConc SpikedConc ;
61
62   run;

NOTE: There were 19999 observations read from the data set WORK.LODDATA.
NOTE: The data set WORK.CALCLOD has 19999 observations and 3 variables.
NOTE: DATA statement used (Total process time):
      real time           0.01 seconds
      cpu time            0.01 seconds


63   proc sort data=CCAlphaCalc;
64           by compounds;

NOTE: There were 24 observations read from the data set WORK.CCALPHACALC.
NOTE: The data set WORK.CCALPHACALC has 24 observations and 5 variables.
NOTE: PROCEDURE SORT used (Total process time):
      real time           0.02 seconds
      cpu time            0.03 seconds


65   proc sort data=CalcLOD;
66           by compounds;
67

NOTE: There were 19999 observations read from the data set WORK.CALCLOD.
NOTE: The data set WORK.CALCLOD has 19999 observations and 3 variables.
NOTE: PROCEDURE SORT used (Total process time):
      real time           0.01 seconds
      cpu time            0.01 seconds


68   proc sort data=sastx;
69           by nobs;
70

NOTE: There were 14999 observations read from the data set WORK.SASTX.
NOTE: The data set WORK.SASTX has 14999 observations and 9 variables.
NOTE: PROCEDURE SORT used (Total process time):
      real time           0.01 seconds
      cpu time            0.01 seconds


71   proc sql noprint;
72      select Title
73         into :type
74         from Work.sastx;
75   %let type=&type;
NOTE: PROCEDURE SQL used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds


76   Proc Means data=CalcLOD N Mean STD MIN Max;
77           var UnspikedConc SpikedConc;
78           by compounds;
79           TITLE " Simple Descriptive Statistics of LOD Data for &type";
80           ods output Summary = LODCompounds;
NOTE: Writing HTML Body file: sashtml1.htm
81   run;


Output Added:
-------------
Name:       Summary
Label:      Summary statistics
Template:   base.summary
Path:       Means.ByGroup1.Summary
-------------
NOTE: The above message was for the following BY group:
      Compounds=
NOTE: The data set WORK.LODCOMPOUNDS has 1 observations and 15 variables.
NOTE: There were 19999 observations read from the data set WORK.CALCLOD.
NOTE: PROCEDURE MEANS used (Total process time):
      real time           0.30 seconds
      cpu time            0.23 seconds


82   Proc Means data=CCAlphaCalc N Mean STD MIN Max;
83           var Recovery concentration;
84           by compounds;
85           TITLE " Simple Descriptive Statistics of CCAlpha Data for &type";
86           ods output Summary = CCAlphaCompounds;
87   run;


Output Added:
-------------
Name:       Summary
Label:      Summary statistics
Template:   base.summary
Path:       Means.ByGroup1.Summary
-------------
NOTE: The above message was for the following BY group:
      Compounds=Compound1
NOTE: The data set WORK.CCALPHACOMPOUNDS has 1 observations and 15 variables.
NOTE: There were 24 observations read from the data set WORK.CCALPHACALC.
NOTE: PROCEDURE MEANS used (Total process time):
      real time           0.03 seconds
      cpu time            0.01 seconds


88   proc print;
89   where nobs lt 21;
ERROR: Variable nobs is not on file WORK.CCALPHACOMPOUNDS.
90
91   title "Analysis of &type by proc glm and varcomp with method=type I";
92   title2 " &type ";

NOTE: The SAS System stopped processing this step because of errors.
NOTE: PROCEDURE PRINT used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds



93   proc sort data=sastx;
94           by compounds;
95

NOTE: There were 14999 observations read from the data set WORK.SASTX.
NOTE: The data set WORK.SASTX has 14999 observations and 9 variables.
NOTE: PROCEDURE SORT used (Total process time):
      real time           0.01 seconds
      cpu time            0.01 seconds


96   proc glm data=sastx;
97           by compounds;
98           class concentration matrix days;
99           model Recovery = concentration matrix(concentration) days(matrix
99 ! concentration)/ss3;
100          test h=concentration e=matrix(concentration);
101          test h=matrix(concentration) e=days(matrix concentration);
102          lsmeans concentration matrix(concentration) days(matrix concentration)/stderr
102! ;
103          random concentration matrix(concentration) days(matrix concentration)/test;
104          means concentration matrix(concentration) days(matrix concentration)/duncan;
105  ods output LSMeans = LSMeanCompounds AltErrTests
106
107   = AltErrTestsCompounds OverallANOVA
108  = OverallANOVACompounds Means = MeansCompounds MCLines
109   = DuncanCompounds;


Output Added:
-------------
Name:       ClassLevels
Label:      Class Levels
Template:   STAT.GLM.ClassLevels
Path:       GLM.ByGroup1.Data.ClassLevels
-------------

Output Added:
-------------
Name:       NObs
Label:      Number of Observations
Template:   STAT.GLM.NObsNotitle
Path:       GLM.ByGroup1.Data.NObs
-------------

Output Added:
-------------
Name:       OverallANOVA
Label:      Overall ANOVA
Template:   stat.GLM.OverallANOVA
Path:       GLM.ByGroup1.ANOVA.Recovery.OverallANOVA
-------------

Output Added:
-------------
Name:       FitStatistics
Label:      Fit Statistics
Template:   stat.GLM.FitStatistics
Path:       GLM.ByGroup1.ANOVA.Recovery.FitStatistics
-------------

Output Added:
-------------
Name:       ModelANOVA
Label:      Type III Model ANOVA
Template:   stat.GLM.Tests
Path:       GLM.ByGroup1.ANOVA.Recovery.ModelANOVA
-------------

Output Added:
-------------
Name:       AltErrTests
Label:      Type III Tests with Error = Type III Matrix(Concentratio) SS
Template:   stat.GLM.Tests
Path:       GLM.ByGroup1.ANOVA.Recovery.AltErrTests
-------------

Output Added:
-------------
Name:       AltErrTests
Label:      Type III Tests with Error = Type III Days(Concent*Matrix) SS
Template:   stat.GLM.Tests
Path:       GLM.ByGroup1.ANOVA.Recovery.AltErrTests
-------------

Output Added:
-------------
Name:       LSMeans
Label:      LSMeans
Template:   stat.GLM.LSMeans
Path:       GLM.ByGroup1.LSMEANS.Concentration.Recovery.LSMeans
-------------

Output Added:
-------------
Name:       MeanPlot
Label:      Concentration Mean Plot
Template:   Stat.GLM.Graphics.MeanPlot
Path:       GLM.ByGroup1.LSMEANS.Concentration.Recovery.MeanPlot
-------------

Output Added:
-------------
Name:       LSMeans
Label:      LSMeans
Template:   stat.GLM.LSMeans
Path:       GLM.ByGroup1.LSMEANS.Matrix_Concentratio_.Recovery.LSMeans
-------------

Output Added:
-------------
Name:       MeanPlot
Label:      Matrix(Concentratio) Mean Plot
Template:   Stat.GLM.Graphics.MeanPlot
Path:       GLM.ByGroup1.LSMEANS.Matrix_Concentratio_.Recovery.MeanPlot
-------------

Output Added:
-------------
Name:       LSMeans
Label:      LSMeans
Template:   stat.GLM.LSMeans
Path:       GLM.ByGroup1.LSMEANS.Days_Concent_Matrix_.Recovery.LSMeans
-------------

Output Added:
-------------
Name:       MeanPlot
Label:      Days(Concent*Matrix) Mean Plot
Template:   Stat.GLM.Graphics.MeanPlot
Path:       GLM.ByGroup1.LSMEANS.Days_Concent_Matrix_.Recovery.MeanPlot
-------------

Output Added:
-------------
Name:       ExpectedMeanSquares
Label:      Model Expected Mean Squares
Template:   Stat.GLM.ExpectedMeanSquares
Path:       GLM.ByGroup1.Random.ExpectedMeanSquares
-------------

Output Added:
-------------
Name:       RandomModelANOVA
Label:      Type III Model ANOVA
Template:   STAT.GLM.RTests
Path:       GLM.ByGroup1.Random.Recovery.RandomModelANOVA
-------------

Output Added:
-------------
Name:       RandomModelANOVA
Label:      Type III Model ANOVA
Template:   STAT.GLM.RTests
Path:       GLM.ByGroup1.Random.Recovery.RandomModelANOVA
-------------

Output Added:
-------------
Name:       RandomModelANOVA
Label:      Type III Model ANOVA
Template:   STAT.GLM.RTests
Path:       GLM.ByGroup1.Random.Recovery.RandomModelANOVA
-------------
NOTE: Means from the MEANS statement are not adjusted for other terms in the model.  For
      adjusted means, use the LSMEANS statement.

Output Added:
-------------
Name:       BoxPlot
Label:      Distribution of Recovery by Concentration
Template:   Stat.GLM.Graphics.MeansBoxPlot
Path:       GLM.ByGroup1.Means.Concentration.Recovery.BoxPlot
-------------

Output Added:
-------------
Name:       MCLinesInfo
Label:      Information
Template:   stat.GLM.SquashFact
Path:       GLM.ByGroup1.Means.Concentration.Recovery.MCLines.Duncan.MCLinesInfo
-------------

Output Added:
-------------
Name:       MCLinesRange
Label:      Critical Ranges
Template:   stat.GLM.Range
Path:       GLM.ByGroup1.Means.Concentration.Recovery.MCLines.Duncan.MCLinesRange
-------------

Output Added:
-------------
Name:       LinesPlot
Template:   Stat.GLM.Graphics.MeanLinesPlot
Path:       GLM.ByGroup1.Means.Concentration.Recovery.MCLines.Duncan.LinesPlot
-------------

Output Added:
-------------
Name:       BoxPlot
Label:      Distribution of Recovery by Matrix(Concentratio)
Template:   Stat.GLM.Graphics.MeansBoxPlot
Path:       GLM.ByGroup1.Means.Matrix_Concentratio_.Recovery.BoxPlot
-------------

Output Added:
-------------
Name:       Means
Label:      Means
Template:   stat.GLM.Means
Path:       GLM.ByGroup1.Means.Matrix_Concentratio_.Means
-------------

Output Added:
-------------
Name:       BoxPlot
Label:      Distribution of Recovery by Days(Concent*Matrix)
Template:   Stat.GLM.Graphics.MeansBoxPlot
Path:       GLM.ByGroup1.Means.Days_Concent_Matrix_.Recovery.BoxPlot
-------------

Output Added:
-------------
Name:       Means
Label:      Means
Template:   stat.GLM.Means
Path:       GLM.ByGroup1.Means.Days_Concent_Matrix_.Means
-------------
NOTE: The above message was for the following BY group:
      Compounds=Compound1
NOTE: The data set WORK.MEANSCOMPOUNDS has 36 observations and 8 variables.
NOTE: The data set WORK.OVERALLANOVACOMPOUNDS has 3 observations and 8 variables.
NOTE: The data set WORK.ALTERRTESTSCOMPOUNDS has 2 observations and 11 variables.
NOTE: The data set WORK.LSMEANCOMPOUNDS has 39 observations and 9 variables.
WARNING: Output 'MCLines' was not created.  Make sure that the output object name, label,
         or path is spelled correctly.  Also, verify that the appropriate procedure
         options are used to produce the requested output object.  For example, verify
         that the NOPRINT option is not used.
NOTE: PROCEDURE GLM used (Total process time):
      real time           1.76 seconds
      cpu time            0.93 seconds


110  Data RSDCompounds;
111
112      Set MeansCompounds;
113      PercentRSDcompound = 100 * SD_Recovery /Mean_Recovery;
114      run;

NOTE: There were 36 observations read from the data set WORK.MEANSCOMPOUNDS.
NOTE: The data set WORK.RSDCOMPOUNDS has 36 observations and 9 variables.
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds


115  proc sort data=sastx;
116          by compounds concentration;
117          ods select all;
118          ods show;
Current OVERALL select list is: ALL

NOTE: There were 14999 observations read from the data set WORK.SASTX.
NOTE: The data set WORK.SASTX has 14999 observations and 9 variables.
NOTE: PROCEDURE SORT used (Total process time):
      real time           0.01 seconds
      cpu time            0.01 seconds


119  Data CalcValues;
120      Set sastx;
121      CalcValue = concentration * Recovery;
122      Conc2 = concentration**2;
123      W1 = 1/concentration;
124      w2 = 1/Conc2;
125      run;

NOTE: Missing values were generated as a result of performing an operation on missing
      values.
      Each place is given by: (Number of times) at (Line):(Column).
      14927 at 121:31
NOTE: There were 14999 observations read from the data set WORK.SASTX.
NOTE: The data set WORK.CALCVALUES has 14999 observations and 13 variables.
NOTE: DATA statement used (Total process time):
      real time           0.01 seconds
      cpu time            0.01 seco

The warning I have concern over: 

WARNING: Output 'MCLines' was not created. Make sure that the output object name, label, or path is spelled correctly. Also, verify that the appropriate procedure options are used to produce the requested output object. For example, verify that the NOPRINT option is not used.

 
2 REPLIES 2
ballardw
Super User

You may have to share the entire LOG. It might be that your particular data has something that even though you request the appropriate options (Duncan on the Means statement) something isn't quite kosher for your requested analysis.

 

Please show the entire log for running this analysis. Copy  the text including the code and all messages, notes, warnings. On the forum open a text box using the </> icon above the message and paste all the text.

 

 

StrugglingStats
Calcite | Level 5
Sorry, first time posting. I have included the entire log and code, as well as sample data set.

SAS Innovate 2025: Register Now

Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
Register now!

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 2 replies
  • 531 views
  • 0 likes
  • 2 in conversation