首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kruskal-wallis in R

Kruskal-wallis in R
EN

Stack Overflow用户
提问于 2020-10-07 13:52:19
回答 1查看 545关注 0票数 1

我曾尝试执行Kruskal-Wallis测试,但我不确定数据是否正确排序,因此,我不知道结果是否正确。

我仍然不知道如何验证它是正确的,我不知道您是否可以帮助我识别错误。

谢谢。

数据:

有13个样本和138个观察,按月划分。

代码语言:javascript
复制
             ï..meses fajerae
            1     ene-15       0
            2     ene-15       1
            3     ene-15       0
            4     ene-15       0
            5     ene-15       0
            6     ene-15       0
            7     ene-15       1
            8     ene-15       1
            9     ene-15       0
            10    ene-15       1
            11    feb-15       0
            12    feb-15       0
            13    feb-15       0
            14    feb-15       1
            15    feb-15       0
            16    feb-15       1
            17    feb-15       1
            18    feb-15       0
            19    feb-15       0
            20    feb-15       3
            21    feb-15       2
            22    feb-15       2
            23    feb-15       0
            24    feb-15       0
            25    feb-15       1
            26    mar-15       1
            27    mar-15       0
            28    mar-15       3
            29    mar-15       3
            30    mar-15       1
            31    mar-15       4
            32    mar-15       2
            33    mar-15       5
            34    mar-15       0
            35    mar-15       1

这里我做的是Kruskal-Wallis测试。

代码语言:javascript
复制
#kruskal-wallis test
  
setwd("~/")

datos <- read.csv(file.choose(), header = TRUE)
datos


#estructura de los datos
str(datos)
attach(datos)
names(datos)
class(datos)
factor(datos)

这里它无法识别级别,结果为空,我希望它能显示月份、ene-15、Feb-15、Mar-15、11-15等。

代码语言:javascript
复制
levels(datos$ï..meses)

但在表中,它是正确的。

代码语言:javascript
复制
table(datos$ï..meses)

    abr-17 dic-15 dic-16 dic-17 ene-15 ene-16 ene-17 ene-18 feb-15 feb-16 mar-15 
        10     10     10     12     10     10     13     20     15      2     10 
    mar-17 nov-15 
         4     12

我做了同质性测试

代码语言:javascript
复制
# Homocedasticidad: la varianza debe de ser constante entre todos los grupos.
 
 leveneTest(fajerae ~ ï..meses, data = matriz, center = "median")
 
 #Results#
 Levene's Test for Homogeneity of Variance (center = "median")
       Df F value  Pr(>F)  
  group  12  1.8447 0.04784 *
        125                  
  ---
 Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
  Warning message:
  In leveneTest.default(y = y, group = group, ...) : group coerced to factor.

还有Kruskal-Wallis测试,它给了我一个结果,但我不知道如何检查它是否正确。

代码语言:javascript
复制
    kruskal.test(fajerae ~ ï..meses, data = matriz)

#Results# 
Kruskal-Wallis rank sum test
data:  fajerae by ï..meses 
Kruskal-Wallis chi-squared = 24.493, df = 12, p-value = 0.01742
EN

回答 1

Stack Overflow用户

发布于 2020-10-07 15:40:14

问题中的代码可以简化。

1.加载您要使用的非基包。

代码语言:javascript
复制
library(car)

2.使用str检查您的数据结构。

代码语言:javascript
复制
str(datos)
#'data.frame':  35 obs. of  2 variables:
# $ ï..meses  : chr  "ene-15" "ene-15" "ene-15" "ene-15" ...
# $ fajerae   : int  0 1 0 0 0 0 1 1 0 1 ...

名字是ï..meses,它的口音和无意义的圆点相当丑陋,这让它更漂亮。

代码语言:javascript
复制
names(datos)[1] <- "meses"

str的输出中可以知道meses属于"character"类,因此下一条指令应该返回NULL

代码语言:javascript
复制
levels(datos$meses)
#NULL

但如果你想要一个因素,它很简单

代码语言:javascript
复制
datos$meses <- factor(datos$meses)

3 meses的发行版

代码语言:javascript
复制
table(datos$meses)
#
#ene-15 feb-15 mar-15 
#    10     15     10 

4.通过meses组确定同质性。

代码语言:javascript
复制
leveneTest(fajerae ~ meses, data = datos, center = "median")
#Levene's Test for Homogeneity of Variance (center = "median")
#      Df F value  Pr(>F)  
#group  2  3.4584 0.04367 *
#      32                  
#---
#Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

5.最后,库斯考尔-瓦利斯测试。

如果您正在尝试确定这些组是否具有相同的中位数,为什么不先检查箱形和胡须图?请参阅 data

代码语言:javascript
复制
boxplot(fajerae ~ meses, data = datos)

这些组似乎有不同的位置,用非参数检验证实。

代码语言:javascript
复制
kruskal.test(fajerae ~ meses, data = datos)
#
#   Kruskal-Wallis rank sum test
#
#data:  fajerae by meses
#Kruskal-Wallis chi-squared = 6.8633, df = 2, p-value = 0.03233
#

你会问测试是否正确。是的,从这个意义上讲,base R函数经过了无数次的编码和测试,这些年来,无数的用户都在使用它。这是否是预期的是另一个问题,只有你才能回答它。

采用 dput 格式的数据。

代码语言:javascript
复制
datos <-
structure(list(meses = c("ene-15", "ene-15", "ene-15", "ene-15", 
"ene-15", "ene-15", "ene-15", "ene-15", "ene-15", "ene-15", "feb-15", 
"feb-15", "feb-15", "feb-15", "feb-15", "feb-15", "feb-15", "feb-15", 
"feb-15", "feb-15", "feb-15", "feb-15", "feb-15", "feb-15", "feb-15", 
"mar-15", "mar-15", "mar-15", "mar-15", "mar-15", "mar-15", "mar-15", 
"mar-15", "mar-15", "mar-15"), fajerae = c(0L, 1L, 0L, 0L, 0L, 
0L, 1L, 1L, 0L, 1L, 0L, 0L, 0L, 1L, 0L, 1L, 1L, 0L, 0L, 3L, 2L, 
2L, 0L, 0L, 1L, 1L, 0L, 3L, 3L, 1L, 4L, 2L, 5L, 0L, 1L)), 
class = "data.frame", row.names = c("1", "2", "3", "4", "5", 
"6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", 
"18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", 
"29", "30", "31", "32", "33", "34", "35"))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64237979

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档