Построить ANOVA как объект - PullRequest
       1

Построить ANOVA как объект

2 голосов
/ 02 ноября 2011

Я пишу функции для вывода ANOVA в качестве вывода

Я не понял, как вывести объект anova из следующей информации:

# degrees of freedom 
    repdf = 1
    trtdf = 22
    totaldf = 23
 # sum of square    
    ssrep = 10.3
    sstrt = 14567.2
    sstotal = 14577.2

Является ли объект данных фреймом или списком объекта anova или есть другая специальная категория программирования?

Правки: на основе предложения ниже от Бена

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")

Не дает мне, как должна выглядеть str объекта 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

1 Ответ

4 голосов
/ 02 ноября 2011

Создайте объект anova, сохраните его, затем используйте str() для результатов.Из lm.D9 объекта, созданного example("lm"):

> 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 к этому - я этого не сделал, потому что я не был уверен, какой был соответствующий термин ошибки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...