#r #plot
#r #график
Вопрос:
У меня есть несколько точек траектории из эксперимента, который я провел (см. Красные точки ниже).) Что я хотел бы сделать, так это получить предопределенные значения контура для двумерного стандартного нормального распределения, соответствующего этим точкам красной линии. Это двумерное распределение сосредоточено в точке at c(3.4, 1)
(где находится синий круг).
На графике ниже я построил двумерное нормальное распределение с помощью моделирования с использованием mvrnorm
. В этом случае выбираются значения x и y, а затем я могу получить z-значения. Но как я могу получить z-значения для заданных точек?
(код для двумерного распределения взят с этого веб-сайта.)
library(MASS)
library(shape)
#> Warning: package 'shape' was built under R version 3.6.2
x <- c(5.04,4.68,4.39,4.09,3.73,3.37,3.07,2.77,2.47,2.11)
y <- c(0.74,0.69,0.64,0.60,0.56,0.52,0.50,0.50,0.50,0.51)
N <- 200 # Number of random samples
set.seed(123)
# Parameters
rho <- 0.5
mu1 <- 3.4; s1 <- 0.25
mu2 <- 1; s2 <- 0.25
# Parameters for bivariate normal distribution
# Mean
mu <- c(mu1,mu2)
# Covariance matrix
sigma <- matrix(c(s1^2, s1*s2*rho, s1*s2*rho, s2^2),2)
X <- mvrnorm(N, mu = mu, Sigma = sigma)
tail(X,2)
#> [,1] [,2]
#> [199,] 3.425264 0.7100933
#> [200,] 3.187654 0.6990182
z <- kde2d(X[,1], X[,2], n=50)
plot(X, xlab="X label", ylab="Y label",
xlim=c(2,6), ylim=c(-1,3.5),pch=19, cex=.4)
contour(z, drawlabels=FALSE, add=TRUE)
lines(x,y,type="p", xlim=range(x), ylim=c(-1,3.5),
xlab="x", ylab="y", pch=16, col = "red")
plotcircle(mid = c(3.4, 1), r = 0.05, col="blue")
У меня возник еще один вопрос о том, как центрировать распределение при определенных значениях. Вопрос возник из-за недоразумения, которое было разъяснено в комментариях. Я оставляю это ниже для записи, но нет необходимости обращаться к нему.
- как я могу «центрировать» двумерное распределение там, где находится синий круг (
c(3.4, 1)
)? Прямо сейчас распределение сосредоточено там, потому что я установилmu1 <- 3.4
иmu2 <- 1
, но я думал, чтоmu1
иmu2
были значениями средних. На самом деле я хотел бы, чтобы среднее значение составляло около 0,5 для каждого.
Комментарии:
1. Как и в случае с одномерным нормальным распределением, вы можете центрировать его там, где хотите, добавляя / вычитая любые значения, которые вам нужны. Если ваши средние значения данных равны 3,4 и 1, но вы хотите преобразовать их в 0,5, вы можете вычесть 2,9 из значений x и 0,5 из значений y.
2. @GregorThomas спасибо за ваш отзыв. Мое замешательство связано с тем, что я думал, что mu1 и mu2 были значениями средних и, следовательно, «сегментов», но вместо этого они кажутся координатами.
3. Я не знаю, что вы подразумеваете под этим комментарием. Откуда берется концепция «сегментов»?
4. @GregorThomas Спасибо, я несколько смутил среднее и sd в своем мысленном представлении распределения. Теперь все ясно. Я редактирую вопрос.
5. Я думаю
z
, что значения OP предназначены для контуров двумерного нормального определения (BND), которые они в настоящее время «конструируют» эмпирически из случайной выборки. Я думаю, что они хотят, это контуры предопределенного BND, для которыхmvtnorm::dmvnorm()
, вероятно, будет полезно.