Les posteurs les plus actifs de la semaine
Aucun utilisateur |
Sujets les plus vus
Anova simple
2 participants
Page 1 sur 1
Anova simple
bonjour,
ce code pour réaliser un anova simple est-il correct ?.
oneWayAnova <- function () {
Library("multcomp")
Library("abind")
defaults <- list(initial.group = NULL, initial.response = NULL, initial.pairwise = 0)
dialog.values <- getDialog("oneWayAnova", defaults)
initializeDialog(title = gettextRcmdr("One-Way Analysis of Variance"))
UpdateModelNumber()
modelName <- tclVar(paste("AnovaModel.", getRcmdr("modelNumber"),
sep = ""))
modelFrame <- tkframe(top)
model <- ttkentry(modelFrame, width = "20", textvariable = modelName)
groupBox <- variableListBox(top, Factors(), title = gettextRcmdr("Groups (pick one)"),
initialSelection = varPosn(dialog.values$initial.group, "factor"))
responseBox <- variableListBox(top, Numeric(), title = gettextRcmdr("Response Variable (pick one)"),
initialSelection = varPosn(dialog.values$initial.response, "numeric"))
optionsFrame <- tkframe(top)
pairwiseVariable <- tclVar(dialog.values$initial.pairwise)
pairwiseCheckBox <- tkcheckbutton(optionsFrame, variable = pairwiseVariable)
onOK <- function() {
modelValue <- trim.blanks(tclvalue(modelName))
if (!is.valid.name(modelValue)) {
UpdateModelNumber(-1)
errorCondition(recall = oneWayAnova, message = sprintf(gettextRcmdr("\"%s\" is not a valid name."),
modelValue))
return()
}
if (is.element(modelValue, listAOVModels())) {
if ("no" == tclvalue(checkReplace(modelValue, type = gettextRcmdr("Model")))) {
UpdateModelNumber(-1)
tkdestroy(top)
oneWayAnova()
return()
}
}
group <- getSelection(groupBox)
response <- getSelection(responseBox)
closeDialog()
if (length(group) == 0) {
errorCondition(recall = oneWayAnova, message = gettextRcmdr("You must select a groups factor."))
return()
}
if (length(response) == 0) {
errorCondition(recall = oneWayAnova, message = gettextRcmdr("You must select a response variable."))
return()
}
.activeDataSet <- ActiveDataSet()
command <- paste(modelValue, " <- aov(", response, " ~ ",
group, ", data=", .activeDataSet, ")", sep = "")
justDoIt(command)
logger(command)
doItAndPrint(paste("summary(", modelValue, ")", sep = ""))
doItAndPrint(paste("numSummary(", .activeDataSet, "$",
response, " , groups=", .activeDataSet, "$", group,
", statistics=c(\"mean\", \"sd\"))", sep = ""))
activeModel(modelValue)
pairwise <- tclvalue(pairwiseVariable)
putDialog ("oneWayAnova", list (initial.group = group, initial.response = response, initial.pairwise = pairwise))
if (pairwise == 1) {
if (eval(parse(text = paste("length(levels(", .activeDataSet,
"$", group, ")) < 3"))))
Message(message = gettextRcmdr("Factor has fewer than 3 levels; pairwise comparisons omitted."),
type = "warning")
else {
command <- paste(".Pairs <- glht(", modelValue,
", linfct = mcp(", group, " = \"Tukey\"))",
sep = "")
justDoIt(command)
logger(command)
doItAndPrint("summary(.Pairs) # pairwise tests")
doItAndPrint("confint(.Pairs) # confidence intervals")
doItAndPrint("cld(.Pairs) # compact letter display")
justDoIt("old.oma <- par(oma=c(0,5,0,0))")
logger("old.oma <- par(oma=c(0,5,0,0))")
justDoIt("plot(confint(.Pairs))")
logger("plot(confint(.Pairs))")
justDoIt("par(old.oma)")
logger("par(old.oma)")
logger("remove(.Pairs)")
remove(.Pairs, envir = .GlobalEnv)
}
}
tkfocus(CommanderWindow())
}
OKCancelHelp(helpSubject = "anova", model = TRUE, reset = "oneWayAnova")
tkgrid(labelRcmdr(modelFrame, text = gettextRcmdr("Enter name for model: ")),
model, sticky = "w")
tkgrid(modelFrame, sticky = "w", columnspan = 2)
tkgrid(getFrame(groupBox), getFrame(responseBox), sticky = "nw")
tkgrid(labelRcmdr(optionsFrame, text = gettextRcmdr("Pairwise comparisons of means")),
pairwiseCheckBox, sticky = "w")
tkgrid(optionsFrame, sticky = "w", columnspan = 2)
tkgrid(buttonsFrame, columnspan = 2, sticky = "w")
dialogSuffix(rows = 4, columns = 2)
}
merci
ce code pour réaliser un anova simple est-il correct ?.
oneWayAnova <- function () {
Library("multcomp")
Library("abind")
defaults <- list(initial.group = NULL, initial.response = NULL, initial.pairwise = 0)
dialog.values <- getDialog("oneWayAnova", defaults)
initializeDialog(title = gettextRcmdr("One-Way Analysis of Variance"))
UpdateModelNumber()
modelName <- tclVar(paste("AnovaModel.", getRcmdr("modelNumber"),
sep = ""))
modelFrame <- tkframe(top)
model <- ttkentry(modelFrame, width = "20", textvariable = modelName)
groupBox <- variableListBox(top, Factors(), title = gettextRcmdr("Groups (pick one)"),
initialSelection = varPosn(dialog.values$initial.group, "factor"))
responseBox <- variableListBox(top, Numeric(), title = gettextRcmdr("Response Variable (pick one)"),
initialSelection = varPosn(dialog.values$initial.response, "numeric"))
optionsFrame <- tkframe(top)
pairwiseVariable <- tclVar(dialog.values$initial.pairwise)
pairwiseCheckBox <- tkcheckbutton(optionsFrame, variable = pairwiseVariable)
onOK <- function() {
modelValue <- trim.blanks(tclvalue(modelName))
if (!is.valid.name(modelValue)) {
UpdateModelNumber(-1)
errorCondition(recall = oneWayAnova, message = sprintf(gettextRcmdr("\"%s\" is not a valid name."),
modelValue))
return()
}
if (is.element(modelValue, listAOVModels())) {
if ("no" == tclvalue(checkReplace(modelValue, type = gettextRcmdr("Model")))) {
UpdateModelNumber(-1)
tkdestroy(top)
oneWayAnova()
return()
}
}
group <- getSelection(groupBox)
response <- getSelection(responseBox)
closeDialog()
if (length(group) == 0) {
errorCondition(recall = oneWayAnova, message = gettextRcmdr("You must select a groups factor."))
return()
}
if (length(response) == 0) {
errorCondition(recall = oneWayAnova, message = gettextRcmdr("You must select a response variable."))
return()
}
.activeDataSet <- ActiveDataSet()
command <- paste(modelValue, " <- aov(", response, " ~ ",
group, ", data=", .activeDataSet, ")", sep = "")
justDoIt(command)
logger(command)
doItAndPrint(paste("summary(", modelValue, ")", sep = ""))
doItAndPrint(paste("numSummary(", .activeDataSet, "$",
response, " , groups=", .activeDataSet, "$", group,
", statistics=c(\"mean\", \"sd\"))", sep = ""))
activeModel(modelValue)
pairwise <- tclvalue(pairwiseVariable)
putDialog ("oneWayAnova", list (initial.group = group, initial.response = response, initial.pairwise = pairwise))
if (pairwise == 1) {
if (eval(parse(text = paste("length(levels(", .activeDataSet,
"$", group, ")) < 3"))))
Message(message = gettextRcmdr("Factor has fewer than 3 levels; pairwise comparisons omitted."),
type = "warning")
else {
command <- paste(".Pairs <- glht(", modelValue,
", linfct = mcp(", group, " = \"Tukey\"))",
sep = "")
justDoIt(command)
logger(command)
doItAndPrint("summary(.Pairs) # pairwise tests")
doItAndPrint("confint(.Pairs) # confidence intervals")
doItAndPrint("cld(.Pairs) # compact letter display")
justDoIt("old.oma <- par(oma=c(0,5,0,0))")
logger("old.oma <- par(oma=c(0,5,0,0))")
justDoIt("plot(confint(.Pairs))")
logger("plot(confint(.Pairs))")
justDoIt("par(old.oma)")
logger("par(old.oma)")
logger("remove(.Pairs)")
remove(.Pairs, envir = .GlobalEnv)
}
}
tkfocus(CommanderWindow())
}
OKCancelHelp(helpSubject = "anova", model = TRUE, reset = "oneWayAnova")
tkgrid(labelRcmdr(modelFrame, text = gettextRcmdr("Enter name for model: ")),
model, sticky = "w")
tkgrid(modelFrame, sticky = "w", columnspan = 2)
tkgrid(getFrame(groupBox), getFrame(responseBox), sticky = "nw")
tkgrid(labelRcmdr(optionsFrame, text = gettextRcmdr("Pairwise comparisons of means")),
pairwiseCheckBox, sticky = "w")
tkgrid(optionsFrame, sticky = "w", columnspan = 2)
tkgrid(buttonsFrame, columnspan = 2, sticky = "w")
dialogSuffix(rows = 4, columns = 2)
}
merci
jessicadus- Nombre de messages : 2
Date d'inscription : 22/03/2012
Re: Anova simple
euh... Pourquoi tout ça?
Le code pour une ANOVA à un facteur c'est :
res<-aov(Var1~Var2)
anova(res)
où Var1 est la variable quantitative dont on veut comparer la moyenne selon les modalités de var2. Ca au moins c'est sûr, ça marche!
Le code pour une ANOVA à un facteur c'est :
res<-aov(Var1~Var2)
anova(res)
où Var1 est la variable quantitative dont on veut comparer la moyenne selon les modalités de var2. Ca au moins c'est sûr, ça marche!
Ayana- Nombre de messages : 550
Localisation : Londres
Date d'inscription : 18/08/2009
Re: Anova simple
Je sais, mais je doit le coder en tcl tk pour en faire une interface
jessicadus- Nombre de messages : 2
Date d'inscription : 22/03/2012
Re: Anova simple
Une façon simple de vérifier c'est de comparer le résultat obtenu sur plusieurs exemples par cette fonction complexe au résultat obtenu sur les mêmes données avec la fonction aov. Ne pas oublier de tester les cas foireux!
Ayana- Nombre de messages : 550
Localisation : Londres
Date d'inscription : 18/08/2009
Sujets similaires
» relation entre ANOVA et regression simple
» Anova simple et à mesures répétées= diff. significatives?
» Réalisation AFC simple
» Analyse de variance quand les ho d'application non vérifiées
» Régression simple
» Anova simple et à mesures répétées= diff. significatives?
» Réalisation AFC simple
» Analyse de variance quand les ho d'application non vérifiées
» Régression simple
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum