Expectativa de Logit inverso da variável aleatória normal

8

Eu tenho uma variável aleatória Y=eX1+eX e eu seiXN(μ,σ2).

Existe uma maneira de calcular E(Y) ? Eu tentei descobrir a integral, mas não fiz muito progresso. Isso é possível?

Henry
fonte
3
Aparentemente, uma solução analítica não é conhecida. A aproximação conhecida é dada neste ligação Stackexchange Matemática: math.stackexchange.com/questions/207861/...
Greenparker
Se , então E [ Y ] = 1μ=0 , para qualquerσ. E[Y]=12σ
wolfies
@wolfies Você poderia dar uma fonte / derivação disso?
26518 Greenparker
2
@Greenparker A distribuição de é cerca de simétrico 0 , nesse caso, QED. Y1/20
whuber
1
Eu fiz isso simbolicamente como uma linha com mathStatica / Mathematica ... mas uma maneira fácil de entender por que deve ser assim: ...... (i) se , então pdf é simétrico em torno de 0. (ii) Considere a transformação Z = Y - 1XN(0,σ2). EntãoZé uma curva simétrica em forma de S em torno deX=0, e E [Z] deve ser igual a 0 (por simetria). ComoY=Z+1Z=Y12=12tanh(x/2)ZX=0 , segue queE[Y]=1Y=Z+12E[Y]=12
wolfies 26/11/18

Respostas:

5

Como já mencionado nos comentários da pergunta e resposta de @Martijn, não parece haver uma solução analítica para E(Y) além do caso especial em que μ=0 que fornece E(Y)=0.5 .

Além disso, pela desigualdade de Jensen , temos que E(Y)=E(f(X))<f(E(X)) se μ>0 e, inversamente, que E(Y)=E(f(X))>f(E(X)) se μ<0 . Desde f(x)=ex1+ex é convexo quandox<0e côncavo quandox>0e a maior parte da massa de densidade normal fica nessas regiões, dependendo do valor deμ.

Existem muitas maneiras de se aproximar de E(Y) , detalhei algumas com as quais estou familiarizado e incluí algum código R no final.

Amostragem

Isso é muito fácil de entender / implementar:

E(Y)=f(x)N(x|μ,σ2)dx1nΣi=1nf(xi)

x1,,xnN(μ,σ2)

Integração numérica

Isso inclui muitos métodos de aproximação da integral acima - no código que usei a função de integração de R, que usa quadratura adaptativa.

Transformação sem cheiro

Veja, por exemplo, O filtro de Kalman sem cheiro para estimativa não-linear de Eric A. Wan e Rudolph van der Merwe, que descreve:

A transformação sem cheiro (UT) é um método para calcular as estatísticas de uma variável aleatória que passa por uma transformação não linear

ff

Esse método é muito mais eficiente em termos computacionais do que a amostragem aleatória. Infelizmente, não consegui encontrar uma implementação R online, por isso não a incluí no código abaixo.

Código

μσf_muf(E(X))E(Y)=E(f(X))samplingintegration

integrate_approx <- function(mu, sigma) {
    f <- function(x) {
        plogis(x) * dnorm(x, mu, sigma)
    }
    int <- integrate(f, lower = -Inf, upper = Inf)
    int$value
}

sampling_approx <- function(mu, sigma, n = 1e6) {
    x <- rnorm(n, mu, sigma)
    mean(plogis(x))
}

mu <- seq(-2.0, 2.0, by = 0.5)

data <- data.frame(mu = mu,
                   sigma = 3.14,
                   f_mu = plogis(mu),
                   sampling = NA,
                   integration = NA)

for (i in seq_len(nrow(data))) {
    mu <- data$mu[i]
sigma <- data$sigma[i]
    data$sampling[i] <- sampling_approx(mu, sigma)
data$integration[i] <- integrate_approx(mu, sigma)
}

resultado:

    mu sigma      f_mu  sampling integration
1 -2.0  3.14 0.1192029 0.2891102   0.2892540
2 -1.5  3.14 0.1824255 0.3382486   0.3384099
3 -1.0  3.14 0.2689414 0.3902008   0.3905315
4 -0.5  3.14 0.3775407 0.4450018   0.4447307
5  0.0  3.14 0.5000000 0.4999657   0.5000000
6  0.5  3.14 0.6224593 0.5553955   0.5552693
7  1.0  3.14 0.7310586 0.6088106   0.6094685
8  1.5  3.14 0.8175745 0.6613919   0.6615901
9  2.0  3.14 0.8807971 0.7105594   0.7107460

EDITAR

Na verdade, encontrei uma transformação sem cheiro fácil de usar no pacote python filterpy (embora seja realmente muito rápido de implementar do zero):

import filterpy.kalman as fp
import numpy as np
import pandas as pd


def sigmoid(x):
    return 1.0 / (1.0 + np.exp(-x))


m = 9
n = 1
z = 1_000_000
alpha = 1e-3
beta = 2.0
kappa = 0.0
means = np.linspace(-2.0, 2.0, m)
sigma = 3.14
points = fp.MerweScaledSigmaPoints(n, alpha, beta, kappa)
ut = np.empty_like(means)
sampling = np.empty_like(means)

for i, mean in enumerate(means):
    sigmas = points.sigma_points(mean, sigma**2)
    trans_sigmas = sigmoid(sigmas)
    ut[i], _ = fp.unscented_transform(trans_sigmas, points.Wm, points.Wc)

    x = np.random.normal(mean, sigma, z)
    sampling[i] = np.mean(sigmoid(x))

print(pd.DataFrame({"mu": means,
                    "sigma": sigma,
                    "ut": ut,
                    "sampling": sampling}))

quais saídas:

    mu  sigma        ut  sampling
0 -2.0   3.14  0.513402  0.288771
1 -1.5   3.14  0.649426  0.338220
2 -1.0   3.14  0.716851  0.390582
3 -0.5   3.14  0.661284  0.444856
4  0.0   3.14  0.500000  0.500382
5  0.5   3.14  0.338716  0.555246
6  1.0   3.14  0.283149  0.609282
7  1.5   3.14  0.350574  0.662106
8  2.0   3.14  0.486598  0.710284

μσY=f(X)

import matplotlib.pyplot as plt

x = np.random.normal(means[0], sigma, z)
plt.hist(sigmoid(x), bins=50)
plt.title("mu = {}, sigma = {}".format(means[0], sigma))
plt.xlabel("f(x)")
plt.show()

histograma

σ

Jeff
fonte
3

Y

Mais sobre essas distribuições são descritas em um artigo disponível gratuitamente: Atchison, J. e Sheng M. Shen. "Distribuições logísticas-normais: algumas propriedades e usos." Biometrika 67,2 (1980): 261-272.

Nesse texto, eles não dão nenhuma expressão para limites, aproximações ou comportamento dos momentos (exceto mencionando que eles existem). Porém, eles continuam com expressões para o valor esperado para a razão de dois componentes em uma variável distribuída normal logística multivariada.

Sextus Empiricus
fonte