R/splitQuad.R

Defines functions splitQuad

Documented in splitQuad

splitQuad <-
function(y, wt, x, parms, continuous,sumwt) {
    # Center y
    n <- length(y)
    y <- y- sum(y*wt)/sum(wt)

    if (continuous) {
	
	temp <- cumsum(y*wt)[-n]

	left.wt  <- cumsum(wt)[-n]
	right.wt <- sum(wt) - left.wt
	lmean <- temp/left.wt
	rmean <- -temp/right.wt
	goodness <- 2*(left.wt*lmean^2 + right.wt*rmean^2)/sumwt
	list(goodness= goodness, direction=sign(lmean))
	}
    else {
	# Categorical X variable
	ux <- sort(unique(x))
	wtsum <- tapply(wt, x, sum)
	ysum  <- tapply(y*wt, x, sum)
	means <- ysum/wtsum

	ord <- order(means)
	n <- length(ord)
	temp <- cumsum(ysum[ord])[-n]
	left.wt  <- cumsum(wtsum[ord])[-n]
	right.wt <- sum(wt) - left.wt
	lmean <- temp/left.wt
	rmean <- -temp/right.wt
	list(goodness= 2*(left.wt*lmean^2 + right.wt*rmean^2)/sumwt,
	     direction = ux[ord])
	}
    }

Try the rpartScore package in your browser

Any scripts or data that you put into this service are public.

rpartScore documentation built on May 28, 2022, 1:08 a.m.