使用字符向量组件作为R函数的参数



为了找到适合数据集的最佳分布,我需要将可能分布的字符向量中的一个分量(在本例中有意缩短(作为参数传递给ks.test((R函数。因此,我的问题与统计学有关,更普遍地说,与R编程有关。

install.packages("ISLR")
library(ISLR)
attach(Credit)
distr.list <- c("pbeta","pbinom","pcauchy","pchisq")
p.val <- double(length(distr.list))
for (i in 1:length(distr.list))
{
p.val[i] <- ks.test(Income,distr.list[i])$p.value 
}

我得到:

Error in y(sort(x), ...) : argument "shape1" is missing, with no default

这是什么意思?我的错误在哪里?非常感谢。

sessionInfo()
R version 3.6.3 (2020-02-29)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 19041)

使用显式分布函数,

distr.list <- list(
pbeta = function(x) pbeta(x, 1, 2),
pbinom = function(x) pbinom(x, 8, 3),
pcauchy = pcauchy,
pchisq = function(x) pchisq(x, 4)
)
p.val <- double(length(distr.list))
for (i in 1:length(distr.list))
{
p.val[i] <- ks.test(Income,distr.list[[i]])$p.value 
}
# Optional:
names(p.val) <- names(distr.list)

请注意循环中列表的[[索引。本例中的实际参数值是纯捏造的——您需要提供适合您的目的和假设的值。


虽然这将使您的代码运行,但在统计上是不正确的,但这是一组不同的问题。特别是,使用离散分布(如二项式分布(、连续有界分布(如贝塔分布(和连续无界分布(如柯西分布(作为评估给定数据集的参考分布有什么意义?

如本代码所示,将一组分布与数据进行广泛的比较(通过KS等分布测试(通常不是拟合分布的好方法。分布拟合通常是估计一组参数的问题,以确定一系列假设分布模型中的合理分布范围。如何做到这一点是统计数据的重要组成部分。

最新更新