R 如何以双射方式对称[0,1]^d中的数据集

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”)) 我们可以通过取函数参数所有排列的平均值来对称化函数。尽管这个问题要求进

假设我在[0,1]^d中有一个数据集,我想对其进行符号化,因为“对称化”数据F的重新分区函数应该包含以下断言:

例如,如果d=2,则重划分函数应围绕第一条双扇线对称:

转换应该从数据构建。如果希望尝试使用某些(三变量)数据,可以运行以下R代码(必须首先安装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