R没有足够的观察,参数被视为容器,而不是内容本身

时间:2018-01-25 21:33:55

标签: r dataframe

所以,我试图在R中进行bartlett或任何测试。它对导入的数据很有用:

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

但不是我的数据:

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

我尝试了所有不同的功能,分配,但问题是参数被视为作为单个对象而不是其内容

如何使用我的数据框进行重击测试?如何使参数成为内容,而不是容器?

1 个答案:

答案 0 :(得分:1)

当你谈论&#34;内容&#34;时,我不知道你的意思。和&#34;容器&#34;。 ?bartlett.test的文档非常简单。您尝试使用formula,因此我们会查看formula参数的说明:

  

formula lhs ~ rhs形式的公式,其中lhs给出数据值,rhs给出相应的组。

这与foster数据的结构相匹配,其中weight是数字,litgen是分类分组。

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

因此,您需要以这种格式存储数据。

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

那是你们所有的团体。如果您想进行成对比较,请将您的数据子集提供给bartlett.test