Ich sehe hier zwei Fragen.
1) Was ist der Unterschied zwischen weightsund parmsin rpart?
Wenn Sie sich den Code ansehen, weightswird das Argument an das model.frameObjekt übergeben, sodass es wie in auf jede Beobachtung Ihres Datensatzes angewendet werden sollte lm.
if (is.data.frame(model)) {
m <- model ## <---- m is defined here
model <- FALSE
}
else {
indx <- match(c("formula", "data", "weights", "subset"),
names(Call), nomatch = 0L)
if (indx[1] == 0L)
stop("a 'formula' argument is required")
temp <- Call[c(1L, indx)]
temp$na.action <- na.action
temp[[1L]] <- quote(stats::model.frame) ## <---- passed to model.frame
m <- eval.parent(temp)
}
Terms <- attr(m, "terms")
if (any(attr(Terms, "order") > 1L))
stop("Trees cannot handle interaction terms")
Y <- model.response(m)
wt <- model.weights(m) ## <---- used as observation weights
Auf der anderen Seite parmsgilt für die Klassengewichte, die sich mit unausgeglichener Klassengröße befassen. Ich glaube, das ist es, wonach Sie suchen.
2) Wie verwende parmsich das Argument?
Wenn Sie sich die Beschreibung von ansehen parms:
Für die Aufteilung der Klassifizierung kann die Liste Folgendes enthalten: den Vektor früherer Wahrscheinlichkeiten (Komponente vor), ...
Daher möchten Sie Ihren vorherigen Wahrscheinlichkeitsvektor in einer Liste mit dem Namen "prior" speichern. Die Reihenfolge der Wahrscheinlichkeit sollte genau der Ausgabe von entsprechenlevels(data$y) , wobei yIhre Antwortvariable angegeben wird. Beispielsweise möchten Sie möglicherweise Folgendes ausprobieren:
fit <- rpart(y ~ x1 + x2 + x3, data = data, parms = list(prior = c(0.000066, 1 - 0.000066)))