| simglm {rsq} | R Documentation |
Simulate Data from Generalized Linear Models
Description
Simulate data from linear and generalized linear models. Only the first covariate truely affects the response variable with coefficient equal to lambda.
Usage
simglm(family=c("binomial", "gaussian", "poisson","Gamma"),lambda=3,n=50,p=3)
Arguments
family |
the family of the distribution. |
lambda |
size of the coefficient of the first covariate. |
n |
the sample size. |
p |
the number of covarites. |
Details
The first covariate takes 1 in half of the observations, and 0 or -1 in the other half. When lambda gets larger, it is supposed to easier to predict the response variable.
Value
Returned values include yx and beta.
yx |
a data frame including the response |
beta |
true values of the regression coefficients. |
Author(s)
Dabao Zhang, Department of Statistics, Purdue University
References
Zhang, D. (2017). A coefficient of determination for generalized linear models. The American Statistician, 71(4): 310-316.
See Also
rsq, rsq.partial, pcor.
Examples
# Poisson Models
sdata <- simglm(family="poisson",lambda=4)
fitf <- glm(y~x.1+x.2+x.3,family=poisson,data=sdata$yx)
rsq(fitf) # type='v'
fitr <- glm(y~x.2+x.3,family=poisson,data=sdata$yx)
rsq(fitr) # type='v'
rsq(fitr,type='kl')
rsq(fitr,type='lr')
rsq(fitr,type='n')
pcor(fitr) # type='v'
pcor(fitr,type='kl')
pcor(fitr,type='lr')
pcor(fitr,type='n')
# Gamma models with shape=100
n <- 50
sdata <- simglm(family="Gamma",lambda=4,n=n)
fitf <- glm(y~x.1+x.2+x.3,family=Gamma,data=sdata$yx)
rsq(fitf) # type='v'
rsq.partial(fitf) # type='v'
fitr <- glm(y~x.2,family=Gamma,data=sdata$yx)
rsq(fitr) # type='v'
rsq(fitr,type='kl')
rsq(fitr,type='lr')
rsq(fitr,type='n')
# Likelihood-ratio-based R-squared
y <- sdata$yx$y
yhatr <- fitr$fitted.values
fit0 <- update(fitr,.~1)
yhat0 <- fit0$fitted.values
llr <- sum(log(dgamma(y,shape=100,scale=yhatr/100)))
ll0 <- sum(log(dgamma(y,shape=100,scale=yhat0/100)))
# Likelihood-ratio-based R-squared
1-exp(-2*(llr-ll0)/n)
# Corrected likelihood-ratio-based R-squared
(1-exp(-2*(llr-ll0)/n))/(1-exp(2*ll0/n))