[R] optimize linear function
Michaell Taylor
mt at michaelltaylor.com
Sat Jun 12 23:15:11 CEST 2004
I am attempting to optimize a regression model's parameters to meet a specific
target for the sum of positive errors over sum of the dependent variable
(minErr below).
I see two courses of action , 1) estimate a linear model then iteratively
reduce the regressors to achieve the desired positive error threshold
(naturally the regressors and predicted values are biased - but this is
acceptable). Were the problem only a single independent variable problem,
this approach would be fairly trivial. But the two variable model proves
more troublesome from an efficiency point of view (efficiency being the mean
negative error for a given minErr).
The second method, which seems more efficient, is to optimize the linear
regressors until the criteria is met. There are several optimizer packages
out there, but none seem particularly well suited to this sort of task.
Any suggestions out there?
=========== Sample Problem = first approach ================
# if we say...
B1 <- .8
B2 <- .2
# then construct some data..
x1 <- rnorm(100,mean=100,sd=20)
x2 <- rnorm(100,mean=10,sd=2)
y <- B1*x1+B2*x2+rnorm(100,mean=5,sd=10)
# normally of course B1 and B2 are unknown to begin with
# linear model (presumably yielding B1=.8 and B2=.2)
m<-lm(y ~ x1+ x2)
# test on summation of positive errors.
e <- resid(m)
minErr <- (sum(ifelse(e<0,0,e))/sum(y))-.03
while (minErr>.03){
Make some adjustment to B1 and B2
minErr <- (sum(ifelse(e<0,0,e))/sum(y))-.03
}
======== Second Approach ===========
construct a function to minimize minErr with beginning values from 'm'.
Any suggestions for approaches greatly appreciated.
More information about the R-help
mailing list