[R] Regression using mapply?

David Winsemius dwinsemius at comcast.net
Wed Sep 8 16:11:49 CEST 2010


On Sep 8, 2010, at 7:34 AM, Philipp Kunze wrote:

> Hi,
> I have huge matrices in which the response variable is in the first
> column and the regressors are in the other columns. What I wanted to  
> do
> now is something like this:
>
> #this is just to get an example-matrix
> DataMatrix <- rep(1,1000);
> Disturbance <- rnorm(900);
> DataMatrix[101:1000] <- DataMatrix[101:1000]+Disturbance;
> DataMatrix <- matrix(DataMatrix,ncol=10,nrow=100);
>
> #estimate univariate linear model with each regressor-column, response
> in the first column
>
> for(i in 2:10){
> 	result <- lm(DataMatrix[,1]~DataMatrix[,i])
> }

result <- apply(DataMatrix[,2:10], 2, function (x) lm(DataMatrix[, 
1]~x) )

Which would have the added advantage that "result" would not be  
overwritten for iterations 3:10, which is what your code would have  
done. "result" will be a list of 9 models which might be a bit  
unweildy, so you might consider something like

result <- apply(DataMatrix[,2:10], 2, function (x)  
coef( lm(DataMatrix[,1]~x) ) )
result

When you do so,  you uncover a fatal flaw in your strategy, which  
suggests you have not even done this once on your data or simulations.

-- 
David.
>
>
> Is there any way to get rid of the for-loop using mapply (or some  
> other
> function)?
-- 
David Winsemius, MD
West Hartford, CT



More information about the R-help mailing list