【问题标题】:Error in model.frame.default : variable lengths differ while running ANOVAmodel.frame.default 中的错误:运行方差分析时可变长度不同
【发布时间】:2019-07-05 02:55:24
【问题描述】:

在我的数据集的一个子集上运行 ANOVA 分析时,会显示此错误:

  Error in model.frame.default(formula = ready$GDPpercapita[ready$cluster ==  :   variable lengths differ (found for 'ready$GDPpercapita[ready$cluster == 3]')

以下是我的代码:

     for(a in 1:6){
  for(b in a+1:6){
    result=paste("GDPpercapita  CLusters ",a,"&",b)
    print( result)
    first<-subset(ready,ready$cluster==a)
    second<-subset(ready,ready$cluster==b)
    x<-summary(aov(first$GDPpercapita~second$GDPpercapita))
    print(x)
  }
}

这是我的数据的一瞥:

enter image description here

错误不是因为循环或创建子集,因为以下代码也返回相同的错误:

x<-summary(aov(ready$GDPpercapita[ready$cluster==1]~ready$GDPpercapita[ready$cluster==2]))
print(x)

列簇是一个因子变量。 我的目标是为所有集群对的每个变量(例如 GDPpercapita)运行 ANOVA。

任何帮助将不胜感激。

【问题讨论】:

    标签: r anova


    【解决方案1】:

    问题是您尝试像 t 检验一样使用 ANOVA。


    ready$GDPpercapita[ready$cluster==1] 返回一个由 GDPpercapita 值组成的向量。

    ready$GDPpercapita[ready$cluster==2] 返回一个不同的 GDPpercapita 值向量。

    您现在有两个向量,每个向量都保存您的响应变量的值。当试图比较两组观察值的平均值时,应使用 2 样本检验(t 检验非常常见)。 ANOVA 是多余的,它实际上是为了比较多个组的平均值。


    代码

    t.test(ready$GDPpercapita[ready$cluster==1], ready$GDPpercapita[ready$cluster==2])

    将比较集群 1 和集群 2 之间的平均 人均 GDP

    由于您尝试比较多个组的平均值 GDPpercapita,因此您可以对每个集群执行此操作(通常称为成对 t 检验)。但是,您必须使用通常不理想的校正(如 Bonferroni)。


    或者,只要使用正确,ANOVA 似乎是一个好的开始。

    aov 函数将公式作为其第一个参数。您使用~(将此运算符视为“by”)和+(此运算符类似于“and”)构建公式。

    要将每个集群的平均 GDPpercapita 与其他集群进行比较,您可以调用:

    aov(GDPpercapita ~ cluster, data = ready)

    将此解读为“在数据集准备就绪中,比较平均 GDPpercapitaBY 变量 cluster 的每个值”。


    您可以像这样添加更多比较:

    aov(GDPpercapita ~ cluster + CurrentHE, data = ready)

    将此解读为“在数据集准备就绪中,比较平均 GDPpercapitaBY 变量 cluster 的每个值 AND 变量 CurrentHE 的每个值。


    请注意,您可能需要进行事后测试,因为 ANOVA 只会告诉您哪些包含的变量(clusterCurrentHE 等)似乎对响应变量。它不会提供特定信息,例如“集群 1 的 GDPpercapita 高于集群 2”。我建议阅读 ANOVA 和 t 检验,以及如何在 R 中使用它们。

    【讨论】:

    • 很好的答案!谢谢
    猜你喜欢
    • 1970-01-01
    • 2019-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多