我正在编写将ANOVA作为输出输出的函数
我不明白如何从以下信息输出anova对象:
# degrees of freedom
repdf = 1
trtdf = 22
totaldf = 23
# sum of square
ssrep = 10.3
sstrt = 14567.2
sstotal = 14577.2anova对象是dataframe还是list,或者有其他特殊的编程类别?
编辑:基于Ben的以下建议
Source <- c("replication", "Treatments", "Total")
Df <- c(repdf, trtdf, totaldf)
"Sum Sq" <- c(ssrep, sstrt, sstotal)
anovadf <- data.frame(Source, Df, "Sum Sq")
class(anovadf) <- c("anova","data.frame")没有告诉我anova对象的字符串应该是什么样子的?任何进一步的帮助
> str(anovadf)
Classes ‘anova’ and 'data.frame': 3 obs. of 3 variables:
$ Source : Factor w/ 3 levels "Error","replication",..: 2 3 1
$ Df : num 1 22 23
$ X.Sum.Sq.: Factor w/ 1 level "Sum Sq": 1 1 1发布于 2011-11-02 20:31:42
创建一个anova对象,保存它,然后对结果使用str()。从example("lm")创建的lm.D9对象
> str(anova(lm.D9))
Classes ‘anova’ and 'data.frame': 2 obs. of 5 variables:
$ Df : int 1 18
$ Sum Sq : num 0.688 8.729
$ Mean Sq: num 0.688 0.485
$ F value: num 1.42 NA
$ Pr(>F) : num 0.249 NA
- attr(*, "heading")= chr "Analysis of Variance Table\n" "Response: weight"所以这是数据帧的一个特例。构建与示例匹配的数据框a,然后尝试分配类:class(a) <- c("anova","data.frame")。
特别是:
Df <- c(repdf, trtdf, totaldf)
ssq <- c(ssrep, sstrt, sstotal)
anovadf <- data.frame(Df, `Sum Sq`=ssq, `Mean Sq`=ssq/Df, check.names=FALSE)
rownames(anovadf) <- c("replication","treatments","total")
class(anovadf) <- c("anova","data.frame")
anovadf
Df Sum Sq Mean Sq
replication 1 10.3 10.30
treatments 22 14567.2 662.15
total 23 14577.2 633.79您必须稍微注意列名--它们必须用反号保护,并且您必须使用check.names=FALSE,因为它们不是合法的变量名(它们包含空格)。您可以将F统计量和P值添加到这个值中--我没有这样做,因为我不确定合适的误差项是什么。
https://stackoverflow.com/questions/7980279
复制相似问题