2017-06-08 3 views
1

I den p-Wert extrahieren (DF2), wenn I Modelliste auf diese WeiseWie der Code für die p-Werte ändern (lapply R)

responseList <- names(mtcars)[-c(4,9)] 
modelList    <- lapply(responseList, function(resp) { 
                           mF <- formula(paste(resp, " ~ hp*am")) 
                           aov(mF, data = mtcars) 
                }) 
df2 <- plyr::ldply(modelList , function(x) summary(x)[[1]][["Pr(>F)"]]) 
names(df2) <- c(attr(modelList[[1]]$terms, "term.labels"), "residuals") 

Jedoch definieren, wenn I Modelliste in der folgenden Art und Weise zu definieren, Ich kann das Ergebnis nicht bekommen.

formula <- as.formula(paste0("cbind(", paste(names(mtcars)[-c(4,9)], collapse = ","), ") ~ hp*am")) 
modelList <- aov(formula, data=mtcars) 

So wie kann ich df2 ändern, um die pValues ​​aus der zweiten definierten Funktion für Modellisten zu extrahieren.

df2 <- plyr::ldply(modelList , function(x) summary(x)[[1]][["Pr(>F)"]]) 
    names(df2) <- c(attr(modelList[[1]]$terms, "term.labels"), "residuals") 

Antwort

1

Hier ist einer der möglichen Wege zur Gewinnung von p-Werte aus der zweiten modelList.

formula <- as.formula(paste0("cbind(", paste(names(mtcars)[-c(4,9)], collapse = ","), ") ~ hp*am")) 
modelList2 <- aov(formula, data=mtcars) 

df2 <- plyr::ldply(summary(modelList2), function(x) x[,"Pr(>F)"]) 
names(df2) <- c("", rownames(modelList2[[1]])[-1], "residuals") 
df2 

################ 
          hp   am  hp:am residuals 
1 Response mpg 1.504500e-09 4.748593e-05 0.9806460396  NA 
2 Response cyl 3.974632e-11 2.997217e-04 0.0969093688  NA 
3 Response disp 5.835767e-11 1.164601e-05 0.0178673463  NA 
4 Response drat 9.236405e-04 1.911898e-05 0.8664040719  NA 
5 Response wt 1.348501e-07 2.977105e-06 0.1913211750  NA 
6 Response qsec 2.312064e-07 4.577810e-04 0.1767439339  NA 
7 Response vs 2.060911e-06 9.495711e-01 0.0458841894  NA 
8 Response gear 1.696824e-01 1.405025e-09 0.0002293635  NA 
9 Response carb 3.077405e-07 3.622291e-02 0.1902486095  NA 
Verwandte Themen