Les posteurs les plus actifs de la semaine
Aytan
Anova simple Vote_lcapAnova simple Voting_barAnova simple Vote_rcap 
c@ssoulet
Anova simple Vote_lcapAnova simple Voting_barAnova simple Vote_rcap 
Adddd
Anova simple Vote_lcapAnova simple Voting_barAnova simple Vote_rcap 
Eric Wajnberg
Anova simple Vote_lcapAnova simple Voting_barAnova simple Vote_rcap 
gg
Anova simple Vote_lcapAnova simple Voting_barAnova simple Vote_rcap 


Anova simple

Aller en bas

Anova simple Empty Anova simple

Message par jessicadus le 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

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Anova simple Empty Re: Anova simple

Message par Ayana le 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 : 524
Localisation : Londres
Date d'inscription : 18/08/2009

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Anova simple Empty Re: Anova simple

Message par jessicadus le 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

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Anova simple Empty Re: Anova simple

Message par Ayana le 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 : 524
Localisation : Londres
Date d'inscription : 18/08/2009

Voir le profil de l'utilisateur

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