[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