向依赖值的转换向量添加错误

时间:2018-04-11 19:58:51

标签: r transformation simulate

我想模拟(添加error / 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的总和应该仍然是一个。

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

我该如何处理?在进行上述操作时,我是否需要以某种方式转换我的SD(如果是这样的话)?或者还有其他方法吗?

1 个答案:

答案 0 :(得分:2)

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