R:独立性测试:访问p值

时间:2018-08-31 00:11:00

标签: r

我已经读过有关使用chisq.test$p.value和使用类似调用从二项式检验中获取p值的知识。但是,这对于independence_test包中的coin无效。

> i1 = independence_test(Response ~ Type)
> i1

    Asymptotic General Independence Test

data:  Response by Type (A, B, C)
maxT = 0.95091, p-value = 0.9265
alternative hypothesis: two.sided

> i1$p.value
Error in i1$p.value : $ operator not defined for this S4 class
> names(i1)
NULL

也无法为其编制索引:

> i1[1]
Error in i1[1] : object of type 'S4' is not subsettable

> i1[[1]]
Error in i1[[1]] : this S4 class is not subsettable

如何获取p值?

2 个答案:

答案 0 :(得分:5)

看来coin提供了一个特殊的功能来从测试功能返回的对象中检索p值:

> result <- independence_test(c(1,2,3) ~ c(4,5,6))
> pvalue(result)
[1] 0.1572992
> 

答案 1 :(得分:2)

K。答:布尔给出了正确的答案。这是我正在写作的过程;希望它会添加一些有用的信息:

打印i1时,它会打印一个p值。因此,打印方法必须知道如何找到它。

这是一个S4函数,因此它使用show()进行打印。要查看您show(i1)时发生的情况,请使用

trace(show, browser, signature = class(i1))

然后打印i1,您会看到类似以下内容:

debug: {
    distname <- switch(class(object@distribution), AsymptNullDistribution = "Asymptotic", 
        ApproxNullDistribution = "Approximative", ExactNullDistribution = "Exact")
    RET <- list(statistic = setNames(object@statistic@teststatistic, 
        nm = "chi-squared"), p.value = object@distribution@pvalue(object@statistic@teststatistic), 
        data.name = varnames(object@statistic), method = paste(distname, 
            object@method))
    if (length(object@distribution@parameters) == 1 && names(object@distribution@parameters) == 
        "df") 
        RET$parameter <- setNames(object@distribution@parameters[[1]], 
            nm = "df")
    if (length(object@estimates) > 0) 
        RET <- c(RET, object@estimates)
    class(RET) <- "htest"
    print(RET)
    invisible(RET)
}

由此您可以看到另一种获取p值的方法,使用

object@distribution@pvalue(object@statistic@teststatistic)

(除了将object替换为i1)。