这很奇怪。可能是一个错误。您可能希望将其发送到R邮件列表并查看他们的想法。作为原油的解决方法,你可以重写功能R.下面是它的C代码,从文件family.c在SRC /库/统计/ src目录/:
SEXP logit_mu_eta(SEXP eta)
{
SEXP ans = PROTECT(duplicate(eta));
int i, n = LENGTH(eta);
double *rans = REAL(ans), *reta = REAL(eta);
if (!n || !isReal(eta))
error(_("Argument %s must be a nonempty numeric vector"), "eta");
for (i = 0; i < n; i++) {
double etai = reta[i];
double opexp = 1 + exp(etai);
rans[i] = (etai > THRESH || etai < MTHRESH) ? DOUBLE_EPS :
exp(etai)/(opexp * opexp);
}
UNPROTECT(1);
return ans;
}
THRESH
被定义为30。所以看起来你可以使用此功能取代外部呼叫:
logit_mu_eta<-function(x){
ex<-exp(x)
ans<-ex/(1+ex)^2
ans[abs(x)>30]<-.Machine$double.eps
ans
}
那么你就必须修改任何函数调用此。
随着聊天数据在'SAS'截距是2.6973。有了旧的“R”功能,拦截也是2.6973。然而,在使用'parastat + patsize'时,使用这个新的'R'函数截取值为2.747。明天我会再看一次。 –
如果我只是在旧函数中插入'.Call(stats ::: C_logit_mu_eta,eta,PACKAGE =“stats”)',我仍然会得到2.747。我想知道这是否意味着'C_logit_mu_eta'已经改变了?但我明天需要回来。 –
你能发布一个链接到聊天数据(或其他可重复使用的例子)吗?上面的链接已经死了... –