Участок условного распределения в г - PullRequest
0 голосов
/ 16 июня 2019

Я пытаюсь построить условные распределения из двумерных нормалей, используя совместные и маргинальные распределения.

Условное распределение X, заданное Y, равно X | Y = y ~ N (rho * y, 1-rho ^ 2), а Y, заданное X, равно Y | X = x ~ N (rho * x, 1-rho ^ 2)

Вот мой подход для реализации этого в R с использованием моделирования (принимая конкретное значение rho = 1/2 как в суставном, так и в предельном дист. Для получения дополнительной информации см. Здесь :

plot.new()

num<-exp(-2*((x^2)-(x*y)+(y^2))/3)
den<-(exp((-x^2)/2)*sqrt(3))/sqrt(2*pi)

quot<-num/den

fun <- function(x, y){quot} 

xs <- seq(-10, 10, by=1)
ys <- seq(-10, 10, by=1)

res <- mapply(fun, list(xs), list(ys))

cols <- c("black", "cornflowerblue", "orange")
matplot(xs, res, col=cols, type="l", lty=1, lwd=2, xlab="x", ylab="result")
legend("bottomright", legend=ys, title="value of y", lwd=2, col=cols)

Когда я запускаю код, я получаю сообщение об ошибке

Error in matplot(xs, res, col = cols, type = "l", lty = 1, lwd = 2, xlab = "x", : 'x' and 'y' must have same number of rows

почему говорится, что x и y должны иметь одинаковое количество строк? В какой части кода я могу это исправить?

Я не понимаю, пожалуйста, помогите мне.

1 Ответ

0 голосов
/ 16 июня 2019

Я решил проблему :) 1001 *

Рассмотрим следующее

 fun <- function(x, y){(exp(-2*((x^2)-(x*y)+ 
   (y^2))/3))/((exp((-x^2)/2)*sqrt(3))/sqrt(2*pi))}

    xs <- seq(-5, 5, by=.01)
    ys <- seq(-5, 5, by=.01)

    res <- mapply(fun, list(xs), list(ys))


    matplot(xs, res, col="purple", type="l", lwd=3, xlab="x", ylab="pdf")

Отображение

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...