[R] AIC function and Step function

Dana77 luckyinwind at yahoo.com
Tue Dec 2 01:07:52 CET 2008


Thank you, Kingsford. 

Then I am wondering if there are other ways to write R codes to calculate
the "weights" ? Thanks!


Dana



Kingsford Jones wrote:
> 
> On Sun, Nov 30, 2008 at 5:05 PM, Dana77 <luckyinwind at yahoo.com> wrote:
>>
>>  Thanks for kind help from Steven and Christos last time.  Now I got new
>> problem regarding the codes for calculating the "weights" (w) in "AIC ()
>> function".
>> The original code is as below:
>>  > getAnywhere("logLik.lm")
>> function (object, REML = FALSE, ...)
>>  {
>>    res <- object$residuals
>>    p <- object$rank
>>    N <- length(res)
>>    if (is.null(w <- object$weights)) {
>>        w <- rep.int(1, N)
>>    }    else {
>>        excl <- w == 0
>>        if (any(excl)) {
>>            res <- res[!excl]
>>            N <- length(res)
>>            w <- w[!excl]
>>        }
>>    }
>>
>>  Now my question is, if I use "lm()" function to fit a multiple linear
>> regression model, such as "mod.fit<-lm(formula = Y~ X1 + X2 + X3, data =
>> set1)", what code could I use to extract the "weights" (w) out? or how to
>> calculate the weights(w) shown in above codes?
> 
> 
> mod.fit won't have weights because you didn't specify any through the
> weights argument to lm.  If you had, you could extract them using the
> same technique used in the above code:  w <- mod.fit$weights
> 
> hth,
> 
> Kingsford Jones
> 
> 
> 
> 
> 
> 
>> Thanks for your time and kind
>> help!
>>
>> Dana
>>
>>
>>
>> Steven McKinney wrote:
>>>
>>> Hi Dana,
>>>
>>> Many thanks to Christos Hatzis who sent
>>> me an offline response, pointing out the
>>> new functions that make this much
>>> easier than my last suggestions:
>>> methods() and getAnywhere()
>>>
>>>> methods("extractAIC")
>>> [1] extractAIC.aov*     extractAIC.coxph*   extractAIC.glm*
>>> extractAIC.lm*      extractAIC.negbin*
>>> [6] extractAIC.survreg*
>>>
>>>    Non-visible functions are asterisked
>>>> getAnywhere("extractAIC.coxph")
>>> A single object matching 'extractAIC.coxph' was found
>>> It was found in the following places
>>>   registered S3 method for extractAIC from namespace stats
>>>   namespace:stats
>>> with value
>>>
>>> function (fit, scale, k = 2, ...)
>>> {
>>>     edf <- length(fit$coef)
>>>     loglik <- fit$loglik[length(fit$loglik)]
>>>     c(edf, -2 * loglik + k * edf)
>>> }
>>> <environment: namespace:stats>
>>>>
>>>
>>> Thank you Christos.
>>>
>>>
>>> That said, one of the advantages of getting
>>> the source code is that it has comments that
>>> are stripped out when the code is sourced into R
>>>
>>> e.g. from the command line
>>>
>>>> getAnywhere(AIC.default)
>>> A single object matching 'AIC.default' was found
>>> It was found in the following places
>>>   registered S3 method for AIC from namespace stats
>>>   namespace:stats
>>> with value
>>>
>>> function (object, ..., k = 2)
>>> {
>>>     ll <- if ("stats4" %in% loadedNamespaces())
>>>         stats4:::logLik
>>>     else logLik
>>>     if (length(list(...))) {
>>>         object <- list(object, ...)
>>>         val <- lapply(object, ll)
>>>         val <- as.data.frame(t(sapply(val, function(el) c(attr(el,
>>>             "df"), AIC(el, k = k)))))
>>>         names(val) <- c("df", "AIC")
>>>         Call <- match.call()
>>>         Call$k <- NULL
>>>         row.names(val) <- as.character(Call[-1])
>>>         val
>>>     }
>>>     else AIC(ll(object), k = k)
>>> }
>>> <environment: namespace:stats>
>>>
>>>>From the source file
>>>
>>>
>>> #  File src/library/stats/R/AIC.R
>>> #  Part of the R package, http://www.R-project.org
>>> #
>>> #  This program is free software; you can redistribute it and/or modify
>>> #  it under the terms of the GNU General Public License as published by
>>> #  the Free Software Foundation; either version 2 of the License, or
>>> #  (at your option) any later version.
>>> #
>>> #  This program is distributed in the hope that it will be useful,
>>> #  but WITHOUT ANY WARRANTY; without even the implied warranty of
>>> #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
>>> #  GNU General Public License for more details.
>>> #
>>> #  A copy of the GNU General Public License is available at
>>> #  http://www.r-project.org/Licenses/
>>>
>>> #### Return the object's value of the Akaike Information Criterion
>>> #### (or "An Inf.. Crit..")
>>>
>>> AIC <- function(object, ..., k = 2) UseMethod("AIC")
>>>
>>> ## AIC for logLik objects
>>> AIC.logLik <- function(object, ..., k = 2)
>>>     -2 * c(object) + k * attr(object, "df")
>>>
>>> AIC.default <- function(object, ..., k = 2)
>>> {
>>>     ## AIC for various fitted objects --- any for which there's a
>>> logLik()
>>> method:
>>>     ll <- if("stats4" %in% loadedNamespaces()) stats4:::logLik else
>>> logLik
>>>     if(length(list(...))) {# several objects: produce data.frame
>>>       object <- list(object, ...)
>>>       val <- lapply(object, ll)
>>>       val <- as.data.frame(t(sapply(val,
>>>                                     function(el)
>>>                                     c(attr(el, "df"), AIC(el, k = k)))))
>>>       names(val) <- c("df", "AIC")
>>>         Call <- match.call()
>>>         Call$k <- NULL
>>>       row.names(val) <- as.character(Call[-1])
>>>       val
>>>     } else AIC(ll(object), k = k)
>>> }
>>>
>>>
>>>
>>> Steven McKinney
>>>
>>> Statistician
>>> Molecular Oncology and Breast Cancer Program
>>> British Columbia Cancer Research Centre
>>>
>>> email: smckinney +at+ bccrc +dot+ ca
>>>
>>> tel: 604-675-8000 x7561
>>>
>>> BCCRC
>>> Molecular Oncology
>>> 675 West 10th Ave, Floor 4
>>> Vancouver B.C.
>>> V5Z 1L3
>>> Canada
>>>
>>> ______________________________________________
>>> R-help at 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.
>>>
>>>
>>
>> --
>> View this message in context:
>> http://www.nabble.com/AIC-function-and-Step-function-tp20728043p20764062.html
>> Sent from the R help mailing list archive at Nabble.com.
>>
>> ______________________________________________
>> R-help at 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.
>>
> 
> ______________________________________________
> R-help at 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.
> 
> 

-- 
View this message in context: http://www.nabble.com/AIC-function-and-Step-function-tp20728043p20783448.html
Sent from the R help mailing list archive at Nabble.com.



More information about the R-help mailing list