Как я могу кодировать среднее и стандартное отклонение для взвешенного биномиального распределения? - PullRequest
0 голосов
/ 06 декабря 2018

Я работаю над проблемой генетики, где у меня 20 генов, у каждого из которых два аллеля.Это приводит к 40 значениям, которые могут быть 1 или 0.

Для этого распределения я получаю ожидаемое значение 20 ( np ) и дисперсию 10 ( np (1-p) ) потому что n = 40 и p = 0,5 ( см. здесь ).

Но я оцениваю вклад каждого из этих генов.Веса рассчитываются следующим образом:

res <- optimize(function(lambda) (sum(exp(-lambda * (1:20))) -5)^2, 0:1, tol = .Machine$double.eps)
res
x <- c(1:20)
lambda <- res$minimum
y<-exp(-lambda*x)

Обратите внимание, что, поскольку каждый из генов имеет 2 аллеля, каждый вес используется дважды.

   gene1.1 * weight1 + gene1.2 * weight 1 + gene2.1 * weight2 + gene2.2 * weight2...

Я хочу рассчитать ожидаемое значение и дисперсию этого нового распределения, но я не уверен, как это сделать в R. Действительно, я вообще не знаю математической формы этого.

Надеюсь, вы можете помочь

1 Ответ

0 голосов
/ 06 декабря 2018

Учитывая n случайных величин Бернулли X 1 , ..., X 20 с тем же параметром p и весами w 1 , ..., w 20 , ожидание их суммы составляет

E [сумма i n w i X i] = p sum i n w i

и дисперсия

Var [сумма i n w i X i ] = сумма i n w i 2 Var [X i ] = p (1-p) сумма i n w i 2

Это дает

p <- 0.5
n <- 20

# No weights
2 * n * p # Mean
# [1] 20
2 * n * p * (1 - p) # Variance
# [1] 10

# Weights
2 * sum(y) * p # Mean
# [1] 5
2 * p * (1 - p) * sum(y^2) # Variance
# [1] 1.172048

# Unweighted case again
y <- rep(1, n)
2 * sum(y) * p # Mean
# [1] 20
2 * p * (1 - p) * sum(y^2) # Variance
# [1] 10
...