Forum de Statistiques
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Le Deal du moment : -50%
Friteuse sans huile – PHILIPS – Airfryer ...
Voir le deal
54.99 €

Anova simple

2 participants

Aller en bas

Anova simple Empty Anova simple

Message par jessicadus Jeu 22 Mar 2012 - 16:59

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

jessicadus

Nombre de messages : 2
Date d'inscription : 22/03/2012

Revenir en haut Aller en bas

Anova simple Empty Re: Anova simple

Message par Ayana Jeu 22 Mar 2012 - 17:27

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!
Ayana
Ayana

Nombre de messages : 550
Localisation : Londres
Date d'inscription : 18/08/2009

Revenir en haut Aller en bas

Anova simple Empty Re: Anova simple

Message par jessicadus Jeu 22 Mar 2012 - 17:30

Je sais, mais je doit le coder en tcl tk pour en faire une interface Smile

jessicadus

Nombre de messages : 2
Date d'inscription : 22/03/2012

Revenir en haut Aller en bas

Anova simple Empty Re: Anova simple

Message par Ayana Lun 26 Mar 2012 - 11:55

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
Ayana

Nombre de messages : 550
Localisation : Londres
Date d'inscription : 18/08/2009

Revenir en haut Aller en bas

Anova simple Empty Re: Anova simple

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum