【问题标题】:R not enough observation, arguments are treated as the container, rather than the content itselfR观察不够,参数被当作容器,而不是内容本身
【发布时间】:2018-07-05 06:07:58
【问题描述】:

所以,我正在尝试在 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

我已经尝试了所有不同的函数、赋值,但问题是参数被视为单个对象而不是其内容

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

【问题讨论】:

    标签: r dataframe


    【解决方案1】:

    当您谈论“内容”和“容器”时,我不知道您的意思。 ?bartlett.test 的文档非常简单。您正在尝试使用formula,因此我们将查看formula 参数的描述:

    formulalhs ~ 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-28
      • 1970-01-01
      • 2012-01-26
      • 2013-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多