Set p-value threshold for stepwiseglm() function?

Hi, I am using
stepwiseglm(D(1:2719,2:end),D(1:2719,1),'constant','upper','linear','Distribution','binomial','Link','logit')
in a process to explore available parameters for a logistic regression and decide on which ones to use and which ones to ignore.
The function adds the parameter if p-value of marginal value is <.05, discards parameter if >.10
Since my purpose is exploratory, I'd be interested in having a look at parameters with a p-value of say, up to .25
I am new to matlab and having trouble finding if I can adjust the p-value thresh-hold.
Anyone know? Thanks-- Justin

 Accepted Answer

the cyclist
the cyclist on 18 Sep 2014
Edited: the cyclist on 18 Sep 2014
Use the Criterion name-value pair to specify which criterion is measured to determine terms to remove, and the PRemove name-value pair to specify the value.
See the "Name-Value Pair Arguments" section of the documentation for stepwiseglm for details.

8 Comments

Thanks for reply, The Cyclist - I am sure your answer is right-on, though I struggle with Matlab to apply the function instructions and knowing which step of the function terms is which. For example, how can I change this function to change to p-value to .20?
stepwiseglm(D(1:2719,2:end),D(1:2719,1),'constant','upper','linear','Distribution','binomial','Link','logit')
stepwiseglm(D(1:2719,2:end),D(1:2719,1),'constant','upper','linear','Distribution','binomial','Link','logit','Criterion','Deviance','PRemove',0.20)
ok! This is helping me understand how function specification works, comparing what you have here to the documentation. Thanks a lot-
Ok it turns out this isn't working - I believe because the function never adds a metric in the first place if it has a pval > .05 for the PRemove of .2 to have an effect.
As a point of clarity, I've been loading a set of Y variables and the function adds them one at a time.
I tried using PEnter in place of PRemove but no go
Hm. Have to admit I have not used this functionality myself, and am just using my understanding of the documentation. I'll try to find some time to explore this myself.
I finally found some time to explore. Here is a contrived example in which I construct three different models -- "strict","loose", and "very loose" -- off the same data.
rng(1)
N = 50;
X = randn(N,2);
noise = 10;
Y = 2 + 3*X(:,1) + 3.6*X(:,2) + noise*randn(N,1);
model_strict = stepwiseglm(X,Y,'constant','upper','linear')
model_loose = stepwiseglm(X,Y,'constant','upper','linear','Criterion','Deviance','PEnter',0.25,'PRemove',1)
model_very_loose = stepwiseglm(X,Y,'constant','upper','linear','Criterion','Deviance','PEnter',0.90,'PRemove',1)
"model_strict" uses default MATLAB settings for adding and removing terms. Notice that this model does not add either X(:,1) or X(:,2).
"model_loose" adds terms if p-value is less than 0.25, and only removes if p-value greater than 1. (In other words, it never removes terms.) This model adds X(:,2), but not X(:,1).
"model_very_loose" adds terms if p-value is less than 0.90, and only removes if p-value greater than 1. (In other words, it never removes terms.) This model adds both X(:,2) and X(:,1).
I think "model_loose" is effectively to what you are trying to achieve.
I hope this helps. The "Algorithm" section of this documentation page describes the algorithm MATLAB uses to add and remove terms.
Yeah that did it - Thanks for the step by step and taking time to look into it, still learning how to apply function parameters--

Sign in to comment.

More Answers (0)

Asked:

on 17 Sep 2014

Commented:

on 8 Oct 2014

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!