[R] Saving fits (glm, nls) without data
David Winsemius
dwinsemius at comcast.net
Tue Sep 7 21:16:49 CEST 2010
On Sep 7, 2010, at 2:53 PM, Johann Hibschman wrote:
> David Winsemius <dwinsemius at comcast.net> writes:
>
>> On Sep 7, 2010, at 11:02 AM, Johann Hibschman wrote:
>>> Even so, I would prefer to only save the coefficients
>>
>> Have you read through the Value section of glm's help page?
>>
>> ...and
>>
>> ?coef
>
> I have; it's easy to get the coefficients. The part I'm struggling
> with
> is reconstituting an operational glm object given the coefficient
> vector
> and the formula.
>
> Really, I was hoping that someone had already done this work, so I
> could
> stop trying re-create the right kind of term object, while making sure
> it doesn't hold on to a pointer to an environment with a lot of data
> in
> it, etc., etc..
I was assuming you could take all the code work that was already
tested and trim out the non essential code and arguments let it work
on a new class.
>
>> The predict.glm function is visible so you can just type its name to
>> see the code. It appears that the section of the code that does the
>> work is fairly short. This is my nomination for what happens in most
>> cases:
>
>> if (!se.fit) {# not generally invoked with se.fit=TRUE
if (missing(newdata)) { # forgot this clause in first post
>> }
>> else {
>> pred <- predict.lm(object, newdata, se.fit, scale = 1,
>> type = ifelse(type == "link", "response", type),
>> terms = terms, na.action = na.action)
>> switch(type, response = {
>> pred <- family(object)$linkinv(pred)
>> }, link = , terms = )
>> }
>
> I agree. That reduces the problem to confecting a working lm object,
> given a formula and coefficients. Unfortunately, I haven't yet
> figured
> out how to do that.
And I was thinking one would start with the glm object and just set
the unnecessary leaves of the list to NULL.
>
>> So maybe you should write a predict function that would work on a
>> reduced glm object that has a class name of your choosing.
>
> I'm trying to get this to work, but I haven't figured out yet how to
> generate the X matrix properly from the formula and the coefficients.
> I'm sure I can eventually get it, but it's annoying.
I don't think you need to do anything other than construct a proper
newdata argument and feed it and your stripped down object to a
modified predict.sml_glm function. And it could very well be that all
you need to do is rename the predict.glm code and give it the proper
arguments. I do not see a need to recreate an X matrix for the
newdata, since the code to do that is already in predict.lm(). I
suppose I could be wrong, since I have not done it myself. I just got
my employer to buy more memory.
>
> The whole model whereby fit objects keep around their data so you
> don't
> have to provide it on a few calls just seems like a mistake.
>
> -Johann
>
David Winsemius, MD
West Hartford, CT
More information about the R-help
mailing list