[R] Linear Regressions with non-negativity constraint

Aleksandrovic, Aljosa (Pfaeffikon) Aljosa.Aleksandrovic at man.com
Fri May 20 13:51:36 CEST 2016


Hi all,

I hope you are doing well?

I'm currently using lm() to estimate a linear multi-factor (5 factors without intercept) model as follows ...

factor.lm <- lm(y~x1+x2+x3+x4+x5-1, data = data.frame.rbind)

Using nnls(A,b) I estimated the same model, extended by a non-negativity constraint on the 5 independent factors. It works quite well but unfortunately nnls() only returns the x estimates. Is there a way to extract the Std.Errors, t-values, p-valuess and R^2 as well?

Thanks in advance and kind regards, 
Aljosa



Aljosa Aleksandrovic, FRM, CAIA
Senior Quantitative Analyst - Convertibles
aljosa.aleksandrovic at man.com
Tel +41 55 417 76 03

Man Investments (CH) AG
Huobstrasse 3 | 8808 Pfäffikon SZ | Switzerland


-----Original Message-----
From: R-help [mailto:r-help-bounces at r-project.org] On Behalf Of Aleksandrovic, Aljosa (Pfaeffikon)
Sent: Donnerstag, 28. April 2016 15:06
To: Gabor Grothendieck
Cc: r-help at r-project.org
Subject: Re: [R] Linear Regressions with constraint coefficients

Thx a lot Gabor!

Aljosa Aleksandrovic, FRM, CAIA
Quantitative Analyst - Convertibles
aljosa.aleksandrovic at man.com
Tel +41 55 417 76 03

Man Investments (CH) AG
Huobstrasse 3 | 8808 Pfäffikon SZ | Switzerland


-----Original Message-----
From: Gabor Grothendieck [mailto:ggrothendieck at gmail.com]
Sent: Donnerstag, 28. April 2016 14:48
To: Aleksandrovic, Aljosa (Pfaeffikon)
Cc: r-help at r-project.org
Subject: Re: [R] Linear Regressions with constraint coefficients

The nls2 package can be used to get starting values.

On Thu, Apr 28, 2016 at 8:42 AM, Aleksandrovic, Aljosa (Pfaeffikon) <Aljosa.Aleksandrovic at man.com> wrote:
> Hi Gabor,
>
> Thanks a lot for your help!
>
> I tried to implement your nonlinear least squares solver on my data set. I was just wondering about the argument start. If I would like to force all my coefficients to be inside an interval, let’s say, between 0 and 1, what kind of starting values are normally recommended for the start argument (e.g. Using a 4 factor model with b1, b2, b3 and b4, I tried start = list(b1 = 0.5, b2 = 0.5, b3 = 0.5, b4 = 0.5))? I also tried other starting values ... Hence, the outputs are very sensitive to that start argument?
>
> Thanks a lot for your answer in advance!
>
> Kind regards,
> Aljosa
>
>
>
> Aljosa Aleksandrovic, FRM, CAIA
> Quantitative Analyst - Convertibles
> aljosa.aleksandrovic at man.com
> Tel +41 55 417 76 03
>
> Man Investments (CH) AG
> Huobstrasse 3 | 8808 Pfäffikon SZ | Switzerland
>
> -----Original Message-----
> From: Gabor Grothendieck [mailto:ggrothendieck at gmail.com]
> Sent: Dienstag, 26. April 2016 17:59
> To: Aleksandrovic, Aljosa (Pfaeffikon)
> Cc: r-help at r-project.org
> Subject: Re: [R] Linear Regressions with constraint coefficients
>
> This is a quadratic programming problem that you can solve using 
> either a quadratic programming solver with constraints or a general 
> nonlinear solver with constraints.  See 
> https://cran.r-project.org/web/views/Optimization.html
> for more info on what is available.
>
> Here is an example using a nonlinear least squares solver and non-negative bound constraints. The constraint that the coefficients sum to 1 is implied by dividing them by their sum and then dividing the coefficients found by their sum at the end:
>
> # test data
> set.seed(123)
> n <- 1000
> X1 <- rnorm(n)
> X2 <- rnorm(n)
> X3 <- rnorm(n)
> Y <- .2 * X1 + .3 * X2 + .5 * X3 + rnorm(n)
>
> # fit
> library(nlmrt)
> fm <- nlxb(Y ~ (b1 * X1 + b2 * X2 + b3 * X3)/(b1 + b2 + b3),
>      data = list(Y = Y, X1 = X1, X2 = X2, X3 = X3),
>      lower = numeric(3),
>      start = list(b1 = 1, b2 = 2, b3 = 3))
>
> giving the following non-negative coefficients which sum to 1 that are reasonably close to the true values of 0.2, 0.3 and 0.5:
>
>> fm$coefficients / sum(fm$coefficients)
>      b1      b2      b3
> 0.18463 0.27887 0.53650
>
>
> On Tue, Apr 26, 2016 at 8:39 AM, Aleksandrovic, Aljosa (Pfaeffikon) <Aljosa.Aleksandrovic at man.com> wrote:
>> Hi all,
>>
>> I hope you are doing well?
>>
>> I’m currently using the lm() function from the package stats to fit linear multifactor regressions.
>>
>> Unfortunately, I didn’t yet find a way to fit linear multifactor regressions with constraint coefficients? I would like the slope coefficients to be all inside an interval, let’s say, between 0 and 1. Further, if possible, the slope coefficients should add up to 1.
>>
>> Is there an elegant and not too complicated way to do such a constraint regression estimation in R?
>>
>> I would very much appreciate if you could help me with my issue?
>>
>> Thanks a lot in advance and kind regards, Aljosa Aleksandrovic
>>
>>
>>
>> Aljosa Aleksandrovic, FRM, CAIA
>> Quantitative Analyst - Convertibles
>> aljosa.aleksandrovic at man.com
>> Tel +41 55 417 7603
>>
>> Man Investments (CH) AG
>> Huobstrasse 3 | 8808 Pfäffikon SZ | Switzerland
>>
>>
>> -----Original Message-----
>> From: Kevin E. Thorpe [mailto:kevin.thorpe at utoronto.ca]
>> Sent: Dienstag, 26. April 2016 14:35
>> To: Aleksandrovic, Aljosa (Pfaeffikon)
>> Subject: Re: Linear Regressions with constraint coefficients
>>
>> You need to send it to r-help at r-project.org however.
>>
>> Kevin
>>
>> On 04/26/2016 08:32 AM, Aleksandrovic, Aljosa (Pfaeffikon) wrote:
>>> Ok, will do! Thx a lot!
>>>
>>> Please find below my request:
>>>
>>> Hi all,
>>>
>>> I hope you are doing well?
>>>
>>> I’m currently using the lm() function from the package stats to fit linear multifactor regressions.
>>>
>>> Unfortunately, I didn’t yet find a way to fit linear multifactor regressions with constraint coefficients? I would like the slope coefficients to be all inside an interval, let’s say, between 0 and 1. Further, if possible, the slope coefficients should add up to 1.
>>>
>>> Is there an elegant and not too complicated way to do such a constraint regression estimation in R?
>>>
>>> I would very much appreciate if you could help me with my issue?
>>>
>>> Thanks a lot in advance and kind regards, Aljosa Aleksandrovic
>>>
>>>
>>>
>>> Aljosa Aleksandrovic, FRM, CAIA
>>> Quantitative Analyst - Convertibles
>>> aljosa.aleksandrovic at man.com
>>> Tel +41 55 417 7603
>>>
>>> Man Investments (CH) AG
>>> Huobstrasse 3 | 8808 Pfäffikon SZ | Switzerland
>>>
>>>
>>> -----Original Message-----
>>> From: Kevin E. Thorpe [mailto:kevin.thorpe at utoronto.ca]
>>> Sent: Dienstag, 26. April 2016 14:28
>>> To: Aleksandrovic, Aljosa (Pfaeffikon); r-help-owner at r-project.org
>>> Subject: Re: Linear Regressions with constraint coefficients
>>>
>>> I believe I approved a message with such a subject. Perhaps there was another layer that subsequently rejected it after that. I didn't notice any unusual content. Try again, making sure you send the message in plain text only.
>>>
>>> Kevin
>>>
>>> On 04/26/2016 08:16 AM, Aleksandrovic, Aljosa (Pfaeffikon) wrote:
>>>> Do you know where I get help for my issue?
>>>>
>>>> Thanks in advance and kind regards, Aljosa
>>>>
>>>>
>>>> Aljosa Aleksandrovic, FRM, CAIA
>>>> Quantitative Analyst - Convertibles aljosa.aleksandrovic at man.com 
>>>> Tel +41 55 417 7603
>>>>
>>>> Man Investments (CH) AG
>>>> Huobstrasse 3 | 8808 Pfäffikon SZ | Switzerland
>>>>
>>>> -----Original Message-----
>>>> From: R-help [mailto:r-help-bounces at r-project.org] On Behalf Of 
>>>> r-help-owner at r-project.org
>>>> Sent: Dienstag, 26. April 2016 14:10
>>>> To: Aleksandrovic, Aljosa (Pfaeffikon)
>>>> Subject: Linear Regressions with constraint coefficients
>>>>
>>>> The message's content type was not explicitly allowed
>>>>
>>
>>
>> --
>> Kevin E. Thorpe
>> Head of Biostatistics,  Applied Health Research Centre (AHRC) Li Ka 
>> Shing Knowledge Institute of St. Michael's Hospital Assistant 
>> Professor, Dalla Lana School of Public Health University of Toronto
>> email: kevin.thorpe at utoronto.ca  Tel: 416.864.5776  Fax: 416.864.3016
>>
>> This email has been sent by a member of the Man group (“Man”). Man’s parent company, Man Group plc, is registered in England and Wales (company number 08172396) at Riverbank House, 2 Swan  Lane, London, EC4R 3AD.
>> The contents of this email are for the named addressee(s) only. It 
>> contains information which may be confidential and privileged. If you 
>> are not the intended recipient, please notify the sender immediately, 
>> destroy this email and any attachments and do not otherwise disclose 
>> or use them. Email transmission is not a secure method of 
>> communication and Man cannot accept responsibility for the 
>> completeness or accuracy of this email or any attachments. Whilst Man 
>> makes every effort to keep its network free from viruses, it does not 
>> accept responsibility for any computer virus which might be 
>> transferred by way of this email or any attachments. This email does 
>> not constitute a request, offer, recommendation or solicitation of 
>> any kind to buy, subscribe, sell or redeem any investment instruments 
>> or to perform other such transactions of any kind. Man reserves the 
>> right to monitor, record and retain all electronic and telephone 
>> communications through its network in accordance with applicable laws 
>> and regulations. --UwQe9f5k7pI3vplngP
>>
>> ______________________________________________
>> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see 
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide 
>> http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
>
>
>
> --
> Statistics & Software Consulting
> GKX Group, GKX Associates Inc.
> tel: 1-877-GKX-GROUP
> email: ggrothendieck at gmail.com



--
Statistics & Software Consulting
GKX Group, GKX Associates Inc.
tel: 1-877-GKX-GROUP
email: ggrothendieck at gmail.com
______________________________________________
R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.


More information about the R-help mailing list