Re: [R] Help with lm and multiple linear regression? (Plain Text version)
consider merging everything into a singe dataframe. i haven't tried it, but something like the following could work: reg.data - cbind(margin, personcoeff) names(reg.data) - c('margin', 'p1', 'p2') lm(margin~p1+p2, data = reg.data) the idea here is that by specifying the data frame with the data argument in lm, R looks for the columns of the names specified in the formula. for weights, see ?lm and look for the weights argument. cheers, tc On Dec 28, 2007 10:22 AM, Aaron Barzilai [EMAIL PROTECTED] wrote: (Apologies the previous version was sent as rich text) Hello, I'm new to R, but I've read the intro to R and successfully connected it to an instance of mysql. I'm trying to perform multiple linear regression, but I'm having trouble using the lm function. To start, I have read in a simply y matrix of values(dependent variable) and x matrix of independent variables. It says both are data frames, but lm is giving me an error that my y variable is a list. Any suggestions on how to do this? It's not clear to me what the problem is as they're both data frames. My actual problem will use a much wider matrix of coefficients, I've only included two for illustration. Additionally, I'd actually like to weight the observations. How would I go about doing that? I also have that as a separate column vector. Thanks, Aaron Here's my session: margin margin 166.67 2 -58.33 3 100.00 4 -33.33 5 200.00 6 -83.33 7 -100.00 8 0.00 9 100.00 10 -18.18 11 -55.36 12 -125.00 13 -33.33 14 -200.00 150.00 16 -100.00 17 75.00 180.00 19 -200.00 20 35.71 21 100.00 22 50.00 23 -86.67 24 165.00 personcoeff Person1 Person2 1 -1 1 2 -1 1 3 -1 1 4 -1 1 5 -1 1 6 -1 1 70 0 80 0 90 1 10 -1 1 11 -1 1 12 -1 1 13 -1 1 14 -1 0 15 0 0 16 0 0 17 0 1 18 -1 1 19 -1 1 20 -1 1 21 -1 1 22 -1 1 23 -1 1 24 -1 1 class(margin) [1] data.frame class(personcoeff) [1] data.frame lm(margin~personcoeff) Error in model.frame(formula, rownames, variables, varnames, extras, extranames, : invalid type (list) for variable 'margin' Be a better friend, newshound, and __ R-help@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. -- Tim Calkins 0406 753 997 __ R-help@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] Help with lm and multiple linear regression? (Plain Text version)
(Apologies the previous version was sent as rich text) Hello, I'm new to R, but I've read the intro to R and successfully connected it to an instance of mysql. I'm trying to perform multiple linear regression, but I'm having trouble using the lm function. To start, I have read in a simply y matrix of values(dependent variable) and x matrix of independent variables. It says both are data frames, but lm is giving me an error that my y variable is a list. Any suggestions on how to do this? It's not clear to me what the problem is as they're both data frames. My actual problem will use a much wider matrix of coefficients, I've only included two for illustration. Additionally, I'd actually like to weight the observations. How would I go about doing that? I also have that as a separate column vector. Thanks, Aaron Here's my session: margin margin 166.67 2 -58.33 3 100.00 4 -33.33 5 200.00 6 -83.33 7 -100.00 8 0.00 9 100.00 10 -18.18 11 -55.36 12 -125.00 13 -33.33 14 -200.00 150.00 16 -100.00 17 75.00 180.00 19 -200.00 20 35.71 21 100.00 22 50.00 23 -86.67 24 165.00 personcoeff Person1 Person2 1 -1 1 2 -1 1 3 -1 1 4 -1 1 5 -1 1 6 -1 1 70 0 80 0 90 1 10 -1 1 11 -1 1 12 -1 1 13 -1 1 14 -1 0 15 0 0 16 0 0 17 0 1 18 -1 1 19 -1 1 20 -1 1 21 -1 1 22 -1 1 23 -1 1 24 -1 1 class(margin) [1] data.frame class(personcoeff) [1] data.frame lm(margin~personcoeff) Error in model.frame(formula, rownames, variables, varnames, extras, extranames, : invalid type (list) for variable 'margin' Be a better friend, newshound, and __ R-help@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.
Re: [R] Help with lm and multiple linear regression? (Plain Text version)
Tim (and others who responded privately), Thanks for the help, this approach did work. I have also reread ?lm a little more closely, I do see the weights functionality. I have one last question: Now that I understand how to call this function and review the results, I want to extend it to my much larger real problem, with 100s of columns. Is there a way to call the function in more of a matrix algebra syntax, where I would list the matrix(e.g. personcoeff) rather than the individual column names? It seems like I might need to use lm.wfit, but per the help I'd rather use lm. Thanks, Aaron - Original Message From: Tim Calkins [EMAIL PROTECTED] To: Aaron Barzilai [EMAIL PROTECTED] Cc: r-help@r-project.org Sent: Thursday, December 27, 2007 6:55:57 PM Subject: Re: [R] Help with lm and multiple linear regression? (Plain Text version) consider merging everything into a singe dataframe. i haven't tried it, but something like the following could work: reg.data - cbind(margin, personcoeff) names(reg.data) - c('margin', 'p1', 'p2') lm(margin~p1+p2, data = reg.data) the idea here is that by specifying the data frame with the data argument in lm, R looks for the columns of the names specified in the formula. for weights, see ?lm and look for the weights argument. cheers, tc On Dec 28, 2007 10:22 AM, Aaron Barzilai [EMAIL PROTECTED] wrote: (Apologies the previous version was sent as rich text) Hello, I'm new to R, but I've read the intro to R and successfully connected it to an instance of mysql. I'm trying to perform multiple linear regression, but I'm having trouble using the lm function. To start, I have read in a simply y matrix of values(dependent variable) and x matrix of independent variables. It says both are data frames, but lm is giving me an error that my y variable is a list. Any suggestions on how to do this? It's not clear to me what the problem is as they're both data frames. My actual problem will use a much wider matrix of coefficients, I've only included two for illustration. Additionally, I'd actually like to weight the observations. How would I go about doing that? I also have that as a separate column vector. Thanks, Aaron Here's my session: margin margin 166.67 2 -58.33 3 100.00 4 -33.33 5 200.00 6 -83.33 7 -100.00 80.00 9 100.00 10 -18.18 11 -55.36 12 -125.00 13 -33.33 14 -200.00 150.00 16 -100.00 17 75.00 180.00 19 -200.00 20 35.71 21 100.00 22 50.00 23 -86.67 24 165.00 personcoeff Person1 Person2 1 -1 1 2 -1 1 3 -1 1 4 -1 1 5 -1 1 6 -1 1 70 0 80 0 90 1 10 -1 1 11 -1 1 12 -1 1 13 -1 1 14 -1 0 15 0 0 16 0 0 17 0 1 18 -1 1 19 -1 1 20 -1 1 21 -1 1 22 -1 1 23 -1 1 24 -1 1 class(margin) [1] data.frame class(personcoeff) [1] data.frame lm(margin~personcoeff) Error in model.frame(formula, rownames, variables, varnames, extras, extranames, : invalid type (list) for variable 'margin' Be a better friend, newshound, and __ R-help@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. -- Tim Calkins 0406 753 997 Be a better friend, newshound, and __ R-help@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.
Re: [R] Help with lm and multiple linear regression? (Plain Text version)
Hi Aaron, if I understand your question correctly, you can use the . in the formula, like so: dat - data.frame(x=1:10,y=rnorm(10),z=10:1) lm(x~., data=dat) The dot there stands for everything not already specified, so in this case that would be y and z (since x is already on the lhs). You can even omit things from . with the minus operator: lm(x~.-y, data=dat) This will do a regression of x on z only (and a constant of course). You can see another approach in the examples section of the help entry on ?formula (I was led to that entry from reading the Details section of ?lm). Haris Skiadas Department of Mathematics and Computer Science Hanover College On Dec 27, 2007, at 9:20 PM, Aaron Barzilai wrote: Tim (and others who responded privately), Thanks for the help, this approach did work. I have also reread ? lm a little more closely, I do see the weights functionality. I have one last question: Now that I understand how to call this function and review the results, I want to extend it to my much larger real problem, with 100s of columns. Is there a way to call the function in more of a matrix algebra syntax, where I would list the matrix(e.g. personcoeff) rather than the individual column names? It seems like I might need to use lm.wfit, but per the help I'd rather use lm. Thanks, Aaron - Original Message From: Tim Calkins [EMAIL PROTECTED] To: Aaron Barzilai [EMAIL PROTECTED] Cc: r-help@r-project.org Sent: Thursday, December 27, 2007 6:55:57 PM Subject: Re: [R] Help with lm and multiple linear regression? (Plain Text version) consider merging everything into a singe dataframe. i haven't tried it, but something like the following could work: reg.data - cbind(margin, personcoeff) names(reg.data) - c('margin', 'p1', 'p2') lm(margin~p1+p2, data = reg.data) the idea here is that by specifying the data frame with the data argument in lm, R looks for the columns of the names specified in the formula. for weights, see ?lm and look for the weights argument. cheers, tc On Dec 28, 2007 10:22 AM, Aaron Barzilai [EMAIL PROTECTED] wrote: (Apologies the previous version was sent as rich text) Hello, I'm new to R, but I've read the intro to R and successfully connected it to an instance of mysql. I'm trying to perform multiple linear regression, but I'm having trouble using the lm function. To start, I have read in a simply y matrix of values (dependent variable) and x matrix of independent variables. It says both are data frames, but lm is giving me an error that my y variable is a list. Any suggestions on how to do this? It's not clear to me what the problem is as they're both data frames. My actual problem will use a much wider matrix of coefficients, I've only included two for illustration. Additionally, I'd actually like to weight the observations. How would I go about doing that? I also have that as a separate column vector. Thanks, Aaron Here's my session: margin margin 166.67 2 -58.33 3 100.00 4 -33.33 5 200.00 6 -83.33 7 -100.00 80.00 9 100.00 10 -18.18 11 -55.36 12 -125.00 13 -33.33 14 -200.00 150.00 16 -100.00 17 75.00 180.00 19 -200.00 20 35.71 21 100.00 22 50.00 23 -86.67 24 165.00 personcoeff Person1 Person2 1 -1 1 2 -1 1 3 -1 1 4 -1 1 5 -1 1 6 -1 1 70 0 80 0 90 1 10 -1 1 11 -1 1 12 -1 1 13 -1 1 14 -1 0 15 0 0 16 0 0 17 0 1 18 -1 1 19 -1 1 20 -1 1 21 -1 1 22 -1 1 23 -1 1 24 -1 1 class(margin) [1] data.frame class(personcoeff) [1] data.frame lm(margin~personcoeff) Error in model.frame(formula, rownames, variables, varnames, extras, extranames, : invalid type (list) for variable 'margin' __ R-help@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.