R 如何以双射方式对称[0,1]^d中的数据集
假设我在[0,1]^d中有一个数据集,我想对其进行符号化,因为“对称化”数据F的重新分区函数应该包含以下断言: 例如,如果d=2,则重划分函数应围绕第一条双扇线对称: 转换应该从数据构建。如果希望尝试使用某些(三变量)数据,可以运行以下R代码(必须首先安装copula包):R 如何以双射方式对称[0,1]^d中的数据集,r,dataset,asymmetric,R,Dataset,Asymmetric,假设我在[0,1]^d中有一个数据集,我想对其进行符号化,因为“对称化”数据F的重新分区函数应该包含以下断言: 例如,如果d=2,则重划分函数应围绕第一条双扇线对称: 转换应该从数据构建。如果希望尝试使用某些(三变量)数据,可以运行以下R代码(必须首先安装copula包): 库(copula) source(system.file(“Rsource”、“AC Liouville.R”、package=“copula”)) 我们可以通过取函数参数所有排列的平均值来对称化函数。尽管这个问题要求进
库(copula)
source(system.file(“Rsource”、“AC Liouville.R”、package=“copula”))
我们可以通过取函数参数所有排列的平均值来对称化函数。尽管这个问题要求进行双射变换,但由于投影丢失了信息,因此无法进行该变换
此处FunSym
输入标量值函数Fun
并输出对称化函数
library(combinat)
FunSym <- function(Fun) {
function(...) mean(unlist(permn(list(...), do.call, what = Fun)))
}
Fun <- function(x, y) x - y # test function
FunS <- FunSym(Fun) # FunS is Fun symmetrized
FunS(1,2) # run FunS for particular arguments
## [1] 0
如果Fun
是向量值,我们可以这样修改FunSym
:
FunSymV <- function(Fun) {
function(...) rowMeans(simplify2array(permn(list(...), do.call, what = Fun)))
}
# test
FunSymV(Fun)(1:3, 4:6)
## [1] 0 0 0
FunSymV“虽然这个问题要求进行双射变换,但由于投影丢失了信息,因此无法进行双射变换。”您能详细说明一下吗?如果P是从函数到相应对称化函数的变换,那么P^2=P,因此P是投影,投影不能反转。
FunSym2 <- function(Fun) {
function(x, y) (Fun(x,y) + Fun(y,x))/2
}
FunS2 <- FunSym2(Fun) # FunS is Fun symmetrized
FunS2(1,2) # run FunS for particular arguments
## [1] 0
FunSymV <- function(Fun) {
function(...) rowMeans(simplify2array(permn(list(...), do.call, what = Fun)))
}
# test
FunSymV(Fun)(1:3, 4:6)
## [1] 0 0 0