如何编写 Cramer-Von Mises p 值循环?

How to write Cramer-Von Mises p-values loop?

我有一个名为 matrix_1 的矩阵:

    c1  c2  c3  c4  c5
R1  27  38  94  40  4
R2  69  16  85  2   15
R3  30  35  64  95  6
R4  20  33  77  98  55
R5  20  44  60  33  89
R6  12  88  87  44  38

我想 运行 循环中的双样本 Cramer-Von Mises 检验 (cvm_test()) 以将每列的分布与向量 vector_a 进行比较.我希望函数只是 return p 值。

我正在尝试这个:

library(twosamples)

sapply(1:ncol(matrix_1), function(i) cvm_test(as.vector(matrix_1[,1:i]), vector_a)$cvm_test[2,])

但我收到错误结果:

Error in cvm_test(matrix_1,  : 
  $ operator is invalid for atomic vectors

您可以使用 [[2]] 获取 p 值,例如

sapply(1:ncol(matrix_1), function(i) cvm_test(as.vector(matrix_1[,1:i]), vector_a)[[2]]) #just values as vector

或使用[2],例如

sapply(1:ncol(matrix_1), function(i) cvm_test(as.vector(matrix_1[,1:i]), vector_a)[2]) #named values as vector

在手册中,您可以读到“输出是一个长度为 2 的向量,其顺序为测试统计和 p 值”。