Description Usage Arguments Value Examples
View source: R/multivariateGlm.fit.r
multivariateGlm
is used to fit multivariate generalized linear models
specified by a symbolic formula together with the distributions of the responses.
This function performs a simple GLM fit for each dependent variable with the associated distribution.
1 | multivariateGlm.fit(Y, comp, family, offset, size)
|
Y |
matrix of dependent variables. |
comp |
matrix of covariates. |
family |
a vector of character giving the family distribution of each response. |
offset |
used for the poisson dependent variables. A vector or a matrix of size: number of observations * number of Poisson dependent variables is expected. |
size |
a matrix giving the number of trials for each Binomial dependent variable ncol(size) must be equal to the number of Binomial variables. |
the list, each item of which is the glm object associated with each response.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | ## Not run:
library(SCGLR)
# load sample data
data(genus)
# get variable names from dataset
n <- names(genus)
ny <- n[grep("^gen",n)] # Y <- names that begins with "gen"
nx <- n[-grep("^gen",n)] # X <- remaining names
# remove "geology" and "surface" from nx as surface
# is offset and we want to use geology as additional covariate
nx <-nx[!nx%in%c("geology","surface")]
# build multivariate formula
# we also add "lat*lon" as computed covariate
form <- multivariateFormula(ny,c(nx,"I(lat*lon)"),c("geology"))
# split genus dataset
sub <- sample(1:nrow(genus),100,replace=FALSE)
sub_fit <- (1:nrow(genus))[-sub]
# define family
fam <- rep("poisson",length(ny))
# fit the model
genus.scglr <- scglr(formula=form, data=genus, family=fam, K=4,
offset=genus$surface, subset=sub_fit)
# xnew, the design matrix associated to sub-sample used for prediction
# note rhs parameter is introduced to take into account that the
# covariate part of the formula is composed of two differents sets
xnew <- model.matrix(form, data=genus[sub,], rhs=1:2)[,-1]
# prediction based on the scglr approch
pred.scglr <- multivariatePredictGlm(xnew,family=fam,
beta=genus.scglr$beta, offset=genus$surface[sub])
cor.scglr <-diag(cor(pred.scglr,genus[sub,ny]))
plot(cor.scglr, col="red",ylim=c(-1,1))
# prediction based on classical poisson glm
X <- model.matrix(form, data=genus)[,-1]
Y <- genus[,ny]
genus.glm <- multivariateGlm.fit(Y[sub_fit,,drop=FALSE],X[sub_fit,,drop=FALSE],
family=fam, offset=matrix(genus$surface[sub_fit],
length(sub_fit),length(ny)),size=NULL)
coefs <- sapply(genus.glm,coef)
# rhs parameter is introduced to take into account that the
# covariate part of the formula is composed of two differents sets
pred.glm <- multivariatePredictGlm(xnew,family=fam,beta=coefs,
offset=genus$surface[sub])
cor.glm <- diag(cor(pred.glm,genus[sub,ny]))
points(cor.glm, col="blue")
## End(Not run)
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.