BookmarkSubscribeRSS Feed
ph6
Obsidian | Level 7 ph6
Obsidian | Level 7

I have a data for the urine test results. Two samples have been taken from each patient in different days and tested by the LAM test and urine dipstick for different biomarkers.
The data looks like this:
```
Subject SampNum LAMresult dipstick_bio1 dipstick_bio2 ...
1 1 1 2 +
1 2 0 1 -
2 1 1 3 .
2 2 1 2 +
```
I would like to find the impact of the dipstick biomarkers on the LAM test positivity using a logistic regression. I am using the following SAS code to carry the logistic model:

```
proc logistic data=data descending;
class dipstick_bio1 dipstick_bio2 .../ param=ref ;
model LAMresult = dipstick_bio1 dipstick_bio2 ;
run;
```
I am thinking to use rather a mixed effects logistic regression model here, which will take account of the non-independence within subjects. It should fit random intercepts for subjects. I am trying to use PROC GLIMMIX. Do you know how can I fit the GlimmiX to my problem?

11 REPLIES 11
seeff
Obsidian | Level 7

Hi, 

 

Here's a straightforward explanation of glimmix for this type of problem: https://support.sas.com/resources/papers/proceedings14/SAS026-2014.pdf

 

You want something like:

 

proc glimmix data=data;
class patient dipstick_bio1 dipstick_bio2;
model LAMresult = dipstick_bio1 dipstick_bio2 /solution;
random intercept / subject = patient ;
run;

 

ph6
Obsidian | Level 7 ph6
Obsidian | Level 7

Thank you so much. I am using the following code:

 

proc glimmix data=all;
class studyID GLUresults BILresults KETresults SGgradingresult BLOresults pHgradingresult
PROresults UROresults NITresults LEUresults albuminr;
model result  = albuminr GLUresults BILresults KETresults SGgradingresult BLOresults pHgradingresult
PROresults UROresults NITresults LEUresults /solution;
random intercept / subject = studyID ;
*lsmeans albuminr GLUresults BILresults KETresults SGgradingresult BLOresults pHgradingresult
PROresults UROresults NITresults LEUresults/ cl ;
run;

I get the following output (see the attached file). My response variable is binary but the covariates have different values, e.g PHgrading:1-7 and so on. How could I also have the confidence intervals? What is the best way to present and interpret these results?

seeff
Obsidian | Level 7

Hey there--I'm not looking at your output (try pasting it in, ppl aren't likely to download files). But I can see that you need to specify your distribution and linkage function. 

 

Regarding your covariates, if they are flagged as categorical variables (in your class statement) then they will be treated as such in your model--each level is evaluated relative to the reference. You could use estimate statements to obtain the level-specific parameter (and as you do below, use the cl command to get CI).

 

To interpret results of logistic regression, you need to understand odds ratios. I like this page for explaining this: https://stats.idre.ucla.edu/other/mult-pkg/faq/general/faq-how-do-i-interpret-odds-ratios-in-logisti...

 

I think this is different from the one I linked to previously, but has information specifically on binomial outcome: https://www.sas.com/content/dam/SAS/support/en/sas-global-forum-proceedings/2018/2179-2018.pdf

 

Good luck!

 

ph6
Obsidian | Level 7 ph6
Obsidian | Level 7

Effect

GLUresults

SGgradingresult

pHgradingresult

Estimate

Standard
Error

DF

t Value

Pr > |t|

Intercept

 

 

 

0.3818

0.1166

203

3.27

0.0012

albuminr

 

 

 

-0.07696

0.05561

43

-1.38

0.1736

albuminr

 

 

 

0

.

.

.

.

GLUresults

1

 

 

-0.1192

0.3805

43

-0.31

0.7556

GLUresults

2

 

 

0

.

.

.

.

SGgradingresult

 

1

 

0.04574

0.1004

43

0.46

0.6511

SGgradingresult

 

2

 

-0.04829

0.09732

43

-0.50

0.6223

SGgradingresult

 

3

 

-0.2017

0.1050

43

-1.92

0.0615

SGgradingresult

 

4

 

-0.1229

0.1103

43

-1.11

0.2713

SGgradingresult

 

5

 

-0.2331

0.1246

43

-1.87

0.0681

SGgradingresult

 

6

 

-0.1337

0.1493

43

-0.90

0.3755

SGgradingresult

 

7

 

0

.

.

.

.

pHgradingresult

 

 

1

-0.06274

0.05959

43

-1.05

0.2982

pHgradingresult

 

 

2

-0.1567

0.08566

43

-1.83

0.0743

pHgradingresult

 

 

3

-0.2503

0.09530

43

-2.63

0.0119

pHgradingresult

 

 

4

-0.2056

0.1198

43

-1.72

0.0933

pHgradingresult

 

 

5

-0.1641

0.1073

43

-1.53

0.1335

pHgradingresult

 

 

6

0.01038

0.1394

43

0.07

0.9410

pHgradingresult

 

 

7

0

.

.

.

.

 

Type III Tests of Fixed Effects

Effect

Num DF

Den DF

F Value

Pr > F

albuminr

1

43

1.91

0.1736

GLUresults

1

43

0.10

0.7556

SGgradingresult

6

43

2.20

0.0619

BLOresults

1

43

6.23

0.0164

pHgradingresult

6

43

1.77

0.1281

Here is my output.

PaigeMiller
Diamond | Level 26

You can get confidence intervals for the coefficients by adding the option CL to the MODEL statement.

 

The best way to present the results, in my opinion, is to use the Least Squares Means output, which I see you have commented out in your code.

--
Paige Miller
ph6
Obsidian | Level 7 ph6
Obsidian | Level 7

Thank you. When I am using the least squares mean values I get different estimates, confidence intervals and p-values compared to the solution for the fixed effects and Type III tests of fixed effects tables. For example for KET and SG I get:

 
 

KETresults

Estimate

Standard
Error

DF

t Value

Pr > |t|

Alpha

Lower

Upper

1

0.05575

0.2325

43

0.24

0.8117

0.05

-0.4132

0.5247

2

0.2528

0.2163

43

1.17

0.2490

0.05

-0.1835

0.6891

 

 

SGgradingresult

Estimate

Standard
Error

DF

t Value

Pr > |t|

Alpha

Lower

Upper

1

0.2992

0.2265

43

1.32

0.1935

0.05

-0.1575

0.7559

2

0.2051

0.2279

43

0.90

0.3731

0.05

-0.2544

0.6647

3

0.05176

0.2261

43

0.23

0.8200

0.05

-0.4042

0.5077

4

0.1305

0.2206

43

0.59

0.5571

0.05

-0.3143

0.5754

5

0.02036

0.2377

43

0.09

0.9321

0.05

-0.4590

0.4997

6

0.1197

0.2438

43

0.49

0.6260

0.05

-0.3719

0.6113

7

0.2534

0.2370

43

1.07

0.2909

0.05

-0.2246

0.7314

Which one is the correct one to be reported? Do I need to define a reference for PH and SG results which have 1-7 values? How can I interpret them?

 

 

PaigeMiller
Diamond | Level 26

Which is correct? They are both correct, because they are different ways of representing the same data. I wrote a brief explanation here:

https://communities.sas.com/t5/Statistical-Procedures/Interpreting-Multivariate-Linear-Regression-wi...

 

which also helps explain my preference for presenting the Least Squares Means rather than the regression coefficients

 

--
Paige Miller
ph6
Obsidian | Level 7 ph6
Obsidian | Level 7

I see, it is now clear. Do I need to define a reference value for PH and SG results which have 1-7 values? How can I adjust the model for confounding factors of age, HIV status and Immunological evidence?

PaigeMiller
Diamond | Level 26

@ph6 wrote:

I see, it is now clear. Do I need to define a reference value for PH and SG results which have 1-7 values? 


No

How can I adjust the model for confounding factors of age, HIV status and Immunological evidence?

You have to add age, HIV status and immunological evidence into the model.

 

--
Paige Miller
ph6
Obsidian | Level 7 ph6
Obsidian | Level 7

Thank you. Using least square means method I am getting negative values for the lower bound of the confidence intervals. Can I report them as they are or replace by zero?

PaigeMiller
Diamond | Level 26

If these are variables that can't go below zero, then yes you can report them as zero.

--
Paige Miller

sas-innovate-2024.png

Available on demand!

Missed SAS Innovate Las Vegas? Watch all the action for free! View the keynotes, general sessions and 22 breakouts on demand.

 

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.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 11 replies
  • 984 views
  • 2 likes
  • 3 in conversation