如何使chisq.test四位数的十进制数字?

时间:2013-03-25 00:57:47

标签: r

> options(digits=5)
> x<-c(139,138,112,111)
> y<-c(0.3,0.25,0.2,0.25)
> chisq.test(x,p=y)

Chi-squared test for given probabilities

data:  x 
X-squared = 5.1667, df = 3, p-value = 0.16

命令options(digits=4)无法使chisq.test的数字输出四个数字,怎样才能得到p值= 0.15997?

2 个答案:

答案 0 :(得分:4)

您可以直接访问p值并根据需要对其进行舍入:

> chi_sq <- chisq.test(x,p=y)
> chi_sq$p.value
[1] 0.159992
> round(chi_sq$p.value, 5)
[1] 0.15999

答案 1 :(得分:1)

 x <- c(139,138,112,111)
 y <- c(0.3,0.25,0.2,0.25)
 a <- chisq.test(x,p=y)
 print(a,digits=5)

或只是

print(chisq.test(x,p=y),digits=5)

......给出:

    Chi-squared test for given probabilities

data:  x 
X-squared = 5.1667, df = 3, p-value = 0.15999

如果您查看对象chisq.test创建:

str(a)

你会看到它属于班级htest

所以问题是“打印方法如何适用于htest?”

如果你看一下泛型函数?print,你会看到一些类有digits=参数,这就是你所需要的,所以你可以猜测我做的最初建议(正如我所做的那样),但是因为我们看到它是htest类,我们可以通过getAnywhere找到它:

getAnywhere(print.htest)

并且看到它在stats中(无论如何都是明显的第一个猜测),我们也可以通过以下方式看到代码:

stats:::print.htest

因此,最后两个中的任何一个都显示了它的确切功能,以及如何使用print修改其行为,因为您可以看到它肯定具有'digits'参数。如果你真的有心思,你甚至可以编写自己的函数。