r - R中的克鲁斯卡尔瓦利斯
问题描述
我曾尝试执行 Kruskal-Wallis 检验,但我不确定数据是否正确排序,因此,我不知道结果是否正确。
我仍然不知道如何验证它是否正确,不知道您是否可以帮助我识别错误。
谢谢你。
数据:
有13个样本和138个观测值,按月划分。
ï..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 检验。
#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、Nov-15 等。
levels(datos$ï..meses)
但在表中,它是正确的。
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
我做了同方差性检验
# 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 测试,它给了我一个结果,但我不知道如何检查它是否正确。
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
解决方案
问题中的代码可以简化。
1.加载您要使用的非基础包。
library(car)
2.检查您的数据结构str
。
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
是相当丑陋的,它的口音和废话点,使它更漂亮。
names(datos)[1] <- "meses"
从str
你的输出知道那meses
是类的"character"
,所以下一条指令预计会返回NULL
。
levels(datos$meses)
#NULL
但如果你想要一个因素,那就简单了
datos$meses <- factor(datos$meses)
3的分布meses
:
table(datos$meses)
#
#ene-15 feb-15 mar-15
# 10 15 10
4.通过 的组确定同方差性meses
。
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.最后,Kuskall-Wallis 检验。
如果您要确定各组是否具有相同的中位数,为什么不先检查盒须图呢?查看您的数据。
boxplot(fajerae ~ meses, data = datos)
这些组似乎有不同的位置,通过非参数测试确认。
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
#
你问测试是否正确。是的,从某种意义上说,多年来无数用户对基本 R 函数进行了良好的编码和无数次的测试。这是否是预期的,是一个不同的问题,只有你才能回答。
dput
格式的数据。
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"))
推荐阅读
- ios - 如何在 SwiftUI 中为条件渲染视图添加过渡?
- javascript - express typescript err throw 'any' 警告
- python - 打印带有所需位置参数的嵌套子解析器的帮助
- node.js - 如何使用javascript增量方法增加数据库中的点击次数?
- django-models - 在创建新类 Airport 并在 makemigrations 引发 IntegrityError 后迁移它时对航班进行一些更改之后
- http-status-code-500 - zappa:对“/”的 GET 请求产生了 500 响应代码
- python - 如何在匹配条件的 2 列中获取具有相同值且在其他两列中具有不同值的行
- google-chrome-extension - 后台脚本和隐身后台脚本之间的通信(使用“隐身”时:“拆分”模式)
- c++ - 与同一数据库建立两个连接时出现“mysql服务器已消失”错误
- php - accounts.google.com 在 Laravel 社交名流中重定向您的次数过多