Skip to content

Commit 48547ea

Browse files
Merge pull request #30 from jonathan-taylor/master
Updating to new glmnet `coef`
2 parents 5a0884b + 2f05bf6 commit 48547ea

File tree

4 files changed

+32
-22
lines changed

4 files changed

+32
-22
lines changed

.travis.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,6 @@ addons:
1111
warnings_are_errors: true
1212
before_install:
1313
- tlmgr install index # for texlive and vignette?
14-
- R -e 'install.packages("Rcpp", repos="http://cloud.r-project.org")'
14+
- R -e 'install.packages(c("Rcpp", "intervals"), repos="http://cloud.r-project.org")'
1515
- make Rcpp
1616
- cd selectiveInference

selectiveInference/R/funs.fixed.R

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,13 @@
22
# for the solution of
33
# min 1/2 || y - \beta_0 - X \beta ||_2^2 + \lambda || \beta ||_1
44

5-
fixedLassoInf <- function(x, y, beta, lambda, family=c("gaussian","binomial","cox"),intercept=TRUE, add.targets=NULL, status=NULL,
5+
fixedLassoInf <- function(x, y, beta,
6+
lambda, family=c("gaussian","binomial","cox"),
7+
intercept=TRUE, add.targets=NULL, status=NULL,
68
sigma=NULL, alpha=0.1,
79
type=c("partial","full"), tol.beta=1e-5, tol.kkt=0.1,
8-
gridrange=c(-100,100), bits=NULL, verbose=FALSE, linesearch.try=10) {
10+
gridrange=c(-100,100), bits=NULL, verbose=FALSE,
11+
linesearch.try=10) {
912

1013
family = match.arg(family)
1114
this.call = match.call()

selectiveInference/R/funs.fixedCox.R

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
1-
fixedCoxLassoInf=function(x,y,status,beta,lambda,alpha=.1, type=c("partial"),tol.beta=1e-5, tol.kkt=0.1,
2-
gridrange=c(-100,100), bits=NULL, verbose=FALSE,this.call=NULL){
3-
1+
fixedCoxLassoInf=function(x, y, status,
2+
beta, lambda,
3+
alpha=.1, type=c("partial"),
4+
tol.beta=1e-5, tol.kkt=0.1,
5+
gridrange=c(-100,100),
6+
bits=NULL, verbose=FALSE,
7+
this.call=NULL){
48

59
checkargs.xy(x,y)
610
if(is.null(status)) stop("Must supply `status' argument")

selectiveInference/man/fixedLassoInf.Rd

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ gfit = glmnet(x,y,standardize=FALSE)
160160
# extract coef for a given lambda; note the 1/n factor!
161161
# (and we don't save the intercept term)
162162
lambda = .8
163-
beta = coef(gfit, s=lambda/n, exact=TRUE)[-1]
163+
beta = coef(gfit, x=x, y=y, s=lambda/n, exact=TRUE)[-1]
164164

165165
# compute fixed lambda p-values and selection intervals
166166
out = fixedLassoInf(x,y,beta,lambda,sigma=sigma)
@@ -170,8 +170,8 @@ out
170170
## as above, but use lar function instead to get initial
171171
## lasso fit (should get same results)
172172
lfit = lar(x,y,normalize=FALSE)
173-
beta = coef(lfit,s=lambda,mode="lambda")
174-
out2 = fixedLassoInf(x,y,beta,lambda,sigma=sigma)
173+
beta = coef(lfit, s=lambda, mode="lambda")
174+
out2 = fixedLassoInf(x, y, beta, lambda, sigma=sigma)
175175
out2
176176

177177
## mimic different penalty factors by first scaling x
@@ -189,12 +189,12 @@ pf=c(rep(1,7),rep(.1,3)) #define penalty factors
189189
pf=p*pf/sum(pf) # penalty factors should be rescaled so they sum to p
190190
xs=scale(x,FALSE,pf) #scale cols of x by penalty factors
191191
# first run glmnet
192-
gfit = glmnet(xs,y,standardize=FALSE)
192+
gfit = glmnet(xs, y, standardize=FALSE)
193193

194194
# extract coef for a given lambda; note the 1/n factor!
195195
# (and we don't save the intercept term)
196196
lambda = .8
197-
beta_hat = coef(gfit, s=lambda/n, exact=TRUE)[-1]
197+
beta_hat = coef(gfit, x=xs, y=y, s=lambda/n, exact=TRUE)[-1]
198198

199199
# compute fixed lambda p-values and selection intervals
200200
out = fixedLassoInf(xs,y,beta_hat,lambda,sigma=sigma)
@@ -221,37 +221,40 @@ set.seed(43)
221221
# extract coef for a given lambda; note the 1/n factor!
222222
# (and here we DO include the intercept term)
223223
lambda = .8
224-
beta_hat = coef(gfit, s=lambda/n, exact=TRUE)
224+
beta_hat = coef(gfit, x=x, y=y, s=lambda/n, exact=TRUE)
225225

226226
# compute fixed lambda p-values and selection intervals
227227
out = fixedLassoInf(x,y,beta_hat,lambda,family="binomial")
228228
out
229229

230-
#Cox model
231-
set.seed(43)
230+
231+
# Cox model
232+
233+
set.seed(43)
232234
n = 50
233235
p = 10
234236
sigma = 1
235237

236-
x = matrix(rnorm(n*p),n,p)
237-
x=scale(x,TRUE,TRUE)
238+
x = matrix(rnorm(n*p), n, p)
239+
x=scale(x, TRUE, TRUE)
238240

239241
beta = c(3,2,rep(0,p-2))
240242
tim = as.vector(x\%*\%beta + sigma*rnorm(n))
241243
tim= tim-min(tim)+1
242-
status=sample(c(0,1),size=n,replace=TRUE)
244+
status=sample(c(0,1),size=n,replace=TRUE)
243245
# first run glmnet
244246

245247

246-
gfit = glmnet(x,Surv(tim,status),standardize=FALSE,family="cox")
248+
y = Surv(tim,status)
249+
gfit = glmnet(x, y, standardize=FALSE, family="cox")
247250

248251
# extract coef for a given lambda; note the 1/n factor!
249252

250253
lambda = 1.5
251-
beta_hat = as.numeric(coef(gfit, s=lambda/n, exact=TRUE))
252-
254+
beta_hat = as.numeric(coef(gfit, x=x, y=y, s=lambda/n, exact=TRUE))
255+
253256
# compute fixed lambda p-values and selection intervals
254-
out = fixedLassoInf(x,tim,beta_hat,lambda,status=status,family="cox")
257+
out = fixedLassoInf(x, tim, beta_hat, lambda, status=status, family="cox")
255258
out
256259

257260
# Debiased lasso or "full"
@@ -272,7 +275,7 @@ gfit = glmnet(x, y, standardize=FALSE, intercept=FALSE)
272275
# extract coef for a given lambda; note the 1/n factor!
273276
# (and we don't save the intercept term)
274277
lambda = 2.8
275-
beta = coef(gfit, s=lambda/n, exact=TRUE)[-1]
278+
beta = coef(gfit, x=x, y=y, s=lambda/n, exact=TRUE)[-1]
276279

277280
# compute fixed lambda p-values and selection intervals
278281
out = fixedLassoInf(x, y, beta, lambda, sigma=sigma, type='full', intercept=FALSE)

0 commit comments

Comments
 (0)