如何隔离汇总中的重要性列(aov())以预安装的data warpbreaks为例...
> a<-summary(aov(breaks~wool*tension,data=warpbreaks))
> a
Df Sum Sq Mean Sq F value Pr(>F)
wool 1 451 450.7 3.765 0.058213 .
tension 2 2034 1017.1 8.498 0.000693 ***
wool:tension 2 1003 501.4 4.189 0.021044 *
Residuals 48 5745 119.7
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
> somefunction(a)[,6]
1 .
2 ***
3 *
4 发布于 2013-03-20 17:56:34
# Extract the p-values
pvals <- a[[1]][["Pr(>F)"]]
# Use the symnum function to produce the symbols
sigSymbols <- symnum(pvals, na = FALSE,
cutpoints = c(0, 0.001, 0.01, 0.05, 0.1, 1),
symbols = c("***", "**", "*", ".", " "))这将返回一个具有属性的向量:
> sigSymbols
[1] . *** *
attr(,"legend")
[1] 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1如果不需要legend属性,可以在symnum函数中使用参数legend = FALSE。
发布于 2013-03-20 17:49:29
我找不到/想不到直接的方法,所以我创建了自己的方法。我提取数据帧的最后一列,即Pr(>F)
p = a[[1]][,5]去掉最后一个值,因为它是空的:
p = p[-length(p)]然后算出了代码:
stars = findInterval(p, c(0, 0.001, 0.01, 0.05, 0.1,))
codes = c("***" , "**","*", ".", " ")
codes[stars]当然,如果你愿意,你可以把它放入一个函数中。
get_stars = function(p) {
stars = findInterval(p, c(0, 0.001, 0.01, 0.05, 0.1))
codes = c("***" , "**","*", ".", " ")
codes[stars]
}示例
R> p = c(0.0005, 0.005, 0.025, 0.075, 0.5)
R> get_stars(p)
[1] "***" "**" "*" "." " " 发布于 2015-07-19 03:22:49
上面描述的提取p值的方法对我不起作用,因为我的模型包含了一个误差项。我已经成功地使用了以下内容:
test.summary <- summary(aov(dv ~ iv1 + Error(grouping.factor / iv1 ), data = df))
p <- test.summary[[2]][[1]][["Pr(>F)"]][1]在[["Pr(>F)"]]之后添加[1]只提取p值,而不提取它后面的null值。
此外,@csgillespie,您的代码在向量中的最后一个元素后包含一个额外的逗号,因此R期望在0.1之后有一个参数
stars = findInterval(p, c(0, 0.001, 0.01, 0.05, 0.1,))https://stackoverflow.com/questions/15519882
复制相似问题