簡體   English   中英

使用字符向量分量作為 R function 的參數

[英]Using a character vector component as an argument to an R function

為了找到適合數據集的最佳分布,我需要將可能分布的字符向量中的一個分量(在此示例中故意縮短)傳遞給ks.test() R function 作為參數。 所以,我的問題與統計有關,更一般地說,與 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)

注意循環中列表的[[索引。 此示例中的實際參數值純屬虛構——您需要提供適合您的目的和假設的值。


盡管這將使您的代碼運行,但它不會在統計上正確,但這是一組不同的問題。 特別是,使用像二項式這樣的離散分布、像 Beta 這樣的連續有界分布以及像 Cauchy 這樣的連續無界分布作為評估給定數據集的參考分布有什么意義?

將一組分布與數據進行廣泛的比較(通過一些分布測試,如 KS),如此代碼所示,通常不是擬合分布的好方法。 分布擬合通常是估計一組參數以在一系列假設的分布模型中確定合理的分布范圍。 如何做到這一點是統計數據的重要組成部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM