Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要知道R中predict()和predict.lm()之间的区别_R_Predict - Fatal编程技术网

需要知道R中predict()和predict.lm()之间的区别

需要知道R中predict()和predict.lm()之间的区别,r,predict,R,Predict,我不熟悉R和统计学。所以这个问题可能有点愚蠢,但我想知道R中的predict()和predict.lm()之间是否有区别?我认为它们是相同的,但是如果是,为什么会有两个不同的函数呢?如果predict的第一个参数的类为“lm”,那么就没有区别了。例如,predict根据类的名称被分派到特定于类的版本。通过执行以下命令,可以查看加载的命名空间中存在的predict版本: methods(predict) 我目前加载了大量软件包,因此列表相当长: > methods(predict) [1

我不熟悉R和统计学。所以这个问题可能有点愚蠢,但我想知道R中的
predict()
predict.lm()
之间是否有区别?我认为它们是相同的,但是如果是,为什么会有两个不同的函数呢?

如果
predict
的第一个参数的类为“lm”,那么就没有区别了。例如,
predict
根据类的名称被分派到特定于类的版本。通过执行以下命令,可以查看加载的命名空间中存在的predict版本:

methods(predict)
我目前加载了大量软件包,因此列表相当长:

> methods(predict)
 [1] predict.ar*                predict.areg              
 [3] predict.areg.boot          predict.Arima*            
 [5] predict.arima0*            predict.bj*               
 [7] predict.bs*                predict.bSpline*          
 [9] predict.coxph*             predict.coxph.penal*      
[11] predict.cph*               predict.dataRep           
[13] predict.glm                predict.Glm*              
[15] predict.glmmPQL*           predict.glmtree*          
[17] predict.gls*               predict.Gls*              
[19] predict.gnls*              predict.goodfit*          
[21] predict.HoltWinters*       predict.lda*              
[23] predict.lm                 predict.lme*              
[25] predict.lmList*            predict.lmtree*           
[27] predict.loess*             predict.lqs*              
[29] predict.lrm*               predict.mca*              
[31] predict.mlm                predict.modelparty        
[33] predict.nbSpline*          predict.nlme*             
[35] predict.nls*               predict.npolySpline*      
[37] predict.ns*                predict.ols*              
[39] predict.orm*               predict.party*            
[41] predict.pbSpline*          predict.plm*              
[43] predict.polr*              predict.poly              
[45] predict.polySpline*        predict.ppolySpline*      
[47] predict.ppr*               predict.prcomp*           
[49] predict.princomp*          predict.psm*              
[51] predict.pspline*           predict.qda*              
[53] predict.rlm*               predict.Rq*               
[55] predict.smooth.spline*     predict.smooth.spline.fit*
[57] predict.StructTS*          predict.survreg*          
[59] predict.survreg.penal*     predict.transcan  

正如对
lm
所指出的,这是相同的,因为predict立即分派到
predict.lm
,即

> predict
function (object, ...) 
UseMethod("predict")
但是,一般来说,最好使用泛型函数(如
predict
)而不是直接方法(在本例中为
predict.lm
),因为在泛型函数内部进行一些操作/检查后,可以通过
UseMethod
调用适当的方法。例如,
as.data.frame

> as.data.frame
function (x, row.names = NULL, optional = FALSE, ...) 
{
    if (is.null(x)) 
        return(as.data.frame(list()))
    UseMethod("as.data.frame")
}

如果答案很简单,我可以问什么是“不可见”功能吗?我在底部收到一条消息
不可见的函数标有星号
。这是
.foo
类型的隐藏函数吗?有些函数是“导出”的,有些则不是。如果要查看未从其命名空间导出的代码(假设已加载包含函数的包),请使用
pkg\u name:::fn\u name
getAnywhere(fn\u name)
。(不要把星号放在“fn_name”中。)我认为第二个比三重冒号运算符稍微强大一些,但我不知道
的确切限制。有用
getAnywhere
很不错。另请参见