[R] lm() with same formula but different column/factor combinations in data frame
Murtaza Das
murtazadas at gmail.com
Fri Dec 26 19:57:37 CET 2008
Thanks for replying Gabor.
I checked the leaps() function and i think it is intended to find the
best combination of predictors in the linear model.
Does leaps have a way to combine different factor columns in my data
frame as follows :
I have the regression model fixed. The combination of predictor
variables used always remains the same.
UncDmd ~ M1 + M2 + M3 + M4 + M5 + M6 + M7 + M8 + M9 + M10 + M11
I want to get the coefficients in this linear model when different
combinations of factors (select a combination from first four columns
of the data frame) and their levels are taken from a data frame(apply
lm model for a each combination of levels within the selected factor
columns). Thus corresponding to each combination, the data used to
determine the model coefficients will be different.
I am attaching the data and R files (long method using loops) that I
use to get the result. Currently, I modify keys to get different
combinations. Also, note in the script, the data frame is named LRO1.
Thanks again,
Murtaza
On Fri, Dec 26, 2008 at 12:58 PM, Gabor Grothendieck
<ggrothendieck at gmail.com> wrote:
> See the leaps package.
>
> On Fri, Dec 26, 2008 at 12:37 PM, Murtaza Das <murtazadas at gmail.com> wrote:
>> Hi,
>>
>> I am trying to find an efficient way of applying a linear regression
>> model to different factor combinations in a data frame.
>> I want to obtain the output with minimal or no use of loops if
>> possible. Please let me know if this query is unclear.
>>
>> Thanks,
>> Murtaza
>>
>> ***********************************************************************************************************************************************************
>>
>> The data frame TEST1 has four factor columns followed by thirteen
>> numeric columns defined as :
>> 1) Community, levels: "20232"
>> 2) WT, levels: "B", "E", "M"
>> 3) LTC, levels: "L", "M", "S", "1"
>> 4) UC, levels: "1X1", "2X2"
>> 5) UncDmd: Response variable in the linear model
>> 6-16) M1...M11: Explanatory variables in the linear model
>>
>> A few sample rows in the data frame are as follows:
>>> TEST1[1:15,]
>> Community WT LTC UC UncDmd M1 M2 M3 M4 M5 M6 M7 M8 M9 M10 M11
>> 1 20232 E L 1X1 1.000000 0 0 0 0 0 0 0 0 0 0 1
>> 2 20232 E L 2X2 0.000000 0 0 0 0 0 0 0 0 0 0 1
>> 3 20232 E M 1X1 1.000000 0 0 0 0 0 0 0 0 0 0 1
>> 4 20232 E M 2X2 1.000000 0 0 0 0 0 0 0 0 0 0 1
>> 5 20232 E S 1X1 0.000000 0 0 0 0 0 0 0 0 0 0 1
>> 6 20232 E S 2X2 0.000000 0 0 0 0 1 0 0 0 0 0 0
>> 7 20232 B 1 1X1 0.209117 0 0 0 0 0 0 0 0 0 0 1
>> 8 20232 B 1 2X2 0.190605 0 0 0 0 0 0 0 0 0 0 1
>> 9 20232 B L 1X1 0.000000 0 0 0 0 1 0 0 0 0 0 0
>> 10 20232 B L 2X2 1.000000 0 0 0 0 0 0 0 0 0 0 1
>> 11 20232 B M 1X1 4.000000 0 0 0 0 0 0 0 0 0 0 1
>> 12 20232 B M 2X2 0.000000 0 0 0 0 0 0 0 0 0 0 1
>> 13 20232 B S 1X1 0.000000 1 0 0 0 0 0 0 0 0 0 0
>> 14 20232 B S 2X2 0.000000 0 0 0 0 0 0 0 0 0 0 1
>> 15 20232 M 1 1X1 0.618689 0 0 0 0 0 0 0 0 0 1 0
>>
>> *********************************************************************************************************************************************************
>> I need to store the coefficients using lm() for different combinations
>> of the 4 factors, or different combinations of 3 factors or different
>> combinations of 2 factors or
>> differennt combinations of 1 factor.
>> The formula remains fixed as:
>>> Formula
>> UncDmd ~ M1 + M2 + M3 + M4 + M5 + M6 + M7 + M8 + M9 + M10 + M11
>>
>> So, different models I want to solve in R are :
>> 1) Community : lm(Formula,TEST1[ as.logical(
>> (TEST1[[1]]=="20232") ) , ])
>> 2) WT : lm(Formula,TEST1[ as.logical(
>> (TEST1[[2]]=="B") ) , ])
>> 3) WT : lm(Formula,TEST1[ as.logical(
>> (TEST1[[2]]=="E") ) , ])
>> 4) WT : lm(Formula,TEST1[ as.logical(
>> (TEST1[[2]]=="M") ) , ])
>> 5) LTC : lm(Formula,TEST1[ as.logical(
>> (TEST1[[3]]=="L") ) , ])
>> 6) LTC : lm(Formula,TEST1[ as.logical(
>> (TEST1[[3]]=="M") ) , ])
>> 7) LTC : lm(Formula,TEST1[ as.logical(
>> (TEST1[[3]]=="S") ) , ])
>> 8) LTC : lm(Formula,TEST1[ as.logical(
>> (TEST1[[3]]=="1L") ) , ])
>> 9) UC : lm(Formula,TEST1[ as.logical(
>> (TEST1[[4]]=="1X1") ) , ])
>> 10) UC : lm(Formula,TEST1[ as.logical(
>> (TEST1[[4]]=="2X2") ) , ])
>> 11) Community, WT : lm(Formula,TEST1[ as.logical(
>> (TEST1[[1]]=="20232") * (TEST1[[2]]=="B") ) , ])
>> 12) Community, WT : lm(Formula,TEST1[ as.logical(
>> (TEST1[[1]]=="20232") * (TEST1[[2]]=="E") ) , ])
>> 13) Community, WT : lm(Formula,TEST1[ as.logical(
>> (TEST1[[1]]=="20232") * (TEST1[[2]]=="M") ) , ])
>> 14) Community, LTC : lm(Formula,TEST1[ as.logical(
>> (TEST1[[1]]=="20232") * (TEST1[[3]]=="L") ) , ])
>> 15) Community, LTC : lm(Formula,TEST1[ as.logical(
>> (TEST1[[1]]=="20232") * (TEST1[[3]]=="M") ) , ])
>> 16) Community, LTC : lm(Formula,TEST1[ as.logical(
>> (TEST1[[1]]=="20232") * (TEST1[[3]]=="S") ) , ])
>> 17) Community, LTC : lm(Formula,TEST1[ as.logical(
>> (TEST1[[1]]=="20232") * (TEST1[[3]]=="1") ) , ])
>> 18) Community, UC : lm(Formula,TEST1[ as.logical(
>> (TEST1[[1]]=="20232") * (TEST1[[4]]=="1X1") ) , ])
>> 19) Community, UC : lm(Formula,TEST1[ as.logical(
>> (TEST1[[1]]=="20232") * (TEST1[[4]]=="2X2") ) , ])
>> 20) WT, LTC : lm(Formula,TEST1[ as.logical(
>> (TEST1[[2]]=="B") * (TEST1[[3]]=="L") ) , ])
>> 21) WT, LTC : lm(Formula,TEST1[ as.logical(
>> (TEST1[[2]]=="B") * (TEST1[[3]]=="M") ) , ])
>> 22) WT, LTC : lm(Formula,TEST1[ as.logical(
>> (TEST1[[2]]=="B") * (TEST1[[3]]=="S") ) , ])
>> 23) WT, LTC : lm(Formula,TEST1[ as.logical(
>> (TEST1[[2]]=="B") * (TEST1[[3]]=="1") ) , ])
>> 24) WT, LTC : lm(Formula,TEST1[ as.logical(
>> (TEST1[[2]]=="E") * (TEST1[[3]]=="L") ) , ])
>> 25) WT, LTC : lm(Formula,TEST1[ as.logical(
>> (TEST1[[2]]=="E") * (TEST1[[3]]=="M") ) , ])
>> 26) WT, LTC : lm(Formula,TEST1[ as.logical(
>> (TEST1[[2]]=="E") * (TEST1[[3]]=="S") ) , ])
>> 27) WT, LTC : lm(Formula,TEST1[ as.logical(
>> (TEST1[[2]]=="E") * (TEST1[[3]]=="1") ) , ])
>> 28) WT, LTC : lm(Formula,TEST1[ as.logical(
>> (TEST1[[2]]=="M") * (TEST1[[3]]=="L") ) , ])
>> 29) WT, LTC : lm(Formula,TEST1[ as.logical(
>> (TEST1[[2]]=="M") * (TEST1[[3]]=="M") ) , ])
>> 30) WT, LTC : lm(Formula,TEST1[ as.logical(
>> (TEST1[[2]]=="M") * (TEST1[[3]]=="S") ) , ])
>> 31) WT, LTC : lm(Formula,TEST1[ as.logical(
>> (TEST1[[2]]=="M") * (TEST1[[3]]=="1") ) , ])
>> 32) WT, UC :
>> ...
>> ...
>> xx) LTC, UC :
>> ...
>> xxx) Community, WT, LTC :
>> ...
>> ...
>> and so on upto:
>> xxxx) Community, WT, LTC, UC : lm(Formula,TEST1[ as.logical(
>> (TEST1[[1]]=="20232") * (TEST1[[2]]=="M") * (TEST1[[3]]=="1") ) *
>> (TEST1[[4]]=="2X2"), ])
>> ***********************************************************************************************************************************************************
>> Desired Output format (or something simlar):
>> Factor1 Factor2 Factor3 Factor4 Intercept M1 M2 M3 M4 M5 M6
>> M7 M8 M9 M10 M11
>> 1) 20232 x x x
>> x x x x x x x x x
>> 2) B x x x
>> x x x x x x x x x
>> 3) E x x x
>> x x x x x x x x x
>> 4) M x x x
>> x x x x x x x x x
>> 5) L x x x
>> x x x x x x x x x
>> 6) M x x x
>> x x x x x x x x x
>> 7) S x x x
>> x x x x x x x x x
>> 8) 1 x x x
>> x x x x x x x x x
>> 9) 1X1 x x x
>> x x x x x x x x x
>> 10) 2X2 x x x
>> x x x x x x x x x
>> 11) 20232 B x x x x
>> x x x x x x x x
>> ..
>> ..
>> and so on..
>>
>>
>> x is the respective coefficient obtained from the linear fit.
>>
>> ______________________________________________
>> 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.
>>
>
More information about the R-help
mailing list