R中p.adjust方法的默认方法是什么?

时间:2016-06-30 18:30:05

标签: r

希望这不是一个愚蠢的问题,但我很难找到R中p.adjust的默认调整方法。?p.adjust中没有关于默认方法的内容。

认为这是Holm方法,但我找不到显示该文档的文档。

3 个答案:

答案 0 :(得分:4)

如果你看?p.adjust,你会看到:

 p.adjust.methods
 # c("holm", "hochberg", "hommel", "bonferroni", "BH", "BY",
 #   "fdr", "none")

因此默认情况下,没有特别说明,是第一个:" holm"。

我认为这个问题与R如何获得默认函数参数值有关。我将展示一些我熟悉的功能:

 density(x, bw = "nrd0", adjust = 1,
         kernel = c("gaussian", "epanechnikov", "rectangular",
                    "triangular", "biweight",
                    "cosine", "optcosine"),
         weights = NULL, window = kernel, width,
         give.Rkern = FALSE,
         n = 512, from, to, cut = 3, na.rm = FALSE, ...)

 ksmooth(x, y, kernel = c("box", "normal"), bandwidth = 0.5,
         range.x = range(x),
         n.points = max(100L, length(x)), x.points)

 loess(formula, data, weights, subset, na.action, model = FALSE,
       span = 0.75, enp.target, degree = 2,
       parametric = FALSE, drop.square = FALSE, normalize = TRUE,
       family = c("gaussian", "symmetric"),
       method = c("loess", "model.frame"),
       control = loess.control(...), ...)

我们看到一些函数参数只有一个默认值,如bw = "nrd0"中的density();有些人有一组价值观,比如

kernel = c("gaussian", "epanechnikov", "rectangular",
                    "triangular", "biweight",
                    "cosine", "optcosine")
density()中的

。嗯,无一例外,除非找到特定的用户输入,否则将使用这些默认值的第一个元素。

答案 1 :(得分:0)

答案似乎是“holm”:

set.seed(1)
ps  <- runif(20, max=.2)
def <- p.adjust(ps)
bon <- p.adjust(ps, method="bonferroni")
hol <- p.adjust(ps, method="holm")
hoc <- p.adjust(ps, method="hochberg")
hom <- p.adjust(ps, method="hommel")
bh  <- p.adjust(ps, method="BH")
by  <- p.adjust(ps, method="BY")
non <- p.adjust(ps, method="none")
lst <- list(bon, hol, hoc, hom, bh, by, non)

for(i in 1:6){
  print(def==lst[[i]])
}
#  [1] FALSE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE
# [10]  TRUE FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
# [19]  TRUE  TRUE
#  [1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
# [11] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
#  [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
# [10] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
# [19] FALSE FALSE
#  [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
# [10] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
# [19] FALSE FALSE
#  [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
# [10] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
# [19] FALSE FALSE
#  [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
# [10] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
# [19] FALSE FALSE

请注意,“holm”是文档中method列出的第一个选项。这通常意味着它是默认值。

答案 2 :(得分:0)

即使使用玩具示例,您也可以查看它。 &#39;冬青&#39;与你没有指定方法相比,它是唯一能给你相同结果的人。

a <- c(0.01, 0.01, 0.001, 0.1)

p.adjust(a, n = 100)
[1] 0.99 0.99 0.10 1.00
p.adjust(a, method = "holm", n = 100)
[1] 0.99 0.99 0.10 1.00# Same as above when no method specified

p.adjust(a, method = "hochberg", n = 100)
[1] 0.98 0.98 0.10 1.00
p.adjust(a, method = "hommel", n = 100)
[1] 0.98 0.98 0.10 1.00
p.adjust(a, method = "bonferroni", n = 100)
[1] 1.0 1.0 0.1 1.0
p.adjust(a, method = "BH", n = 100)
[1] 0.3333333 0.3333333 0.1000000 1.0000000
p.adjust(a, method = "BY", n = 100)
[1] 1.0000000 1.0000000 0.5187378 1.0000000
p.adjust(a, method = "fdr", n = 100)
[1] 0.3333333 0.3333333 0.1000000 1.0000000