将误差添加到依赖值的变换向量

Posted

技术标签:

【中文标题】将误差添加到依赖值的变换向量【英文标题】:add error to a transformed vector of dependent values 【发布时间】:2018-09-21 20:07:42 【问题描述】:

我想模拟(添加错误/rnorm)依赖值的变换向量,但我不知道如何在这样做时保持变换的属性。我做了一个玩具示例来演示我的问题。

我有一个区间观测 (obs) 向量,我对其进行转换以进行建模:

set.seed(123)
sd=0.1
obs=rnorm(10,10,3)  # each value is an age class

#transform observations (in reality something more complex based on cumulative logits)
obs=obs/sum(obs)  

这些进入一个基于转换估计标准偏差的模型:

# model
predict=function(x)
    pred=c(1:10)^x
    pred=pred/sum(pred)
    return(pred)


model= function(x)
    nll=-sum(mapply(dnorm,predict(x),obs,sd))  #sd is estimated in reality
    return(nll)


mypar=optim(0,model,lower=0,upper=2,method='Brent')$par

# from my model I get predictions
out=predict(mypar)

# I would now like to simulate observations like this :
# (in reality I do this for predicted future values)
simu=mapply(rnorm,1,out,sd)
sum(simu)
 [1] 1.208622

但是如果我这样做了,我的模拟当然就不再遵循转换规则了......在这个玩具案例中,simu 的总和应该仍然是 1。

我可以对预测值进行逆变换并对其进行模拟,但我的 sd 不再“合适”了。

我该如何处理?在执行上述操作时,我是否需要以某种方式转换我的 sd(如果需要,如何转换)?还是有其他方法?

【问题讨论】:

【参考方案1】:

这个问题不能被删除,因为它有一个赏金,但我想这样做是因为这个问题是由我的逆变换函数中的一个小错误引起的。现在它工作正常;我可以添加错误,并且观察的总和是一。

【讨论】:

以上是关于将误差添加到依赖值的变换向量的主要内容,如果未能解决你的问题,请参考以下文章

多维多项式回归(最好是 C/C++、Java 或 Scala)

GNN 笔记:图上的傅里叶变换

2021-04-11

2021-04-11

Burrows Wheeler 变换 - 变换向量

将向量从二进制强制转换为“as.numeric”时保留名称?