处理 agricolae Kruskal 测试中的关系,R

Posted

技术标签:

【中文标题】处理 agricolae Kruskal 测试中的关系,R【英文标题】:Dealing with ties in agricolae Kruskal test, R 【发布时间】:2016-11-05 16:49:33 【问题描述】:

我正在使用agricolae 包对一些非正常数据运行kruskal.test。一些组具有完全相同的值。 kruskal 测试不能很好地处理这个问题,我收到错误 Error in if (s) : missing value where TRUE/FALSE needed。起初,我认为这是因为所有值都是 0,但是当我将它们都设为相同的大数(以进行测试)时,会出现相同的错误并且函数将 stop(通过循环运行函数)并且不会t 评估第一个绑定变量之外的任何内容。

显然,在这些组上运行统计数据没有任何意义,因为不会有任何区别,但我使用agricolae:kruskal 生成的信息来生成汇总表,并且我需要包含这些变量。我宁愿继续使用这个包,因为它给了我很多有价值的信息。有什么办法可以让它通过绑定变量运行吗?

dput(example)
structure(list(TREATMENT = c("A", "A", "A", "B", "B", "C", "C", 
"C", "D", "D"), W = c(0, 1.6941524646937, 1.524431531984, 0.959282869723864, 
1.45273122733115, 0, 1.57479386520925, 0.421759202661462, 1.34235435984449, 
1.52131484305823), X = c(0, 0.663872820198758, 0.202935807030853, 
0.836223346381214, 0.750767193777965, 1.18128574225979, 2.03622986392828, 
3.56466682539425, 0.919751117364462, 0.917347336682722), Y = c(0, 
0, 0, 0, 0, 0, 0, 0, 0, 0), Z = c(2.1477548118197, 2.0111754022729, 
3.14642815196242, 4.46967452127494, 1.53715421615569, 2.36274861406182, 
2.33262528044302, 2.50970456594739, 2.96088598025103, 2.22841740590261
)), class = "data.frame", row.names = c(NA, 10L), .Names = c("TREATMENT", 
"W", "X", "Y", "Z"))
library(agricolae)

example<-as.data.frame(example)


for(i in 2:(ncol(example)))
  krusk <- kruskal(example[,i],TREATMENT,group=TRUE)
print(krusk)  

【问题讨论】:

您能否提供一个可重现的示例? ***.com/help/mcve***.com/questions/5963269/… @Hack-R 你的愿望就是我的命令。 谢谢。它使尝试帮助和理解问题变得更加容易。 【参考方案1】:
for(i in 2:(ncol(example)))
  if(var(example[,i]) > 0)
  krusk <- kruskal(example[,i],example$TREATMENT,group=TRUE)
  print(krusk)  
  

【讨论】:

哇哦!太感谢了。这行得通!然后我通常会创建一个data frame 并使用rownames(df)&lt;-colnames(example[-1]) 来命名行。你知道是否可以将相同的IF 条件应用于此函数,以便我可以排除在kruskal 测试中已排除的列? @J.Con 好吧,您可以在函数中添加另一行,该函数接受一个名为 tmp 的空对象并将当前列的名称添加到其中(tmp &lt;- c(colnames(example)[i],tmp)),然后将该对象分配给之后的行名。 知道了! tmp 必须先走。所以tmp&lt;-c(tmp,colnames(example[i]))

以上是关于处理 agricolae Kruskal 测试中的关系,R的主要内容,如果未能解决你的问题,请参考以下文章

显示 Kruskal-Wallis 测试等级

在进行 Kruskal-Wallis 之后,我应该进行哪些事后测试?

如何为数据框中的多列循环 Bartlett 测试和 Kruskal 测试? [复制]

Kruskal 测试 kruskal.test.default(e, f) 中的错误:“x”和“g”必须具有相同的长度

如何处理 Matlab 中 Kruskal-Wallis 测试中的缺失值?

R中列表子列表之间的Kruskal-Wallis测试