首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从EcosimR输出的摘要中提取SES

如何从EcosimR输出的摘要中提取SES
EN

Stack Overflow用户
提问于 2018-06-22 17:23:10
回答 1查看 106关注 0票数 0

我正在尝试从摘要函数的输出中自动提取标准化的效果大小,这样我就可以自动地绘制下游图了。

具体来说,我总结了cooc_null_model(x=co-occurrence_data)的输出,我想输出“标准化效果大小”,这是打印结果中的最终值。

我该怎么做呢?

帮助部分的示例代码:

代码语言:javascript
复制
library(EcoSimR)

## Run the null model 
finchMod <- cooc_null_model(dataWiFinches, algo = "sim9", nReps = 10000, burn_in = 500)

## Summary and plot info 
summary(finchMod)

我本来希望它是这样的:finchMod$Standardized_Effect_Size,但我似乎无法通过这些方法找到目标值。

感谢所有的帮助!!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-22 17:54:32

这是我所做的事情,以找出你兴趣的统计数字,SES。

第一步:

运行模型并检查

代码语言:javascript
复制
class(finchMod)
#[1] "coocnullmod"

str(finchMod)
#List of 13
# $ Obs            : num 3.79
# $ Sim            : num [1:10000] 2.59 2.59 2.59 2.59 2.6 ...
# $ Elapsed.Time   : chr "1.7 secs"
# $ Time.Stamp     : chr "Fri Jun 22 18:35:52 2018"
# $ Metric         : chr "c_score"
# $ Algorithm      : chr "sim9"
# $ N.Reps         : num 10000
# $ SaveSeed       : logi FALSE
# $ RandomSeed     : NULL
# $ Randomized.Data: num [1:17, 1:19] 0 0 0 0 0 0 0 1 0 1 ...
#  ..- attr(*, "dimnames")=List of 2
#  .. ..$ : NULL
#  .. ..$ : chr [1:19] "Cuba" "Hispaniola" "Jamaica" "Puerto_Rico" #...
# $ Data           : num [1:17, 1:19] 0 0 0 0 1 0 0 0 0 1 ...
#  ..- attr(*, "dimnames")=List of 2
#  .. ..$ : NULL
#  .. ..$ : chr [1:19] "Cuba" "Hispaniola" "Jamaica" "Puerto_Rico" #...
# $ burn.in        : num 500
# $ burn.in.metric : num [1:500] 3.68 3.68 3.65 3.65 3.65 ...
# - attr(*, "class")= chr "coocnullmod"

正如你所看到的,没有SES。这意味着它的值由方法summary.coocnullmod或该方法调用的某个函数计算。参见,例如,R FAQ 8.1

第二步:

检查summary.coocnullmod的代码。在R提示符下,没有括号的函数的名称会打印它的正文。

代码语言:javascript
复制
summary.coocnullmod
Error: object 'summary.coocnullmod' not found

所以使用getAnywhere

代码语言:javascript
复制
getAnywhere(summary.coocnullmod)
A single object matching ‘summary.coocnullmod’ was found
It was found in the following places
  registered S3 method for summary from namespace EcoSimR
  namespace:EcoSimR
with value

function (object, ...) 
{
   nullmodObj <- object

   [...etc...]
   [...last code line...]

    cat("Standardized Effect Size (SES): ", format((nullmodObj$Obs - 
        mean(nullmodObj$Sim))/sd(nullmodObj$Sim), digits = 5), 
        "\n")
}
<environment: namespace:EcoSimR>

步骤三:

所以,现在您已经拥有了自动计算SES所需的一切。

代码语言:javascript
复制
ses <- function(object){
  (object$Obs - mean(object$Sim))/sd(object$Sim)
}

ses(finchMod)
#[1] 5.69756
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50992868

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档