Obtaining p values from t-test run with a by function

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Obtaining p values from t-test run with a by function

Sorkin, John
Colleagues,
I am trying to retrieve the p values produced by a Student's t-test run using a by function, but can not do so. I can easily get the p value when I run s Student's t-test without a by function. What is the secret to obtaining results returned from a function run within a by function.

An annotated repeatable example (including data) can be found below.
Thank you,
John


# Test data
mydata <- structure(list(Group = structure(c(2L, 1L, 2L, 2L, 1L, 2L, 1L,
           2L, 2L, 1L, 2L, 1L, 2L), .Label = c("EPA", "P"), class = "factor"),
           WtBaseline = c(76.6, 73.8, 77.6, 91.7, 110.3, 121.7, 82.1,
           82.8, 119, 88.4, 75.7, 71.4, 72.1)), class = "data.frame", row.names = c(NA,-13L))

cat("This is what mydata looks like\n")
mydata

result <- by(mydata$WtBaseline,mydata$Group,t.test)
cat("Student's t-test run using by command\n")
cat("Result has results for both groups, EPA and P\n")
result

cat("I can isolate the collective results for group EPA\n")
result[1]
cat("I can isolate the collective results for group P\n")
result[2]

cat("I cant get the p-values for the gruops")
result[1]$p.value
result[2]$p.value

cat("When run without by function, one can get the p value\n")
xxx <- t.test(WtBaseline~Group,data=mydata)
cat("t-test run without by fundtion\n")
xxx
cat("p value isolated from t-test run without by function\n")
xxx$p.value


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]]

______________________________________________
[hidden email] 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.
Reply | Threaded
Open this post in threaded view
|

Re: Obtaining p values from t-test run with a by function

Stephen Ellison
Define a wrapper function for the t test that only returns the p-value?

by(mydata$WtBaseline,mydata$Group, function(...) t.test(...)$p.value)

S Ellison
________________________________________
From: R-help [[hidden email]] on behalf of Sorkin, John [[hidden email]]
Sent: 12 June 2020 22:34
To: [hidden email] ([hidden email])
Subject: [R] Obtaining p values from t-test run with a by function

===============
 EXTERNAL EMAIL
===============

Colleagues,
I am trying to retrieve the p values produced by a Student's t-test run using a by function, but can not do so. I can easily get the p value when I run s Student's t-test without a by function. What is the secret to obtaining results returned from a function run within a by function.

An annotated repeatable example (including data) can be found below.
Thank you,
John


# Test data
mydata <- structure(list(Group = structure(c(2L, 1L, 2L, 2L, 1L, 2L, 1L,
           2L, 2L, 1L, 2L, 1L, 2L), .Label = c("EPA", "P"), class = "factor"),
           WtBaseline = c(76.6, 73.8, 77.6, 91.7, 110.3, 121.7, 82.1,
           82.8, 119, 88.4, 75.7, 71.4, 72.1)), class = "data.frame", row.names = c(NA,-13L))

cat("This is what mydata looks like\n")
mydata

result <- by(mydata$WtBaseline,mydata$Group,t.test)
cat("Student's t-test run using by command\n")
cat("Result has results for both groups, EPA and P\n")
result

cat("I can isolate the collective results for group EPA\n")
result[1]
cat("I can isolate the collective results for group P\n")
result[2]

cat("I cant get the p-values for the gruops")
result[1]$p.value
result[2]$p.value

cat("When run without by function, one can get the p value\n")
xxx <- t.test(WtBaseline~Group,data=mydata)
cat("t-test run without by fundtion\n")
xxx
cat("p value isolated from t-test run without by function\n")
xxx$p.value


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]]

______________________________________________
[hidden email] 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.


==============================================================================================
WARNING - EXTERNAL: This email originated from outside of LGC. Do not click any links or open any attachments
unless you trust the sender and know that the content is safe
==============================================================================================


*******************************************************************
This email and any attachments are confidential. Any use...{{dropped:8}}

______________________________________________
[hidden email] 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.
Reply | Threaded
Open this post in threaded view
|

Re: Obtaining p values from t-test run with a by function

Sarah Goslee
In reply to this post by Sorkin, John
Where you have

result[1]$p.value
result[2]$p.value

You need

result[[1]]$p.value
result[[2]]$p.value

to get the first component of the list.

Sarah

On Fri, Jun 12, 2020 at 5:35 PM Sorkin, John <[hidden email]> wrote:

>
> Colleagues,
> I am trying to retrieve the p values produced by a Student's t-test run using a by function, but can not do so. I can easily get the p value when I run s Student's t-test without a by function. What is the secret to obtaining results returned from a function run within a by function.
>
> An annotated repeatable example (including data) can be found below.
> Thank you,
> John
>
>
> # Test data
> mydata <- structure(list(Group = structure(c(2L, 1L, 2L, 2L, 1L, 2L, 1L,
>            2L, 2L, 1L, 2L, 1L, 2L), .Label = c("EPA", "P"), class = "factor"),
>            WtBaseline = c(76.6, 73.8, 77.6, 91.7, 110.3, 121.7, 82.1,
>            82.8, 119, 88.4, 75.7, 71.4, 72.1)), class = "data.frame", row.names = c(NA,-13L))
>
> cat("This is what mydata looks like\n")
> mydata
>
> result <- by(mydata$WtBaseline,mydata$Group,t.test)
> cat("Student's t-test run using by command\n")
> cat("Result has results for both groups, EPA and P\n")
> result
>
> cat("I can isolate the collective results for group EPA\n")
> result[1]
> cat("I can isolate the collective results for group P\n")
> result[2]
>
> cat("I cant get the p-values for the gruops")
> result[1]$p.value
> result[2]$p.value
>
> cat("When run without by function, one can get the p value\n")
> xxx <- t.test(WtBaseline~Group,data=mydata)
> cat("t-test run without by fundtion\n")
> xxx
> cat("p value isolated from t-test run without by function\n")
> xxx$p.value
>
>
> 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]]
>
> ______________________________________________
> [hidden email] 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.



--
Sarah Goslee (she/her)
http://www.numberwright.com

______________________________________________
[hidden email] 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.
Reply | Threaded
Open this post in threaded view
|

Re: Obtaining p values from t-test run with a by function

Rui Barradas
Hello,

Or in one go with *apply, function '[[':

sapply(result, '[[', 'p.value')
#         EPA            P
#2.564503e-04 4.173480e-06


Hope this helps,

Rui Barradas

Às 23:20 de 12/06/20, Sarah Goslee escreveu:

> Where you have
>
> result[1]$p.value
> result[2]$p.value
>
> You need
>
> result[[1]]$p.value
> result[[2]]$p.value
>
> to get the first component of the list.
>
> Sarah
>
> On Fri, Jun 12, 2020 at 5:35 PM Sorkin, John <[hidden email]> wrote:
>>
>> Colleagues,
>> I am trying to retrieve the p values produced by a Student's t-test run using a by function, but can not do so. I can easily get the p value when I run s Student's t-test without a by function. What is the secret to obtaining results returned from a function run within a by function.
>>
>> An annotated repeatable example (including data) can be found below.
>> Thank you,
>> John
>>
>>
>> # Test data
>> mydata <- structure(list(Group = structure(c(2L, 1L, 2L, 2L, 1L, 2L, 1L,
>>             2L, 2L, 1L, 2L, 1L, 2L), .Label = c("EPA", "P"), class = "factor"),
>>             WtBaseline = c(76.6, 73.8, 77.6, 91.7, 110.3, 121.7, 82.1,
>>             82.8, 119, 88.4, 75.7, 71.4, 72.1)), class = "data.frame", row.names = c(NA,-13L))
>>
>> cat("This is what mydata looks like\n")
>> mydata
>>
>> result <- by(mydata$WtBaseline,mydata$Group,t.test)
>> cat("Student's t-test run using by command\n")
>> cat("Result has results for both groups, EPA and P\n")
>> result
>>
>> cat("I can isolate the collective results for group EPA\n")
>> result[1]
>> cat("I can isolate the collective results for group P\n")
>> result[2]
>>
>> cat("I cant get the p-values for the gruops")
>> result[1]$p.value
>> result[2]$p.value
>>
>> cat("When run without by function, one can get the p value\n")
>> xxx <- t.test(WtBaseline~Group,data=mydata)
>> cat("t-test run without by fundtion\n")
>> xxx
>> cat("p value isolated from t-test run without by function\n")
>> xxx$p.value
>>
>>
>> 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]]
>>
>> ______________________________________________
>> [hidden email] 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.
>
>
>

______________________________________________
[hidden email] 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.