注意:此问题中有2个巨大的对象,以使问题可重现。您不需要逐行读取对象的声明来回答问题:它们的声明(使用dump("x", file=stdout())
获得)仅提供,以便您可以在R环境中加载对象并检查它们。 / p>
我有班级"nlmrt"
的这个对象(对不起,这很大):
library(nlmrt)
results.nlmrt <-
structure(list(resid = c(-1.873797, -1.082639, -3.128738, -2.065225,
10.036262, 9.038775, -0.557938, -0.0227550000000001, -1.541254,
-0.617675999999999, -2.193645, -0.939828000000002, 0.81962, 0.856692,
1.588436, 1.7647, -10.546283, 3.360661, -0.835847, -0.578092,
-1.147379, -0.930261999999999, -1.252843, -2.1055, 1.347841,
-0.329777, -4.147924, -3.676401, 5.342006, 5.818819, -0.225925,
-0.058781999999999, 0.334197, 0.4505, 1.017727, 0.669381000000001,
1.884993, 1.454699, 1.67084, 1.755269, -0.471676, -0.524057,
-3.373085, -3.278019, -6.219445, -7.161793, -10.737809, -8.693415,
-2.840445, -3.136342, -3.662787, -5.37458, 5.945885, 5.213688,
-3.884115, -3.71474, -6.818322, -6.348495, -11.975686, -8.800068,
5.806859, 5.054232, -2.531185, -2.013974, -3.746896, -3.020429,
-1.304244, -1.113971, -2.777007, -2.837965, -5.07189, -5.658287,
-1.151053, -0.947455, -2.547545, -2.744747, 0.790208, 0.546432,
1.517014, 1.102288, 1.249165, 1.011463, 0.126482000000003, 0.136798000000002,
0.28296, 0.225576, -0.284154, -0.15046, 1.068714, 0.816097, 1.561979,
1.208949, -3.193332, -2.120788, -2.501207, -1.75678, -2.265861,
-1.396114, 6.420019, 7.175985, 3.453049, 4.296639, 1.910447,
2.479853, 1.147497, 1.288324, 5.996762, 5.92161, 3.146104, 3.158998,
1.668787, 1.702539, 2.113205, 1.845771, 1.327114, 1.440344, 0.855292,
7.73017, 7.746381, 4.152009, 4.183986, 2.682163, 2.957113, 2.189862,
2.137862, 6.977142, 6.592122, 1.520254, 1.794167, 10.447364,
3.10818, 5.574112, 5.101422, 1.407211, 1.852486, -0.278430999999999,
-0.0941270000000003, -1.314603, -1.201795, 0.934806999999999,
1.114106, 0.63108, 0.722106, -5.211555, -5.645131, 0.864519,
0.7813243, 0.390436, 0.024733, -1.043325, -2.48613, -1.85254,
-2.045719, -2.385649, -2.223719, -3.935888, -2.720326, -2.658094,
-1.243398, -1.903095, -0.581753, -2.544048, -4.201287, -4.221324,
-4.733332, -3.42192, -7.584243, -5.434314, -2.059307, -1.756377,
-4.803778, -0.601198, -2.301358, -3.166855, -0.628322000000001,
-2.278394, -2.974249, -1.86614, -1.244455, -0.89637, -5.43132,
-5.769175, -8.980463, -10.269705, -1.49086, -1.077036, -2.536101,
-2.301336, -6.2600988, -5.661762, -0.400368, -0.43933, -1.538335,
-2.086426, -5.888978, -6.759651, -0.428561, -0.977354, -3.140401,
-3.14137, -1.224751, -1.418533, -5.543907, -6.148431, -3.763996,
-3.526406, -4.757332, -4.234969, -2.743054, -2.236952, -0.819221,
-0.932174), jacobian = structure(c(-3.17994601613073, -3.17994601613073,
0, -15.8997300798063, 0, -15.8997300798063, -1.58997300806537,
-1.58997300806537, -3.17994601584829, -3.17994601584829, 0, 0,
1.58997300792415, 1.58997300799476, 3.17994601584829, 3.17994601613073,
15.8997300798063, 0, -1.58997300792415, -1.58997300806537, 0,
0, 0, 0, -15.8997300792415, -15.8997300792415, 3.17994601613073,
4.76991902377244, 3.17994601598951, 1.58997300792415, -4.76991902405488,
-4.76991902405488, -3.17994601584829, -3.17994601598951, 0, 0,
-15.8997300798063, 0, 0, 0, -1.58997300792415, -1.58997300792415,
-1.58997300806537, -1.58997300792415, 0, 0, 0, 0, -1.58997300806537,
-3.17994601598951, -15.8997300798063, -15.8997300798063, 1.58997300792415,
1.58997300792415, -1.58997300806537, -3.17994601598951, 0, 0,
-15.8997300798063, 0, 1.58997300792415, 3.17994601584829, -1.58997300806537,
-1.58997300792415, 0, -15.8997300798063, 0, -1.58997300792415,
-1.58997300792415, -1.58997300806537, -15.8997300798063, 0, -1.58997300799476,
-1.58997300799476, -3.17994601598951, -3.17994601598951, 0, 0,
1.58997300792415, 1.58997300806537, 0, 0, 0, 0, 1.58997300799476,
1.58997300799476, 1.58997300799476, 0, 1.58997300799476, 0, 1.58997300792415,
3.17994601598951, -15.8997300798063, 0, -4.76991902391366, -3.17994601598951,
0, -15.8997300798063, 0, 0, 0, 0, -1.58997300792415, -3.17994601584829,
-1.58997300792415, -1.58997300799476, 0, 0, -3.17994601584829,
-1.58997300792415, -1.58997300792415, -1.58997300792415, 0, 0,
3.17994601598951, 1.58997300792415, 1.58997300799476, -15.8997300798063,
0, -3.17994601584829, -3.17994601613073, 0, 0, -1.58997300792415,
-1.58997300792415, 0, -15.8997300798063, -1.58997300806537, 0,
0, 0, 0, 0, 1.58997300799476, 1.58997300799476, 3.17994601613073,
3.17994601584829, 15.8997300798063, 0, 3.17994601598951, 1.58997300792415,
1.58997300799476, 1.58997300799476, 0, -1.58997300792415, 0.158997300803006,
0.174897030874481, 0.476991902391366, 0.476991902409018, 1.58997300799476,
1.58997300806537, -0.158997300785354, 0, 0, 0, 0, 0, 0, 0, 0,
-1.58997300806537, 0, 0.635989203141415, 0.794986504103292, 1.11298110560339,
0, 0, -1.58997300806537, 0.635989203212024, 0, 0.635989203282633,
0.794986503979726, 0, 0, -4.76991902391366, -4.76991902391366,
0, -1.58997300792415, -1.58997300806537, 0, -1.58997300806537,
-1.58997300792415, 0, 0, 0.476991902391366, 0.476991902391366,
0.794986503962074, 0.794986503962074, 1.81256922910131, 2.06696491038612,
-1.58997300799476, -1.58997300799476, -1.58997300806537, -1.58997300806537,
-1.58997300792415, 0, -6.35989203197903, -6.35989203197903, 0,
0, 0, 0, 0, 0, 0, 0, 1.58997300792415, 1.58997300792415, 1.58997300792415,
1.58997300806537, 0.158997300803006, 0.476991902391366, -13.7270193342762,
-12.2017949638612, -15.2522437046911, -30.5044874093822, -30.5044874093822,
-45.7567311146151, -6.10089748193062, -7.62612185234555, -13.7270193340052,
-13.7270193342762, -30.5044874099241, -30.5044874093822, 6.10089748193062,
6.10089748193062, 12.2017949635903, 13.7270193342762, 45.7567311140733,
30.5044874093822, -6.10089748193062, -6.10089748193062, -15.2522437046911,
-15.252243704962, -30.5044874093822, -30.5044874099241, -45.7567311135314,
-45.7567311135314, 13.7270193342762, 15.2522437046911, 9.15134622289594,
9.15134622289594, -18.3026924457919, -18.3026924457919, -10.6765705931754,
-12.2017949637258, -45.7567311140733, 1082.90930303524, -30.5044874093822,
-15.2522437046911, -15.2522437046911, -15.2522437046911, -7.62612185234555,
-6.10089748179516, -7.62612185234555, -7.62612185234555, -15.2522437046911,
-15.2522437046911, -30.5044874093822, -30.5044874099241, -7.62612185234555,
-7.62612185234555, -15.2522437046911, -15.2522437046911, 7.62612185234555,
6.10089748193062, -7.62612185248101, -7.62612185234555, -15.2522437046911,
-15.2522437046911, -30.5044874093822, -15.252243705233, 6.10089748193062,
7.62612185234555, -7.62612185234555, -7.62612185234555, -15.2522437046911,
-30.5044874093822, -4.57567311144797, -4.57567311138023, -7.62612185234555,
-7.62612185234555, -30.5044874093822, -15.2522437046911, -4.57567311144797,
-4.57567311138023, -10.6765705933109, -9.15134622289594, 3.05044874096531,
3.05044874096531, 7.62612185234555, 7.62612185234555, 15.2522437046911,
15.2522437046911, 30.5044874093822, 30.5044874093822, 4.57567311144797,
4.57567311138023, 4.57567311144797, 4.57567311144797, 4.57567311144797,
3.05044874096531, 7.62612185234555, 10.6765705933109, -30.5044874093822,
-30.5044874096531, -13.7270193342762, -13.7270193342762, -30.5044874093822,
-30.5044874093822, -30.5044874093822, -30.5044874093822, -15.2522437046911,
-15.2522437046911, -10.6765705931754, -10.6765705931754, -6.10089748179516,
-4.57567311138023, -15.2522437046911, -15.2522437046911, -12.2017949635903,
-10.6765705931754, -6.10089748193062, -6.10089748193062, 15.252243704962,
15.2522437046911, 10.6765705933109, 9.15134622289594, 6.10089748193062,
-30.5044874093822, -15.2522437046911, -10.6765705931754, -10.6765705934463,
-4.57567311138023, -4.5756731115157, -4.57567311138023, -6.10089748179516,
-30.5044874093822, -30.5044874096531, -6.10089748193062, -4.57567311138023,
-15.2522437046911, -15.2522437046911, -15.2522437046911, -30.5044874096531,
6.10089748186289, 4.57567311144797, 13.7270193342762, 13.7270193342762,
30.5044874096531, 15.2522437046911, 10.6765705933109, 10.6765705933109,
4.57567311144797, 6.10089748193062, -1.52522437055039, -4.5756731115157,
0.457567311138023, 0.610089748189676, 1.98279168160375, 1.83026924456903,
6.10089748193062, 6.10089748193062, -0.305044874069438, 0, -1.52522437041492,
-1.52522437048266, -1.52522437048266, 0, -1.52522437048266, 0,
0, -3.05044874096531, -1.52522437048266, 2.44035899269097, 2.59288142989502,
4.11810580030994, 4.57567311138023, -4.57567311138023, -6.10089748193062,
2.13531411868927, 1.52522437048266, 2.59288142989502, 2.89792630389673,
0, 1.52522437048266, -21.3531411866217, -19.8279168160713, -1.52522437041492,
-4.57567311138023, -7.62612185234555, -3.05044874089758, -7.62612185234555,
-6.10089748179516, 0, -15.2522437046911, 1.52522437048266, 1.67774680755124,
2.59288142975955, 2.59288142975955, 6.68048274270997, 7.47359941527696,
-4.57567311138023, -4.57567311138023, -4.57567311138023, -4.57567311138023,
-4.57567311138023, -4.57567311138023, -25.9288142978665, -25.9288142981374,
0, -1.52522437055039, 0, -1.52522437048266, -3.05044874096531,
-3.05044874110078, 1.52522437048266, 3.05044874096531, 4.5756731115157,
4.57567311138023, 7.62612185234555, 9.15134622289594, 0.762612185241328,
1.22017949637935), .Dim = c(212L, 2L)), feval = 31, jeval = 14,
coefficients = structure(c(0.628931491356317, -0.655631241727379
), .Names = c("ffactor_Ns", "ffactor_Ms")), ssquares = 3107.43103734174,
lower = c(-1, -1), upper = c(1, 1), maskidx = NULL), .Names = c("resid",
"jacobian", "feval", "jeval", "coefficients", "ssquares", "lower",
"upper", "maskidx"), class = "nlmrt")
我需要提取两个参数ffactor_Ns
和ffactor_Ms
的置信区间。如果我print
该对象,我可以在屏幕上看到标准错误,可以用来计算置信区间:
> print(results.nlmrt)
nlmrt class object: x
residual sumsquares = 3107.4 on 212 observations
after 14 Jacobian and 31 function evaluations
name coeff SE tstat pval gradient JSingval
ffactor_Ns 0.628931 0.05673 11.09 0 101.8 1106
ffactor_Ms -0.655631 0.003512 -186.7 0 913.1 67.8
但是,我需要自动计算置信区间:每次运行代码时,我都不能指望屏幕前有人。在您的帮助下I was able to convert the object to an object of class "nls"
,其中有confint
方法:
library(nls2)
nls_object <-
structure(list(m = structure(list(resid = function ()
resid, fitted = function ()
rhs, formula = function ()
form, deviance = function ()
dev, lhs = function ()
lhs, gradient = function ()
.swts * attr(rhs, "gradient"), conv = function ()
{
if (npar == 0)
return(0)
rr <- qr.qty(QR, resid)
sqrt(sum(rr[1L:npar]^2)/sum(rr[-(1L:npar)]^2))
}, incr = function ()
qr.coef(QR, resid), setVarying = function (vary = rep_len(TRUE,
length(useParams)))
{
assign("useParams", if (is.character(vary)) {
temp <- logical(length(useParams))
temp[unlist(ind[vary])] <- TRUE
temp
}
else if (is.logical(vary) && length(vary) != length(useParams))
stop("setVarying : 'vary' length must match length of parameters")
else {
vary
}, envir = thisEnv)
gradCall[[length(gradCall) - 1L]] <<- useParams
if (all(useParams)) {
assign("setPars", setPars.noVarying, envir = thisEnv)
assign("getPars", getPars.noVarying, envir = thisEnv)
assign("getRHS", getRHS.noVarying, envir = thisEnv)
assign("npar", length(useParams), envir = thisEnv)
}
else {
assign("setPars", setPars.varying, envir = thisEnv)
assign("getPars", getPars.varying, envir = thisEnv)
assign("getRHS", getRHS.varying, envir = thisEnv)
assign("npar", length(seq_along(useParams)[useParams]),
envir = thisEnv)
}
}, setPars = function (newPars)
{
setPars(newPars)
assign("resid", .swts * (lhs - assign("rhs", getRHS(), envir = thisEnv)),
envir = thisEnv)
assign("dev", sum(resid^2), envir = thisEnv)
assign("QR", qr(.swts * attr(rhs, "gradient")), envir = thisEnv)
return(QR$rank < min(dim(QR$qr)))
}, getPars = function ()
getPars(), getAllPars = function ()
getPars(), getEnv = function ()
env, trace = function ()
{
cat(format(dev), ": ", format(getPars()))
cat("\n")
}, Rmat = function ()
qr.R(QR), predict = function (newdata = list(), qr = FALSE)
eval(form[[3L]], as.list(newdata), env)), .Names = c("resid",
"fitted", "formula", "deviance", "lhs", "gradient", "conv", "incr",
"setVarying", "setPars", "getPars", "getAllPars", "getEnv", "trace",
"Rmat", "predict"), class = "nlsModel"), call = quote(nls2(formula = model_string,
start = coef(results.nlmrt), algorithm = "brute")), convInfo = structure(list(
isConv = TRUE, finIter = 2L, finTol = NA), .Names = c("isConv",
"finIter", "finTol"))), .Names = c("m", "call", "convInfo"), class = "nls")
不幸的是,confint
方法无效!
> confint(nls_object)
Waiting for profiling to be done...
Error in chol2inv(object$m$Rmat()) :
element (2, 2) is zero, so the inverse cannot be computed
我不知道这个$m$Rmat
方法应该做什么,但它似乎只用一个非零元素计算一些矩阵:
> nls_object$m$Rmat()
[,1] [,2]
[1,] -1028.7 0
[2,] 0.0 0
我在绳子尽头。 SE(以及置信区间)必须隐藏在results.nlrmt
内的某处,否则print
无法显示它。为什么这么难以提取呢?
答案 0 :(得分:2)
感谢@ Roland的评论,我发现解决方案实际上非常简单。要从类"nlmrt"
的对象中提取标准错误, t -statistics或 p -values,请执行以下操作:
library(nlmrt)
goofy <- summary(results.nlmrt)
#standard errors
goofy$SEs
#t-statistics
goofy$tstat
#p-values
goofy$pval
当然,summary(results.nlmrt)
是我尝试过的第一件事,但是因为它本身并没有返回任何屏幕,因为?summary.nlmrt
表示它返回了一个隐形副本nlmrt
对象,我不认为它可以返回我正在寻找的统计数据。