From maechler at ada-1.stat.math.ethz.ch  Wed Apr 15 21:44:47 2015
From: maechler at ada-1.stat.math.ethz.ch (Martin Maechler)
Date: Wed, 15 Apr 2015 21:44:47 +0200
Subject: [Rd] RFC: sigma() in package:stats ?
In-Reply-To: <21799.56822.92675.629735@stat.math.ethz.ch>
References: <21799.56822.92675.629735@stat.math.ethz.ch>
Message-ID: <21806.49071.435230.749633@stat.math.ethz.ch>

>>>>> Martin Maechler <maechler at lynne.stat.math.ethz.ch>
>>>>>     on Fri, 10 Apr 2015 16:28:06 +0200 writes:

    > I'm proposing to add something like this to the stats
    > package :
    > ----------------------------------------------------------

    > ### "The" sigma in lm/nls - "like" models:

    > sigma <- function(object, ...) UseMethod("sigma")

    > ## works whenever deviance(), nobs() and coef() do fine:
    > sigma.default <- function (object, use.fallback=TRUE, ...)
    >   sqrt(deviance(object, ...) / 
    >               (nobs(object, use.fallback=use.fallback) - length(coef(object))))

    > ----------------------------------------------------------

    > [Yes, even though I am known to love S4 classes, and also
    > methods, I propose an S3 generic here because it should go
    > along with other typical S3 generics and methods, such as
    > coef(), vcov(), ...  ]

    > The main reason/motivation for (something like) this is to
    > provide encapsulation / abstraction for the following :

    > Different (S3 and S4) fitted model objects use different
    > ways to store the \hat\sigma (or \sqrt{\hat{\sigma^2}} -
    > formally not quite the same !) as part of their object,
    > and if I use methods which compare models, putting these
    > into tables, etc, it is much nicer to use sigma(.) instead
    > of having to use model-specific extractors.

No reaction at all....  which also means no opposition...

so I'll commit this to R-devel (--> R 3.3.0 in about one year),
and probably will live with the consequences :-)

Martin



    > If I'm searching in our large collection of installed
    > packages, I'm seeing

    >> help.search("^sigma$")
    > Help files with alias or concept or title matching ?^sigma$? using regular
    > expression matching:

    > AdaptFitOS::sigma           Extract estimated varying residual variance
    > Aliases: sigma
    > distrEllipse::MVNormParameter-class
    > Paramter of a multivariate normal distribution
    > Aliases: sigma
    > dlmodeler::dlmodeler.fit    Fitting function for a model (MLE, MSE, MAD, sigma)
    > Concepts: sigma
    > elliptic::WeierstrassP      Weierstrass P and related functions
    > Aliases: sigma
    > gcExplorer::sigma           E. coli Sigma Factors and Global Regulators
    > Aliases: sigma
    > investr::Sigma              Extract residual standard error
    > Aliases: Sigma
    > lme4::sigma                 Extract residual standard error
    > Aliases: sigma
    > mbest::predict.mhglm        Prediction
    > Aliases: sigma
    > nlmeU::sigma                Extract scale parameter sigma from a model fit
    > Aliases: sigma
    > numbers::sigma              Divisor Functions
    > Aliases: sigma
    > pmclust::PARAM              A Set of Parameters in Model-Based Clustering.
    > Aliases: SIGMA
    > qualityTools::sigma         Get and set methods
    > Aliases: sigma
    > robustbase::sigma           Extract Residual Standard Error 'Sigma'
    > Aliases: sigma
    > rugarch::uGARCHfit-class    class: Univariate GARCH Fit Class
    > Aliases: sigma
    > shapes::distCholesky        Internal function(s)
    > Aliases: sigma

    > which also shows to the curious why I am making this
    > proposition: I'm co-author of both the  'lme4' and 'robustbase' packages
    > which already make use of this.

    > Note that the default method would already work for
    > lm(), nls(), and (some) glm() model fits.
    > It may still make sense to use a slightly faster more explicit 
    > sigma.ls() method,  but that's not the topic of this
    > conversation, I think.

    > Martin Maechler,
    > ETH Zurich and R Core

    > ______________________________________________
    > R-devel at r-project.org mailing list
    > https://stat.ethz.ch/mailman/listinfo/r-devel



[Rd] RFC: sigma() in package:stats ?
Martin Maechler