Heteroskedastic GLM in R
[This article was first published on DiffusePrioR » R, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
A commenter on my previous blog entry has drawn my attention to an R function called hetglm() that estimates heteroskedastic probit models. This function is contained in the glmx package. The glmx package is not available on CRAN yet, but thankfully can be downloaded here.
The hetglm() function has a number of computational advantages compared with the crude method outlined in my previous post. The following example replicates the previous analysis showing the speed advantage associated with using the hetglm() function.
rm(list=ls()) # clear ws library(maxLik) library(glmx) n <- 1000 # no. obs x1 <- runif(n,-1,1) # predictor 1 x2 <- runif(n,-1,1) # " 2 e1 <- rnorm(n,0,1) # normal error e2 <- (1 + 0.45*(x1+x2))*e1 # hetero error y <- ifelse(0.5 + 0.5*x1 -0.5*x2 - e2 >0, 1, 0) # outcome # estimate normal probit r1 <- glm(y~x1+x2,family=binomial(link="probit")) system.time(ml1 <- maxLik(hll,start=c(0,0,0,0,0))) # maximize system.time(h1 <- hetglm(y ~ x1 + x2)) # output > system.time(ml1 <- maxLik(hll,start=c(0,0,0,0,0))) # maximize user system elapsed 4.43 0.00 4.59 > system.time(h1 <- hetglm(y ~ x1 + x2)) user system elapsed 0.11 0.00 0.11
To leave a comment for the author, please follow the link and comment on their blog: DiffusePrioR » R.
R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.