[R] Multivariate regression
Robin Hankin
r.hankin at noc.soton.ac.uk
Mon Oct 30 10:17:27 CET 2006
Hi
I discovered the other day that lm() does some of the work for
you:
library(mvtnorm)
X <- matrix(rnorm(60),ncol=3)
beta <- matrix(1:6,ncol=2)
sig <- matrix(c(1,0.7,0.7,1),2,2)
Y <- X %*% beta + rmvnorm(n=20,sigma=sig)
lm(Y ~ X-1)
Call:
lm(formula = Y ~ X - 1)
Coefficients:
[,1] [,2]
X1 1.015 4.065
X2 2.483 5.366
X3 2.762 5.727
This gives an estimate for beta.
But I don't know of a ready-made R solution for estimating
the covariance of the elements of beta, or the "sig" matrix
for the covariance matrix of the observation errors.
Anyone?
On 30 Oct 2006, at 09:01, Andris Jankevics wrote:
> Also you can take a look on Partial Least Squares (PLS) regression.
> http://www.statsoft.com/textbook/stpls.html
> R-package: http://mevik.net/work/software/pls.html
>
> Andris Jankevics
>
> On Sestdiena, 28. Oktobris 2006 06:04, Ritwik Sinha wrote:
>> You can use gee (
>> http://finzi.psych.upenn.edu/R/library/geepack/html/00Index.html)
>> or maybe
>> the function gls in nlme.
>>
>> Ritwik.
>>
>> On 10/27/06, Ravi Varadhan <rvaradhan at jhmi.edu> wrote:
>>> Hi,
>>>
>>>
>>>
>>> Suppose I have a multivariate response Y (n x k) obtained at a
>>> set of
>>> predictors X (n x p). I would like to perform a linear
>>> regression taking
>>> into consideration the covariance structure of Y within each unit
>>> - this
>>> would be represented by a specified matrix V (k x k), assumed to
>>> be the
>>> same
>>> across units. How do I use "lm" to do this?
>>>
>>>
>>>
>>> One approach that I was thinking of is as follows:
>>>
>>>
>>>
>>> Flatten Y to a vector, say, Yvec (n*k x 1). Create Xvec (n*k,
>>> p*k) such
>>> that it is made up of block matrices Bij (k x k), where Bij is a
>>> diagonal
>>> matrix with X_ij as the diagonal (i = 1,.n, and j = 1,.,p). Now
>>> I can
>>> use "lm" in a univariate mode to regress Yvec against Xvec, with
>>> covariance matrix Vvec (n*k x n*k). Vvec is a block-diagonal
>>> matrix with
>>> blocks of V along the diagonal. This seems like a valid
>>> approach, but I
>>> still don't know how to specify the covariance structure to do
>>> weighted
>>> least squares.
>>>
>>>
>>>
>>> Any help is appreciated.
>>>
>>>
>>>
>>> Best,
>>>
>>> Ravi.
>>>
>>>
>>>
>>>
>>> --------------------------------------------------------------------
>>> -----
>>> --- -------
>>>
>>> Ravi Varadhan, Ph.D.
>>>
>>> Assistant Professor, The Center on Aging and Health
>>>
>>> Division of Geriatric Medicine and Gerontology
>>>
>>> Johns Hopkins University
>>>
>>> Ph: (410) 502-2619
>>>
>>> Fax: (410) 614-9625
>>>
>>> Email: rvaradhan at jhmi.edu
>>>
>>> Webpage:
>>> http://www.jhsph.edu/agingandhealth/People/Faculty/Varadhan.html
>>>
>>>
>>>
>>>
>>> --------------------------------------------------------------------
>>> -----
>>> --- --------
>>>
>>>
>>>
>>>
>>> [[alternative HTML version deleted]]
>>>
>>> ______________________________________________
>>> R-help at stat.math.ethz.ch mailing list
>>> https://stat.ethz.ch/mailman/listinfo/r-help
>>> PLEASE do read the posting guide
>>> http://www.R-project.org/posting-guide.html
>>> and provide commented, minimal, self-contained, reproducible code.
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-
> guide.html
> and provide commented, minimal, self-contained, reproducible code.
--
Robin Hankin
Uncertainty Analyst
National Oceanography Centre, Southampton
European Way, Southampton SO14 3ZH, UK
tel 023-8059-7743
More information about the R-help
mailing list