[R] Errore : requires numeric/complex matrix/vector arguments

Berend Hasselman bhh at xs4all.nl
Sun Oct 20 16:31:00 CEST 2013


On 20-10-2013, at 16:16, valentina colombo <valentina81c at hotmail.it> wrote:

> Dear Mr. Hasselman,
> I have attached my code to solve (hopefully) my problem in Error-require numeric/complex matrix/vector
> Any suggestions?
> Thanks
> 
Please answer to the list and NOT only privately. I'm forwarding this message to R-help.

You are not showing how you constructed mX and others.
In the attachment you show how you read X.

I do not get your error when I generate your matrices with these commands:

set.seed(1)

N <- 126
mX <- matrix(runif(N*4),ncol=4)
mY <- matrix(runif(N*4),ncol=4)
mZ <- matrix(runif(N*4),ncol=4)

If you want to include data in a text-only mail use dput.

Berend

> 
> 
> > Subject: Re: [R] Errore : requires numeric/complex matrix/vector arguments
> > From: bhh at xs4all.nl
> > Date: Sun, 20 Oct 2013 13:29:37 +0200
> > CC: r-help at r-project.org
> > To: valentina81c at hotmail.it
> > 
> > 
> > On 20-10-2013, at 13:08, valentina colombo <valentina81c at hotmail.it> wrote:
> > 
> > > Dear R users,I'm a new user of R. I'm trying to do a LM test an there is this type of error: Error in t(mX) %*% mX : requires numeric/complex matrix/vector arguments.
> > > To be clear I write down the code in which mY ( 126,1 ) mX (126,1) mZ(126,1) are matrix.
> > > 
> > > LMTEST <- function(mY, mX, mZ)#mY, mX, mZ must be matrices!#returns the LM test statistic and the degree of freedom{iT = dim(mY)[1]ip = dim(mY)[2]iDF = dim(mZ)[2]*ipmE = mY - mX%*%solve(t(mX)%*%mX)%*%t(mX)%*%mY
> > > the error starts from the above step (t(mX)%*%mX)%*%t(mX)%*%mY
> > > RSS0 = t(mE)%*%mEmXX = cbind(mX, mZ)mK = mE - mXX%*%solve(t(mXX)%*%mXX)%*%t(mXX)%*%mERSS1 = t(mK)%*%mKdTR = sum(diag(solve(RSS0)%*%RSS1))LM = iT*(ip-dTR)pval = 1-pchisq(LM,df=iDF)return( c(pval, LM, iDF) )}
> > > Any suggestion? Where is the problem? I am getting craxy!
> > 
> > Your code is a complete mess and thus unreadable because you posted in HTML.
> > Cleaning up and doing this
> > 
> > LMTEST <- function(mY, mX, mZ)#mY, mX, mZ must be matrices!
> > #returns the LM test statistic and the degree of freedom
> > {iT = dim(mY)[1]
> > ip = dim(mY)[2]
> > iDF = dim(mZ)[2]*ip
> > mE = mY - mX%*%solve(t(mX)%*%mX)%*%t(mX)%*%mY
> > # the error starts from the above step 
> > (t(mX)%*%mX)%*%t(mX)%*%mY
> > RSS0 = t(mE)%*%mE
> > mXX = cbind(mX, mZ)
> > mK = mE - mXX%*%solve(t(mXX)%*%mXX)%*%t(mXX)%*%mE
> > RSS1 = t(mK)%*%mK
> > dTR = sum(diag(solve(RSS0)%*%RSS1))
> > LM = iT*(ip-dTR)
> > pval = 1-pchisq(LM,df=iDF)
> > return( c(pval, LM, iDF) )
> > }
> > 
> > set.seed(1)
> > 
> > N <- 20
> > mX <- matrix(runif(N),ncol=1)
> > mY <- matrix(runif(N),ncol=1)
> > mZ <- matrix(runif(N),ncol=1)
> > 
> > LMTEST(mY,mX,mZ) 
> > 
> > the answer I got was:
> > 
> > [1] 0.004965514 7.891955826 1.000000000
> > 
> > 
> > So it must be your data.
> > Are you sure they are numeric? Have you checked with str(mX) etc?
> > 
> > Berend
> > 
> > > Valentina 
> > > [[alternative HTML version deleted]]
> > 
> > 
> > Please don't post in html but in plain text.
> > 
> > 
> > > 
> > > ______________________________________________
> > > R-help at r-project.org 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 error.txt>



More information about the R-help mailing list