是否可以根据已计算的相关性和标准偏差值创建泰勒图?
我正在做模型评估,我已经有了相关性和标准偏差值。我知道已经有一个包 plotrix ,通过给出观察值和建模值,可以创建图表。然而,对于我正在进行的工作类型,通过给出相关性和标准偏差值开始更容易。
我有什么方法可以在R中做到这一点吗?
答案 0 :(得分:3)
没有理由不可能,但作者在编写函数时似乎并不允许这样做。该函数有点长且复杂,但进行计算的部分位于顶部。可以交换该代码并替换它以允许传递摘要统计信息。现在,请记住我要做的是黑客攻击,我只测试了版本3.5-5的plotrix。其他版本可能无效。
这里将创建一个新函数taylor.diagram2
,它从taylor.diagram
获取所有代码,但在额外的if
语句中添加以检查汇总数据列表作为第一个参数< / p>
taylor.diagram2<-taylor.diagram
bl<-as.list(body(taylor.diagram))
cond<-list(
as.name("if"),
quote(is.list(ref) & missing(model)), #condition
quote({R<-ref$R; sd.r<-ref$sd.r; sd.f<-ref$sd.f}), #if true
as.call(c(as.symbol("{"), bl[3:8]))) #else
bl<-c(bl[1:2], as.call(cond), bl[9:length(bl)]) #splice in new code
body(taylor.diagram2)<-as.call(bl) #update function
现在我们可以测试这个功能了。首先,我们将以标准方式做事
#test data
aref<-rnorm(30,sd=2)
amodel1<-aref+rnorm(30)/2
#standard behavior function
taylor.diagram2(aref,amodel1, main="Standard Behavior"))
#summarized data
xx<-list(
R=cor(aref, amodel1, use = "pairwise"),
sd.r=sd(aref),
sd.f=sd(amodel1)
)
#modified behavior
taylor.diagram2(xx, main="Modified Behavior")
因此新的taylor.diagram2
函数可以同时执行这两项操作。如果你传递两个向量,它将执行标准行为。如果您传递一个名为R
,sd.r
和sd.f
的列表,那么它将使用您传入的值执行相同的绘图。此外,{{1} }参数必须为空才能使修改后的版本生效。这意味着如果要设置任何其他参数,则必须使用命名参数而不是位置参数。