2015-11-27 2 views
0

Я пытаюсь извлечь имена и р-значения для данных эффектов резюме на А в R. Для того, чтобы моя проблемы яснее, резюме AOV выглядит следующим образом:Извлечение имен AOV функции R

Error: subj 
      Df Sum Sq Mean Sq F value Pr(>F) 
Group  1 9.6 9.585 1.403 0.241 
Residuals 58 396.3 6.832    

Error: subj:StimProb 
       Df Sum Sq Mean Sq F value Pr(>F)  
StimProb  1 739.0 739.0 2939.367 <2e-16 *** 
StimProb:Group 1 0.2  0.2 0.688 0.41  
Residuals  58 14.6  0.3      
--- 
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Error: subj:StimVal 
       Df Sum Sq Mean Sq F value Pr(>F) 
StimVal  1 0.126 0.12585 0.558 0.458 
StimVal:Group 1 0.026 0.02609 0.116 0.735 
Residuals  58 13.074 0.22541    

Error: subj:StimProb:StimVal 
         Df Sum Sq Mean Sq F value Pr(>F) 
StimProb:StimVal  1 0.255 0.25512 0.820 0.369 
StimProb:StimVal:Group 1 0.036 0.03586 0.115 0.735 
Residuals    58 18.044 0.31110    

Error: Within 
      Df Sum Sq Mean Sq F value Pr(>F) 
Residuals 480 3283 6.839 

Я пытаюсь получить список имен/pvalues, таких как:

Group = 2.41 
Residuals = NA 
StimProb = <2e-16 
StimProb:Group = 0.41 
...and so forth 

я смог написать код, который извлекает pvalues ​​(который, как представляется, является широко распространенной проблемой, если вы будете искать предыдущие форумы):

# p values 
p <- NA 
for(i in 1:length(amp_aov_3)){ 
    tmp_p <- lapply(amp_aov_3[[i]], function(aov_sum){aov_sum$'Pr(>F)'}) 
    tmp_p <- unlist(tmp_p) 
    p <- c(p, tmp_p) 
} 

Но я не могу понять, где хранятся имена данных эффектов. Я могу получить доступ только к главному заголовку, используя функцию имен (например, «Ошибка: subj»). Любой совет?

Вот дамп переменной amp_aov_3 (т. Е. Сводная информация), чтобы люди могли играть с кодом.

structure(list(`Error: subj` = structure(list(structure(list(
    Df = c(1, 58), `Sum Sq` = c(9.58542761189546, 396.251513143065 
    ), `Mean Sq` = c(9.58542761189546, 6.83192264039767), `F value` = c(1.40303515078115, 
    NA), `Pr(>F)` = c(0.24104729974717, NA)), .Names = c("Df", 
"Sum Sq", "Mean Sq", "F value", "Pr(>F)"), class = c("anova", 
"data.frame"), row.names = c("Group ", "Residuals"))), class = c("summary.aov", 
"listof")), `Error: subj:StimProb` = structure(list(structure(list(
    Df = c(1, 1, 58), `Sum Sq` = c(738.998618354635, 0.173077631291876, 
    14.5820237916664), `Mean Sq` = c(738.998618354635, 0.173077631291876, 
    0.251414203304593), `F value` = c(2939.36702318812, 0.688416282838996, 
    NA), `Pr(>F)` = c(2.16974416659602e-51, 0.410105585145585, 
    NA)), .Names = c("Df", "Sum Sq", "Mean Sq", "F value", "Pr(>F)" 
), class = c("anova", "data.frame"), row.names = c("StimProb  ", 
"StimProb:Group", "Residuals  "))), class = c("summary.aov", 
"listof")), `Error: subj:StimVal` = structure(list(structure(list(
    Df = c(1, 1, 58), `Sum Sq` = c(0.12584744523128, 0.0260871639459221, 
    13.0738086981129), `Mean Sq` = c(0.12584744523128, 0.0260871639459221, 
    0.225410494795049), `F value` = c(0.558303398187847, 0.115731807295137, 
    NA), `Pr(>F)` = c(0.45796319404567, 0.734939632080671, NA 
    )), .Names = c("Df", "Sum Sq", "Mean Sq", "F value", "Pr(>F)" 
), class = c("anova", "data.frame"), row.names = c("StimVal  ", 
"StimVal:Group", "Residuals "))), class = c("summary.aov", 
"listof")), `Error: subj:StimProb:StimVal` = structure(list(structure(list(
    Df = c(1, 1, 58), `Sum Sq` = c(0.255118030657232, 0.035859237207785, 
    18.0436753630829), `Mean Sq` = c(0.255118030657232, 0.035859237207785, 
    0.311097851087636), `F value` = c(0.820057193469219, 0.115266746724276, 
    NA), `Pr(>F)` = c(0.368910019571438, 0.735452223019943, NA 
    )), .Names = c("Df", "Sum Sq", "Mean Sq", "F value", "Pr(>F)" 
), class = c("anova", "data.frame"), row.names = c("StimProb:StimVal  ", 
"StimProb:StimVal:Group", "Residuals    "))), class = c("summary.aov", 
"listof")), `Error: Within` = structure(list(structure(list(Df = 480, 
    `Sum Sq` = 3282.85398452856, `Mean Sq` = 6.83927913443451, 
    `F value` = NA_real_, `Pr(>F)` = NA_real_), .Names = c("Df", 
"Sum Sq", "Mean Sq", "F value", "Pr(>F)"), class = c("anova", 
"data.frame"), row.names = "Residuals")), class = c("summary.aov", 
"listof"))), .Names = c("Error: subj", "Error: subj:StimProb", 
"Error: subj:StimVal", "Error: subj:StimProb:StimVal", "Error: Within" 
), class = "summary.aovlist") 
+0

Возможно, пакет «метла» может помочь. – Jaap

ответ

1

Это мое решение. Эта функция извлекает значения p из функции aov в R.

get_p = function(aov_sum){ 
    p <- NA 
    h <- NA 
    for(i in 1:length(aov_sum)){ 
     # p values 
     tmp_p <- lapply(aov_sum[[i]], function(aov_sum2){aov_sum2$'Pr(>F)'}) 
     tmp_p <- unlist(tmp_p) 
     p <- c(p, tmp_p) 
     # headers 
     tmp_h <- row.names(aov_sum[i][[1]][[1]][1]) 
     h <- c(h, tmp_h) 
    } 
    h <- gsub(" ", "", h) 
    names(p) <- h 
    p <- p[is.na(p)==FALSE] 
    return(p) 
    } 
Смежные вопросы