Hartun
Hartun

Reputation: 113

R not enough observation, arguments are treated as the container, rather than the content itself

So, I am trying to make bartlett or any test in R. it's working good with imported data:

data(foster, package = "HSAUR")
bartlett.test(weight ~ litgen,data = foster)

But not with my data:

mdat <- matrix(c(2.3,2.2,2.25, 2.2,2.1,2.2, 2.15, 2.15, 2.2, 2.25, 2.15, 2.25), nrow = 3, ncol = 4)
working_df = data.frame(mdat)
bartlett.test(X1 ~ X2, data = working_df)

Error in bartlett.test.default(c(2.3, 2.2, 2.25), c(2.2, 2.1, 2.2)) : 
  there must be at least 2 observations in each group

I have tried all the different functions, assignments but the problem is that the arguments are treated as a single object rather than its content

How can I make a barttlet test with my dataframes? How do make the arguments be the contents, rather than the container?

Upvotes: 0

Views: 2264

Answers (1)

Gregor Thomas
Gregor Thomas

Reputation: 145765

I don't know what you mean when you talk about "contents" and "container". The documentation at ?bartlett.test is pretty straightforward. You're trying to use a formula, so we'll look at the description of the formula argument:

formula a formula of the form lhs ~ rhs where lhs gives the data values and rhs the corresponding groups.

This matches with the structure of the foster data, where weight is numeric, and litgen is a categorical grouper.

head(foster)
  litgen motgen weight
1      A      A   61.5
2      A      A   68.2
3      A      A   64.0
4      A      A   65.0
5      A      A   59.7
6      A      B   55.0

So, you need to put your data in that format.

your_data = data.frame(x = c(mdat), group = c(col(mdat)))
your_data
#       x group
# 1  2.30 1
# 2  2.20 1
# 3  2.25 1
# 4  2.20 2
# 5  2.10 2
# 6  2.20 2
# 7  2.15 3
# 8  2.15 3
# 9  2.20 3
# 10 2.25 4
# 11 2.15 4
# 12 2.25 4

bartlett.test(x ~ group, data = your_data)
#   Bartlett test of homogeneity of variances
# 
# data:  x by group
# Bartlett's K-squared = 0.86607, df = 3, p-value = 0.8336

That's all your groups at once. If you want to do pairwise comparisons, give subsets of you data to bartlett.test.

Upvotes: 1

Related Questions