Hello R-list,

I am trying to calculate a ridge regression using first the *lm.ridge()* function from the MASS package and then applying the obtained Hoerl Kennard Baldwin (HKB) estimator as a penalty scalar to the *ols()* function provided by Frank Harrell in his Design package.
It looks like this:
> rrk1<-lm.ridge(lnbcpc ~ lntex + lnbeerp + lnwinep + lntemp + pop, subset(aa, Jahr>=1957 & Jahr<=1966)) > f <- ols(lnbcpc ~ lntex + lnbeerp + lnwinep + lntemp + pop, subset(aa, Jahr>=1957 & Jahr<=1966), penalty = rrk$kHKB)
> f

which returns
>Linear Regression Model
>
>ols(formula = lnbcpc ~ lntex + lnbeerp + lnwinep + lntemp + pop,
>    data = subset(aa, Jahr >= 1957 & Jahr <= 1966), penalty = rrk$kHKB)
>
>         n Model L.R.       d.f.         R2      Sigma
>        10      38.59      8.814     0.9839    0.02796
>
>Residuals:
> 1 2 3 4 5 6 7 8 9 10 >-0.014653 -0.002787 0.017515 -0.018145 -0.008757 -0.008035 0.006066 0.045826 -0.001244 -0.015786
>
>Coefficients:
>            Value Std. Error       t Pr(>|t|)
>Intercept  1.5240     3.3034  0.4613   0.8496
>lntex      0.3722     0.2071  1.7975   0.6801
>lnbeerp    0.9085     0.5760  1.5771   0.6964
>lnwinep   -0.1458     0.1874 -0.7781   0.7863
>lntemp    -0.0772     0.1344 -0.5743   0.8240
>pop       -4.1889     1.9286 -2.1720   0.6571
>
>Adjusted R-Squared: 0.2227

All in all beautiful (leaving aside that the results suck). The problem starts when I want to write the obtained coefficients (incl. Std. Errors, t-, and p-values) into a matrix. Via the *f$coef* command I can only access the betas (1st column) and using the *summary(f)* function I get
> summary(f)
>Fehler in summary.Design(f) :
>adjustment values not defined here or with datadist for lntex lnbeerp lnwinep lntemp pop

Does anyone know how I can set the *datadist()* and the *options()* such that I will get access to all coefficients?

I tried:
> options(datadist=NULL)
> f <- ols(lnbcpc ~ lntex + lnbeerp + lnwinep + lntemp + pop, subset(aa, Jahr>=1957 & Jahr<=1966), penalty = rrk$kHKB)
> d <- datadist(f)
but got:
> Fehler in sort.list(unique(y)) : 'x' must be atomic for 'sort.list'
> Have you called 'sort' on a list?

In the R documentation on ?ols() it states concerning the values returned: "the same objects returned from |lm| (/unless |penalty| or |penalty.matrix| are given/ - then an abbreviated list is returned since |lm.pfit| is used as a fitter)..." Unfortunately no information seems to be available on lm.pfit. Does anyone know why the using that function leads to an abbreviated return list? Is there a trick to circumvent that?

Thanks
Benjamin Volland

P.S. Currently using R-version 2.7.1 on a Windows PC.

______________________________________________
R-help@r-project.org mailing list
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.

Reply via email to