Question

I'm working on two datasets, derrived fromm cats, an in-build R dataset.

> cats
    Sex Bwt  Hwt
1     F 2.0  7.0
2     F 2.0  7.4
3     F 2.0  9.5
4     F 2.1  7.2
5     F 2.1  7.3
6     F 2.1  7.6
7     F 2.1  8.1
8     F 2.1  8.2
9     F 2.1  8.3
10    F 2.1  8.5
11    F 2.1  8.7
12    F 2.1  9.8
...
137   M 3.6 13.3
138   M 3.6 14.8
139   M 3.6 15.0
140   M 3.7 11.0
141   M 3.8 14.8
142   M 3.8 16.8
143   M 3.9 14.4
144   M 3.9 20.5

I want to find the 99% Confidence Interval on the difference of means values between the Bwt of Male and Female specimens (Sex == M and Sex == F respectively)

I know that t.test does this, among other things, but if I break up cats to two datasets that contain the Bwt of Males and Females, t.test() complains that the two datasets are not of the same length, which is true. There's only 47 Females in cats, and 87 Males.

Is it doable some other way or am I misinterpreting data by breaking them up?

EDIT: I have a function suggested to me by an Answerer on another Question that gets the CI of means on a dataset, may come in handy:

ci_func <- function(data, ALPHA){
  c(
    mean(data) - qnorm(1-ALPHA/2) * sd(data)/sqrt(length(data)),
    mean(data) + qnorm(1-ALPHA/2) * sd(data)/sqrt(length(data))
    )
}
Was it helpful?

Solution

You should apply the t.test with the formula interface:

t.test(Bwt ~ Sex, data=cats, conf.level=.99)

OTHER TIPS

Alternatively to t.test, if you really only interested in the difference of means, you can use:

DescTools::MeanDiffCI(cats$Bwt, cats$Sex)

which gives something like

 meandiff    lwr.ci    upr.ci 
-23.71474 -71.30611  23.87662 

This is calculated with 999 bootstrapped samples by default. If you want more, you can specify this in the R parameter:

DescTools::MeanDiffCI(cats$Bwt, cats$Sex, R = 1000)
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top