Sorkin, John
2019-Feb-22 07:44 UTC
[R] Obtaining values of estimates from a regression; How do I get values from a list?
I am trying to obtain the coefficients from a regression (performed using lm). I would like to get the value for the slope (i.e. estimate) for pre from the following regression: fitchange <- lm(post-pre~pre,data=mydata2) I have tried the following without any success: zz <- summary(fitchange)["coefficients"] class(zz) print(zz) zz[[2,1]] zz[2,1] zz["pre","Estimate"] I clearly don't know how to select elements from the list returned by the summary function. A reproducible version of my code follows: mydata2 <-structure(list(pre = c(71.3302299440613, 86.2703384845455, 120.941698468568, 80.9020778388552, 84.9927752038908, 77.9108032451793, 111.007107108483, 93.288442414475, 126.097826796255, 111.63734644637), post = c(45.9294556667686, 114.661937978585, 138.501558726477, 55.355775963925, 97.7906200355594, 71.1008233796004, 149.308274695789, 122.828428213951, 143.690814568562, 116.607579975539)), class = "data.frame", row.names = c(NA, -10L)) fitchange <- lm(post-pre~pre,data=mydata2) zz <- summary(fitchange)["coefficients"] class(zz) print(zz) zz[[2,1]] zz[2,1] zz["pre","Estimate"] Any help you can offer would be appreciated. John David Sorkin M.D., Ph.D. Professor of Medicine Chief, Biostatistics and Informatics University of Maryland School of Medicine Division of Gerontology and Geriatric Medicine Baltimore VA Medical Center 10 North Greene Street GRECC (BT/18/GR) Baltimore, MD 21201-1524 (Phone) 410-605-7119 (Fax) 410-605-7913 (Please call phone number above prior to faxing) [[alternative HTML version deleted]]
Eric Berger
2019-Feb-22 07:50 UTC
[R] Obtaining values of estimates from a regression; How do I get values from a list?
You have some choices fitchange$coefficients[2] zz$coefficients[2,1] Note that class(zz$coefficients) shows that it is a matrix. HTH, Eric On Fri, Feb 22, 2019 at 9:45 AM Sorkin, John <jsorkin at som.umaryland.edu> wrote:> I am trying to obtain the coefficients from a regression (performed using > lm). I would like to get the value for the slope (i.e. estimate) for pre > from the following regression: > > > fitchange <- lm(post-pre~pre,data=mydata2) > > > I have tried the following without any success: > > > zz <- summary(fitchange)["coefficients"] > class(zz) > print(zz) > zz[[2,1]] > zz[2,1] > zz["pre","Estimate"] > > > I clearly don't know how to select elements from the list returned by the > summary function. > > > A reproducible version of my code follows: > > > mydata2 <-structure(list(pre = c(71.3302299440613, 86.2703384845455, > 120.941698468568, > 80.9020778388552, 84.9927752038908, > 77.9108032451793, 111.007107108483, > 93.288442414475, 126.097826796255, > 111.63734644637), > post = c(45.9294556667686, > 114.661937978585, 138.501558726477, > 55.355775963925, 97.7906200355594, > 71.1008233796004, 149.308274695789, > 122.828428213951, 143.690814568562, > 116.607579975539)), class = "data.frame", > row.names = c(NA, -10L)) > > fitchange <- lm(post-pre~pre,data=mydata2) > zz <- summary(fitchange)["coefficients"] > class(zz) > print(zz) > zz[[2,1]] > zz[2,1] > zz["pre","Estimate"] > > > Any help you can offer would be appreciated. > > > > > > > John David Sorkin M.D., Ph.D. > Professor of Medicine > Chief, Biostatistics and Informatics > University of Maryland School of Medicine Division of Gerontology and > Geriatric Medicine > Baltimore VA Medical Center > 10 North Greene Street > GRECC (BT/18/GR) > Baltimore, MD 21201-1524 > (Phone) 410-605-7119 > (Fax) 410-605-7913 (Please call phone number above prior to faxing) > > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > 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. >[[alternative HTML version deleted]]
Ivan Calandra
2019-Feb-22 07:58 UTC
[R] Obtaining values of estimates from a regression; How do I get values from a list?
I find that the str() function is really helpful to understand how an object is structured, and therefore how to extract part(s) of it. Try for example: str(zz) and it might help you understand why zz$coefficients[2,1] is what you were looking for. HTH Ivan -- Dr. Ivan Calandra TraCEr, laboratory for Traceology and Controlled Experiments MONREPOS Archaeological Research Centre and Museum for Human Behavioural Evolution Schloss Monrepos 56567 Neuwied, Germany +49 (0) 2631 9772-243 https://www.researchgate.net/profile/Ivan_Calandra On February 22, 2019 at 8:50 AM Eric Berger <ericjberger at gmail.com> wrote:> You have some choices > > fitchange$coefficients[2] > > zz$coefficients[2,1] > > Note that class(zz$coefficients) shows that it is a matrix. > > HTH, > Eric > > > On Fri, Feb 22, 2019 at 9:45 AM Sorkin, John <jsorkin at som.umaryland.edu> > wrote: > > > I am trying to obtain the coefficients from a regression (performed using > > lm). I would like to get the value for the slope (i.e. estimate) for pre > > from the following regression: > > > > > > fitchange <- lm(post-pre~pre,data=mydata2) > > > > > > I have tried the following without any success: > > > > > > zz <- summary(fitchange)["coefficients"] > > class(zz) > > print(zz) > > zz[[2,1]] > > zz[2,1] > > zz["pre","Estimate"] > > > > > > I clearly don't know how to select elements from the list returned by the > > summary function. > > > > > > A reproducible version of my code follows: > > > > > > mydata2 <-structure(list(pre = c(71.3302299440613, 86.2703384845455, > > 120.941698468568, > > 80.9020778388552, 84.9927752038908, > > 77.9108032451793, 111.007107108483, > > 93.288442414475, 126.097826796255, > > 111.63734644637), > > post = c(45.9294556667686, > > 114.661937978585, 138.501558726477, > > 55.355775963925, 97.7906200355594, > > 71.1008233796004, 149.308274695789, > > 122.828428213951, 143.690814568562, > > 116.607579975539)), class = "data.frame", > > row.names = c(NA, -10L)) > > > > fitchange <- lm(post-pre~pre,data=mydata2) > > zz <- summary(fitchange)["coefficients"] > > class(zz) > > print(zz) > > zz[[2,1]] > > zz[2,1] > > zz["pre","Estimate"] > > > > > > Any help you can offer would be appreciated. > > > > > > > > > > > > > > John David Sorkin M.D., Ph.D. > > Professor of Medicine > > Chief, Biostatistics and Informatics > > University of Maryland School of Medicine Division of Gerontology and > > Geriatric Medicine > > Baltimore VA Medical Center > > 10 North Greene Street > > GRECC (BT/18/GR) > > Baltimore, MD 21201-1524 > > (Phone) 410-605-7119 > > (Fax) 410-605-7913 (Please call phone number above prior to faxing) > > > > > > [[alternative HTML version deleted]] > > > > ______________________________________________ > > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > > 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. > > > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > 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.[[alternative HTML version deleted]]
Fox, John
2019-Feb-22 13:56 UTC
[R] Obtaining values of estimates from a regression; How do I get values from a list?
Dear John, This seems to be more complicated than it needs to be. One normally uses coef() to extract coefficients from a model object. Thus> coef(fitchange)(Intercept) pre -54.1010158 0.6557661> coef(fitchange)[2]pre 0.6557661 Best, John ------------------------------------------------- John Fox, Professor Emeritus McMaster University Hamilton, Ontario, Canada Web: http::/socserv.mcmaster.ca/jfox> On Feb 22, 2019, at 3:26 AM, Sorkin, John <jsorkin at som.umaryland.edu> wrote: > > Problem solved: > > summary(fitchange)$coefficients[2,1] > > > > John David Sorkin M.D., Ph.D. > Professor of Medicine > Chief, Biostatistics and Informatics > University of Maryland School of Medicine Division of Gerontology and Geriatric Medicine > Baltimore VA Medical Center > 10 North Greene Street > GRECC (BT/18/GR) > Baltimore, MD 21201-1524 > (Phone) 410-605-7119 > (Fax) 410-605-7913 (Please call phone number above prior to faxing) > > > ________________________________ > From: R-help <r-help-bounces at r-project.org> on behalf of Ivan Calandra <calandra at rgzm.de> > Sent: Friday, February 22, 2019 2:58:47 AM > To: r-help at r-project.org > Subject: Re: [R] Obtaining values of estimates from a regression; How do I get values from a list? > > I find that the str() function is really helpful to understand how an object is > structured, and therefore how to extract part(s) of it. > > Try for example: > str(zz) > and it might help you understand why zz$coefficients[2,1] is what you were > looking for. > > HTH > Ivan > > -- > Dr. Ivan Calandra > TraCEr, laboratory for Traceology and Controlled Experiments > MONREPOS Archaeological Research Centre and > Museum for Human Behavioural Evolution > Schloss Monrepos > 56567 Neuwied, Germany > +49 (0) 2631 9772-243 > https://www.researchgate.net/profile/Ivan_Calandra > > On February 22, 2019 at 8:50 AM Eric Berger <ericjberger at gmail.com> wrote: >> You have some choices >> >> fitchange$coefficients[2] >> >> zz$coefficients[2,1] >> >> Note that class(zz$coefficients) shows that it is a matrix. >> >> HTH, >> Eric >> >> >> On Fri, Feb 22, 2019 at 9:45 AM Sorkin, John <jsorkin at som.umaryland.edu> >> wrote: >> >>> I am trying to obtain the coefficients from a regression (performed using >>> lm). I would like to get the value for the slope (i.e. estimate) for pre >>> from the following regression: >>> >>> >>> fitchange <- lm(post-pre~pre,data=mydata2) >>> >>> >>> I have tried the following without any success: >>> >>> >>> zz <- summary(fitchange)["coefficients"] >>> class(zz) >>> print(zz) >>> zz[[2,1]] >>> zz[2,1] >>> zz["pre","Estimate"] >>> >>> >>> I clearly don't know how to select elements from the list returned by the >>> summary function. >>> >>> >>> A reproducible version of my code follows: >>> >>> >>> mydata2 <-structure(list(pre = c(71.3302299440613, 86.2703384845455, >>> 120.941698468568, >>> 80.9020778388552, 84.9927752038908, >>> 77.9108032451793, 111.007107108483, >>> 93.288442414475, 126.097826796255, >>> 111.63734644637), >>> post = c(45.9294556667686, >>> 114.661937978585, 138.501558726477, >>> 55.355775963925, 97.7906200355594, >>> 71.1008233796004, 149.308274695789, >>> 122.828428213951, 143.690814568562, >>> 116.607579975539)), class = "data.frame", >>> row.names = c(NA, -10L)) >>> >>> fitchange <- lm(post-pre~pre,data=mydata2) >>> zz <- summary(fitchange)["coefficients"] >>> class(zz) >>> print(zz) >>> zz[[2,1]] >>> zz[2,1] >>> zz["pre","Estimate"] >>> >>> >>> Any help you can offer would be appreciated. >>> >>> >>> >>> >>> >>> >>> John David Sorkin M.D., Ph.D. >>> Professor of Medicine >>> Chief, Biostatistics and Informatics >>> University of Maryland School of Medicine Division of Gerontology and >>> Geriatric Medicine >>> Baltimore VA Medical Center >>> 10 North Greene Street >>> GRECC (BT/18/GR) >>> Baltimore, MD 21201-1524 >>> (Phone) 410-605-7119 >>> (Fax) 410-605-7913 (Please call phone number above prior to faxing) >>> >>> >>> [[alternative HTML version deleted]] >>> >>> ______________________________________________ >>> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see >>> 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. >>> >> >> [[alternative HTML version deleted]] >> >> ______________________________________________ >> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see >> 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. > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > 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. > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > 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.
Marc Schwartz
2019-Feb-22 14:21 UTC
[R] Obtaining values of estimates from a regression; How do I get values from a list?
Hi, I was just about to reply with coef() when I saw John's reply come through. Note that this is covered in An Introduction to R: https://cran.r-project.org/doc/manuals/r-release/R-intro.html#Generic-functions-for-extracting-model-information If your model object is 'MOD', note that you can use: coef(MOD) and coef(summary(MOD)) depending upon the specific information that you need. John provides the output of coef(fitchange) below. To contrast that with:> coef(summary(fitchange))Estimate Std. Error t value Pr(>|t|) (Intercept) -54.1010158 32.7217093 -1.653368 0.13685562 pre 0.6557661 0.3332963 1.967517 0.08466821 These extractor functions are also covered in some of the "See Also" sections of the help pages for the modeling functions such as ?lm. A key advantage of using the extractor functions, is that they are independent of the underlying object structure. So, while it may be unlikely that the structure of these objects would change in the future, that is not guaranteed. Thus, using the extractor functions is more "future-proof" than directly accessing object components directly. Regards, Marc Schwartz> On Feb 22, 2019, at 8:56 AM, Fox, John <jfox at mcmaster.ca> wrote: > > Dear John, > > This seems to be more complicated than it needs to be. One normally uses coef() to extract coefficients from a model object. Thus > >> coef(fitchange) > (Intercept) pre > -54.1010158 0.6557661 >> coef(fitchange)[2] > pre > 0.6557661 > > Best, > John > > ------------------------------------------------- > John Fox, Professor Emeritus > McMaster University > Hamilton, Ontario, Canada > Web: http::/socserv.mcmaster.ca/jfox > >> On Feb 22, 2019, at 3:26 AM, Sorkin, John <jsorkin at som.umaryland.edu> wrote: >> >> Problem solved: >> >> summary(fitchange)$coefficients[2,1] >> >> >> >> John David Sorkin M.D., Ph.D. >> Professor of Medicine >> Chief, Biostatistics and Informatics >> University of Maryland School of Medicine Division of Gerontology and Geriatric Medicine >> Baltimore VA Medical Center >> 10 North Greene Street >> GRECC (BT/18/GR) >> Baltimore, MD 21201-1524 >> (Phone) 410-605-7119 >> (Fax) 410-605-7913 (Please call phone number above prior to faxing) >> >> >> ________________________________ >> From: R-help <r-help-bounces at r-project.org> on behalf of Ivan Calandra <calandra at rgzm.de> >> Sent: Friday, February 22, 2019 2:58:47 AM >> To: r-help at r-project.org >> Subject: Re: [R] Obtaining values of estimates from a regression; How do I get values from a list? >> >> I find that the str() function is really helpful to understand how an object is >> structured, and therefore how to extract part(s) of it. >> >> Try for example: >> str(zz) >> and it might help you understand why zz$coefficients[2,1] is what you were >> looking for. >> >> HTH >> Ivan >> >> -- >> Dr. Ivan Calandra >> TraCEr, laboratory for Traceology and Controlled Experiments >> MONREPOS Archaeological Research Centre and >> Museum for Human Behavioural Evolution >> Schloss Monrepos >> 56567 Neuwied, Germany >> +49 (0) 2631 9772-243 >> https://www.researchgate.net/profile/Ivan_Calandra >> >> On February 22, 2019 at 8:50 AM Eric Berger <ericjberger at gmail.com> wrote: >>> You have some choices >>> >>> fitchange$coefficients[2] >>> >>> zz$coefficients[2,1] >>> >>> Note that class(zz$coefficients) shows that it is a matrix. >>> >>> HTH, >>> Eric >>> >>> >>> On Fri, Feb 22, 2019 at 9:45 AM Sorkin, John <jsorkin at som.umaryland.edu> >>> wrote: >>> >>>> I am trying to obtain the coefficients from a regression (performed using >>>> lm). I would like to get the value for the slope (i.e. estimate) for pre >>>> from the following regression: >>>> >>>> >>>> fitchange <- lm(post-pre~pre,data=mydata2) >>>> >>>> >>>> I have tried the following without any success: >>>> >>>> >>>> zz <- summary(fitchange)["coefficients"] >>>> class(zz) >>>> print(zz) >>>> zz[[2,1]] >>>> zz[2,1] >>>> zz["pre","Estimate"] >>>> >>>> >>>> I clearly don't know how to select elements from the list returned by the >>>> summary function. >>>> >>>> >>>> A reproducible version of my code follows: >>>> >>>> >>>> mydata2 <-structure(list(pre = c(71.3302299440613, 86.2703384845455, >>>> 120.941698468568, >>>> 80.9020778388552, 84.9927752038908, >>>> 77.9108032451793, 111.007107108483, >>>> 93.288442414475, 126.097826796255, >>>> 111.63734644637), >>>> post = c(45.9294556667686, >>>> 114.661937978585, 138.501558726477, >>>> 55.355775963925, 97.7906200355594, >>>> 71.1008233796004, 149.308274695789, >>>> 122.828428213951, 143.690814568562, >>>> 116.607579975539)), class = "data.frame", >>>> row.names = c(NA, -10L)) >>>> >>>> fitchange <- lm(post-pre~pre,data=mydata2) >>>> zz <- summary(fitchange)["coefficients"] >>>> class(zz) >>>> print(zz) >>>> zz[[2,1]] >>>> zz[2,1] >>>> zz["pre","Estimate"] >>>> >>>> >>>> Any help you can offer would be appreciated. >>>> >>>> >>>> >>>> >>>> >>>> >>>> John David Sorkin M.D., Ph.D. >>>> Professor of Medicine >>>> Chief, Biostatistics and Informatics >>>> University of Maryland School of Medicine Division of Gerontology and >>>> Geriatric Medicine >>>> Baltimore VA Medical Center >>>> 10 North Greene Street >>>> GRECC (BT/18/GR) >>>> Baltimore, MD 21201-1524 >>>> (Phone) 410-605-7119 >>>> (Fax) 410-605-7913 (Please call phone number above prior to faxing) >>>>