Làm thế nào để mô phỏng dữ liệu thỏa mãn các ràng buộc cụ thể như có giá trị trung bình và độ lệch chuẩn cụ thể?


56

Câu hỏi này được thúc đẩy bởi câu hỏi của tôi về phân tích tổng hợp . Nhưng tôi tưởng tượng rằng nó cũng sẽ hữu ích trong việc giảng dạy các bối cảnh nơi bạn muốn tạo một bộ dữ liệu phản ánh chính xác một bộ dữ liệu được xuất bản hiện có.

Tôi biết cách tạo dữ liệu ngẫu nhiên từ một phân phối nhất định. Vì vậy, ví dụ, nếu tôi đọc về kết quả của một nghiên cứu có:

  • một trung bình của 102,
  • độ lệch chuẩn là 5,2 và
  • cỡ mẫu 72.

Tôi có thể tạo dữ liệu tương tự bằng cách sử dụng rnormtrong R. Ví dụ:

set.seed(1234)
x <- rnorm(n=72, mean=102, sd=5.2)

Tất nhiên, giá trị trung bình và SD sẽ không chính xác bằng 102 và 5.2 tương ứng:

round(c(n=length(x), mean=mean(x), sd=sd(x)), 2)
##     n   mean     sd 
## 72.00 100.58   5.25 

Nói chung, tôi quan tâm đến cách mô phỏng dữ liệu thỏa mãn một tập hợp các ràng buộc. Trong trường hợp trên, các hằng số là cỡ mẫu, giá trị trung bình và độ lệch chuẩn. Trong các trường hợp khác, có thể có các ràng buộc bổ sung. Ví dụ,

  • tối thiểu và tối đa trong dữ liệu hoặc biến cơ bản có thể được biết đến.
  • biến có thể được biết là chỉ nhận các giá trị nguyên hoặc chỉ các giá trị không âm.
  • dữ liệu có thể bao gồm nhiều biến có tương quan đã biết.

Câu hỏi

  • Nói chung, làm thế nào tôi có thể mô phỏng dữ liệu thỏa mãn chính xác một tập các ràng buộc?
  • Có những bài báo viết về điều này? Có chương trình nào trong R làm điều này không?
  • Vì lợi ích của ví dụ, làm thế nào tôi có thể và nên mô phỏng một biến để nó có nghĩa và sd cụ thể?

1
Tại sao bạn muốn chúng giống hệt như kết quả được công bố? Không phải những ước tính này về trung bình dân số và độ lệch chuẩn cho mẫu dữ liệu của họ. Với sự không chắc chắn trong các ước tính đó, ai sẽ nói rằng mẫu bạn trình bày ở trên không phù hợp với các quan sát của họ?
Gavin Simpson

4
Bởi vì câu hỏi này dường như đang thu thập các câu trả lời bị mất dấu (IMHO), tôi muốn chỉ ra rằng về mặt khái niệm câu trả lời rất đơn giản: các ràng buộc bình đẳng được xử lý như các phân phối biên và các ràng buộc bất bình đẳng là các phép tương tự đa biến. Cắt ngắn tương đối dễ xử lý (thường với lấy mẫu từ chối); vấn đề khó hơn là tìm cách lấy mẫu các phân phối cận biên này. Điều này có nghĩa là hoặc lấy mẫu biên cho phân phối và ràng buộc, hoặc tích hợp để tìm phân phối biên và lấy mẫu từ nó.
whuber

4
BTW, câu hỏi cuối cùng là tầm thường đối với các gia đình phân phối quy mô địa điểm. Ví dụ, x<-rnorm(72);x<-5.2*(x-mean(x))/sd(x)+102thực hiện các mẹo.
whuber

1
@whuber, vì hồng y ám chỉ trong một bình luận cho câu trả lời của tôi (trong đó đề cập đến "mánh khóe" này) và một bình luận cho một câu trả lời khác - nói chung, phương pháp này sẽ không giữ các biến trong cùng một gia đình phân phối, vì bạn đang chia bằng độ lệch chuẩn mẫu.
Macro

5
@Macro Đây là một điểm tốt, nhưng có lẽ câu trả lời tốt nhất là, "tất nhiên họ sẽ không có cùng phân phối"! Phân phối bạn muốn là phân phối có điều kiện trên các ràng buộc. Nói chung sẽ không đến từ cùng một gia đình như phân phối cha mẹ. Ví dụ: mỗi phần tử của mẫu có kích thước 4 với giá trị trung bình 0 và SD 1 được rút ra từ phân phối bình thường sẽ có xác suất gần như thống nhất trên [-1,5, 1,5], vì các điều kiện đặt giới hạn trên và dưới của các giá trị có thể.
whuber

Câu trả lời:


26

Nói chung, để làm cho giá trị trung bình và phương sai mẫu của bạn chính xác bằng một giá trị được chỉ định trước, bạn có thể thay đổi và chia tỷ lệ biến một cách thích hợp. Cụ thể, nếu là một mẫu, thì các biến mớiX1,X2,...,Xn

Zi=c1(XiX¯sX)+c2

trong đó là trung bình mẫu và là phương sai mẫu sao cho trung bình mẫu của chính xác là và phương sai mẫu của chúng là chính xác là . Một ví dụ được xây dựng tương tự có thể hạn chế phạm vi -s 2 X =1X¯=1ni=1nXiZic2c1sX2=1n1i=1n(XiX¯)2Zic2c1

Bi=a+(ba)(Ximin({X1,...,Xn})max({X1,...,Xn})min({X1,...,Xn}))

sẽ tạo ra tập dữ liệu được giới hạn trong khoảng . ( a , b )B1,...,Bn(a,b)

Lưu ý: Nhìn chung, các loại dịch chuyển / chia tỷ lệ này sẽ thay đổi họ phân phối dữ liệu, ngay cả khi dữ liệu gốc đến từ một họ quy mô vị trí.

Trong ngữ cảnh phân phối bình thường , mvrnormhàm trong R cho phép bạn mô phỏng dữ liệu bình thường (hoặc đa biến thông thường) với giá trị trung bình / hiệp phương thức mẫu được chỉ định trước bằng cách cài đặt empirical=TRUE. Cụ thể, hàm này mô phỏng dữ liệu từ phân phối có điều kiện của biến phân phối thông thường, với giá trị trung bình mẫu và phương sai (co) bằng với giá trị được chỉ định trước . Lưu ý rằng các phân phối biên kết quả là không bình thường, như được chỉ ra bởi @whuber trong một bình luận cho câu hỏi chính.

Dưới đây là một ví dụ đơn biến đơn giản trong đó giá trị trung bình của mẫu (từ mẫu ) bị ràng buộc là 0 và độ lệch chuẩn của mẫu là 1. Chúng ta có thể thấy rằng phần tử đầu tiên giống với phân phối đồng đều hơn so với bình thường phân phối:n=4

library(MASS)
 z = rep(0,10000)
for(i in 1:10000)
{
    x = mvrnorm(n = 4, rep(0,1), 1, tol = 1e-6, empirical = TRUE)
    z[i] = x[1]
}
hist(z, col="blue")

                  nhập mô tả hình ảnh ở đây


1
Các sẽ không được phân phối bình thường, mặc dù họ có thể xấp xỉ vì vậy nếu cỡ mẫu lớn. Nhận xét đầu tiên cho câu trả lời của @ Sean ám chỉ điều này. Zi
Đức hồng y

1
Chà, đó là một điều khá tự nhiên muốn làm ... và đôi khi không gây ra quá nhiều rắc rối.
Đức hồng y

1
+1. Trong ví dụ, đồng phục là câu trả lời chính xác . (Sự sụt giảm rõ ràng ở phần cuối của cốt truyện là một sự giả tạo về cách R vẽ biểu đồ.)
whuber

1
@whuber, cảm ơn vì đã thúc đẩy ví dụ này. Với thực tế là các phân phối biên thay đổi một khi bạn dựa vào giá trị trung bình / phương sai mẫu, có vẻ như "câu trả lời" tốt nhất theo tinh thần của câu hỏi của OP chỉ là mô phỏng dữ liệu với trung bình / phương sai dân số bằng với mẫu được báo cáo như mẫu số lượng (theo đề xuất của chính OP), phải không? Bằng cách đó, bạn có được số lượng mẫu "tương tự" với số lượng mong muốn và phân phối biên là những gì bạn muốn chúng trở thành.
Macro

1
@whuber, Nếu mẫu của bạn bình thường, thì có phân phối , có không? Biến "mới" trong câu hỏi sẽ chỉ là sự kết hợp tuyến tính của . Ti=(XiX¯)/stTi
Macro

22

Về yêu cầu giấy tờ của bạn, có:

Đây không hoàn toàn là những gì bạn đang tìm kiếm, nhưng có thể đóng vai trò là chuyên gia cho nhà máy.


Có một chiến lược khác mà dường như không ai đề cập đến. Có thể tạo dữ liệu ngẫu nhiên (giả) từ một tập hợp kích thước sao cho toàn bộ tập hợp đáp ứng các ràng buộc miễn là dữ liệu còn lại được cố định ở các giá trị thích hợp. Các giá trị cần thiết phải có thể giải được với một hệ phương trình , đại số và một ít mỡ khuỷu tay. NkNkkk

Ví dụ: để tạo một tập hợp dữ liệu từ phân phối bình thường sẽ có giá trị trung bình mẫu nhất định, và phương sai, , bạn sẽ cần sửa các giá trị của hai điểm: và . Vì giá trị trung bình của mẫu là: phải là: Phương sai mẫu là: do đó (sau khi thay thế ở trên cho , bỏ qua / phân phối và sắp xếp lại ... ) chúng tôi nhận được: Nx¯s2yz

x¯=i=1N2xi+y+zN
y
y=Nx¯(i=1N2xi+z)
s2=i=1N2(xix¯)2+(yx¯)2+(zx¯)2N1
y a = - 2 b = 2 ( N ˉ x - N - 2 i = 1 x i ) c z
2(Nx¯i=1N2xi)z2z2=Nx¯2(N1)+i=1N2xi2+[i=1N2xi]22Nx¯i=1N2xi(N1)s2
Nếu chúng ta lấy , và là phủ định của RHS, chúng ta có thể giải cho bằng công thức bậc hai . Ví dụ: trong , mã sau đây có thể được sử dụng: a=2b=2(Nx¯i=1N2xi)czR
find.yz = function(x, xbar, s2){
  N    = length(x) + 2
  sumx = sum(x)
  sx2  = as.numeric(x%*%x)          # this is the sum of x^2
  a    = -2
  b    = 2*(N*xbar - sumx)
  c    = -N*xbar^2*(N-1) - sx2 - sumx^2 + 2*N*xbar*sumx + (N-1)*s2
  rt   = sqrt(b^2 - 4*a*c)

  z    = (-b + rt)/(2*a)
  y    = N*xbar - (sumx + z)
  newx = c(x, y, z)
  return(newx)
}

set.seed(62)
x    = rnorm(2)
newx = find.yz(x, xbar=0, s2=1)
newx                                # [1] 0.8012701  0.2844567  0.3757358 -1.4614627
mean(newx)                          # [1] 0
var(newx)                           # [1] 1

Có một số điều cần hiểu về phương pháp này. Đầu tiên, nó không được đảm bảo để làm việc. Ví dụ, có thể dữ liệu ban đầu của bạn sao cho không tồn tại giá trị và sẽ làm cho phương sai của tập kết quả bằng . Xem xét: y z s 2N2yzs2

set.seed(22)    
x    = rnorm(2)
newx = find.yz(x, xbar=0, s2=1)
Warning message:
In sqrt(b^2 - 4 * a * c) : NaNs produced
newx                                # [1] -0.5121391  2.4851837        NaN        NaN
var(c(x, mean(x), mean(x)))         # [1] 1.497324

Thứ hai, trong khi tiêu chuẩn hóa làm cho các phân phối biên của tất cả các biến thể của bạn đồng đều hơn, cách tiếp cận này chỉ ảnh hưởng đến hai giá trị cuối cùng, nhưng làm cho các phân phối biên của chúng bị sai lệch:

set.seed(82)
xScaled = matrix(NA, ncol=4, nrow=10000)
for(i in 1:10000){
  x           = rnorm(4)
  xScaled[i,] = scale(x)
}

(chèn cốt truyện)

set.seed(82)
xDf = matrix(NA, ncol=4, nrow=10000)
i   = 1
while(i<10001){
  x       = rnorm(2)
  xDf[i,] = try(find.yz(x, xbar=0, s2=2), silent=TRUE)  # keeps the code from crashing
  if(!is.nan(xDf[i,4])){ i = i+1 }                      # increments if worked
}

(chèn cốt truyện)

Thứ ba, mẫu kết quả có thể trông không bình thường; có vẻ như nó có 'ngoại lệ' (nghĩa là các điểm đến từ một quá trình tạo dữ liệu khác với phần còn lại), vì thực chất đó là trường hợp. Điều này ít có khả năng là một vấn đề với kích thước mẫu lớn hơn, vì các thống kê mẫu từ dữ liệu được tạo sẽ hội tụ đến các giá trị cần thiết và do đó cần điều chỉnh ít hơn. Với các mẫu nhỏ hơn, bạn luôn có thể kết hợp phương pháp này với thuật toán chấp nhận / từ chối thử lại nếu mẫu được tạo có số liệu thống kê hình dạng (ví dụ: độ lệch và kurtosis) nằm ngoài giới hạn chấp nhận được (xem, nhận xét của @ cardinal ) hoặc mở rộng phương pháp này để tạo ra một mẫu với giá trị trung bình cố định, phương sai, độ lệch Kurtosis (Mặc dù vậy, tôi sẽ để lại đại số cho bạn). Ngoài ra, bạn có thể tạo một số lượng nhỏ các mẫu và sử dụng một mẫu có thống kê Kolmogorov-Smirnov nhỏ nhất (giả sử).

library(moments)
set.seed(7900)  
x = rnorm(18)
newx.ss7900 = find.yz(x, xbar=0, s2=1)
skewness(newx.ss7900)                       # [1] 1.832733
kurtosis(newx.ss7900) - 3                   # [1] 4.334414
ks.test(newx.ss7900, "pnorm")$statistic     # 0.1934226

set.seed(200)  
x = rnorm(18)
newx.ss200 = find.yz(x, xbar=0, s2=1)
skewness(newx.ss200)                        # [1] 0.137446
kurtosis(newx.ss200) - 3                    # [1] 0.1148834
ks.test(newx.ss200, "pnorm")$statistic      # 0.1326304 

set.seed(4700)  
x = rnorm(18)
newx.ss4700 = find.yz(x, xbar=0, s2=1)
skewness(newx.ss4700)                       # [1]  0.3258491
kurtosis(newx.ss4700) - 3                   # [1] -0.02997377
ks.test(newx.ss4700, "pnorm")$statistic     # 0.07707929S

(thêm cốt truyện)


10

Kỹ thuật chung là 'Phương pháp từ chối', trong đó bạn chỉ từ chối các kết quả không đáp ứng các ràng buộc của bạn. Trừ khi bạn có một số loại hướng dẫn (như MCMC), thì bạn có thể tạo ra rất nhiều trường hợp (tùy thuộc vào kịch bản của bạn) bị từ chối!

Khi bạn đang tìm kiếm một thứ gì đó như độ lệch trung bình và độ lệch chuẩn và bạn có thể tạo một số liệu khoảng cách nào đó để nói bạn cách mục tiêu của mình bao xa, bạn có thể sử dụng tối ưu hóa để tìm kiếm các biến đầu vào cung cấp cho bạn đầu ra mong muốn các giá trị.

Như một ví dụ xấu , trong đó chúng ta sẽ tìm một vectơ đồng nhất ngẫu nhiên có độ dài 100 có giá trị trung bình = 0 và độ lệch chuẩn = 1.

# simplistic optimisation example
# I am looking for a mean of zero and a standard deviation of one
# but starting from a plain uniform(0,1) distribution :-)
# create a function to optimise
fun <- function(xvec, N=100) {
  xmin <- xvec[1]
  xmax <- xvec[2]
  x <- runif(N, xmin, xmax)
  xdist <- (mean(x) - 0)^2 + (sd(x) - 1)^2
  xdist
}
xr <- optim(c(0,1), fun)

# now lets test those results
X <- runif(100, xr$par[1], xr$par[2])
mean(X) # approx 0
sd(X)   # approx 1

7
Những ràng buộc xảy ra với xác suất bằng 0 rất khó thỏa mãn. ;-) Đối với ví dụ cụ thể có sẵn, một sự thay đổi và giãn nở thích hợp dễ dàng đạt được các mục tiêu đã nêu , mặc dù người ta có thể muốn phân tích sâu hơn một chút để xem cách phân phối dữ liệu bị nhiễu bởi hoạt động như vậy.
Đức hồng y

Cảm ơn. Chắc chắn sẽ dễ dàng từ chối các quan sát nhỏ hơn cực tiểu và lớn hơn cực đại. Và tôi có thể thấy làm thế nào bạn có thể định nghĩa nó là một vấn đề tối ưu hóa. Sẽ thật tuyệt khi thấy một số ví dụ hoặc có thể có một số gợi ý về những gì cần đọc tiếp theo.
Jeromy Anglim

1
@cardinal - đồng ý. Chúng ta nên nhìn vào các bản phân phối (tức là biểu đồ) của cả số đầu vào và đầu ra mô phỏng vì đôi khi chúng có thể trông rất kỳ lạ!
Sean

9

Có chương trình nào trong R làm điều này không?

Gói Runuran R chứa nhiều phương thức để tạo các biến thể ngẫu nhiên. Nó sử dụng các thư viện C từ dự án UNU.RAN (trình tạo số RAndom Number không đồng nhất). Kiến thức của riêng tôi về lĩnh vực tạo ra phương sai ngẫu nhiên còn hạn chế, nhưng họa tiết Runuran cung cấp một cái nhìn tổng quan đẹp. Dưới đây là các phương thức có sẵn trong gói Runuran, được lấy từ họa tiết:

Phân phối liên tục:

  • Lấy mẫu từ chối thích ứng
  • Từ chối chuyển đổi mật độ nghịch đảo
  • Nội suy đa thức của CDF nghịch đảo
  • Phương pháp tỷ lệ đồng phục đơn giản
  • Biến đổi mật độ từ chối

Phân phối rời rạc:

  • Đảo ngược tự động từ chối
  • Phương pháp bí danh
  • Phương pháp bảng hướng dẫn cho đảo ngược rời rạc

Phân phối đa biến:

  • Thuật toán Hit-and-Run với Phương pháp tỷ lệ đồng phục
  • Phương pháp tỷ lệ đồng phục đa biến

Thí dụ:

Ví dụ nhanh, giả sử bạn muốn tạo phân phối Bình thường giới hạn trong khoảng từ 0 đến 100:

require("Runuran")

## Normal distribution bounded between 0 and 100
d1 <- urnorm(n = 1000, mean = 50, sd = 25, lb = 0, ub = 100)

summary(d1)
sd(d1)
hist(d1)

Các urnorm()chức năng là một chức năng bao bọc thuận tiện. Tôi tin rằng đằng sau hậu trường, nó sử dụng phương pháp Nội suy đa thức của phương pháp CDF nghịch đảo nhưng không chắc chắn. Đối với một cái gì đó phức tạp hơn, giả sử, một phân phối Bình thường rời rạc giới hạn trong khoảng từ 0 đến 100:

require("Runuran")

## Discrete normal distribution bounded between 0 and 100
# Create UNU.RAN discrete distribution object
discrete <- unuran.discr.new(pv = dnorm(0:100, mean = 50, sd = 25), lb = 0, ub = 100)

# Create UNU.RAN object using the Guide-Table Method for Discrete Inversion
unr <- unuran.new(distr = discrete, method = "dgt")

# Generate random variates from the UNU.RAN object
d2 <- ur(unr = unr, n = 1000)

summary(d2)
sd(d2)
head(d2)
hist(d2)

3

Có vẻ như có một gói R đáp ứng yêu cầu của bạn được công bố ngày hôm qua! simstudy của Keith Goldfeld

Mô phỏng các tập dữ liệu để khám phá các kỹ thuật mô hình hóa hoặc hiểu rõ hơn các quy trình tạo dữ liệu. Người dùng chỉ định một tập hợp các mối quan hệ giữa các hiệp phương sai và tạo dữ liệu dựa trên các thông số kỹ thuật này. Các bộ dữ liệu cuối cùng có thể biểu thị dữ liệu từ các thử nghiệm kiểm soát ngẫu nhiên, thiết kế đo lặp lại (theo chiều dọc) và thử nghiệm ngẫu nhiên theo cụm. Mất tích có thể được tạo ra bằng các cơ chế khác nhau (MCAR, MAR, NMAR).


1
Không phải trong các họa tiết cũng như trên trang chủ của cuộc họp về các ràng buộc chính xác được đề cập. Tại sao bạn nghĩ gói này đáp ứng yêu cầu vẽ từ các bản phân phối có điều kiện?
gg

2

Đây là một câu trả lời đến muộn nên có lẽ là vô nghĩa, nhưng luôn có một giải pháp MCMC cho câu hỏi. Cụ thể, để chiếu mật độ chung của mẫu trên đa tạp được xác định bởi các ràng buộc, ví dụ Vấn đề duy nhất là sau đó là mô phỏng các giá trị trên đa tạp đó, tức là tìm một tham số của kích thước chính xác. Một bài báo năm 2015 của Bornn, Shephard và Solgi nghiên cứu chính vấn đề này (với một câu trả lời thú vị nếu không phải là cuối cùng ).

i=1nf(xi)
i=1nxi=μ0i=1nxi2=σ02

2

Câu trả lời này xem xét một cách tiếp cận khác trong trường hợp bạn muốn buộc các biến thể nằm trong một phạm vi được chỉ định và thêm vào đó là chỉ định trung bình và / hoặc phương sai.

Hạn chế sự chú ý của chúng tôi vào khoảng thời gian đơn vị . Chúng ta hãy sử dụng trung bình có trọng số cho tính tổng quát, vì vậy hãy sửa một số trọng số bằng hoặc đặt nếu bạn muốn tính trọng số chuẩn. Giả sử đại lượng và tương ứng với trung bình (trọng số) mong muốn và phương sai (có trọng số) tương ứng. Giới hạn trên của là cần thiết vì đó là phương sai tối đa có thể có trong một khoảng thời gian đơn vị. Chúng tôi quan tâm đến việc vẽ một số biến thể từ với những hạn chế về thời điểm này.[0,1]wk[0,1]k=1Nwk=1wk=1/Nμ(0,1)0<σ2<μ(1μ)σ2x1,...,xN[0,1]

Trước tiên, chúng tôi rút ra một số biến thiên từ bất kỳ phân phối nào, như . Phân phối này sẽ ảnh hưởng đến hình dạng của phân phối cuối cùng. Sau đó, chúng tôi giới hạn chúng đến khoảng đơn vị bằng cách sử dụng hàm logistic:y1,...,yNN(0,1)[0,1]

xk=11+e(ykvh)

Tuy nhiên, trước khi chúng ta làm điều đó, như đã thấy trong phương trình trên, chúng ta biến đổi các với bản dịch và thang đo . Điều này tương tự với phương trình đầu tiên trong câu trả lời của @ Macro. Bí quyết bây giờ là chọn và sao cho các biến được chuyển đổi có (các) thời điểm mong muốn. Đó là, chúng tôi yêu cầu một hoặc cả hai điều sau đây để giữ: ykhvhvx1,...,xN

μ=k=1Nwk1+e(ykvh)σ2=k=1Nwk(1+e(ykvh))2(k=1Nwk1+e(ykvh))2

Đảo ngược các phương trình này cho và phân tích là không khả thi, nhưng làm như vậy là số lượng đơn giản, đặc biệt vì các đạo hàm liên quan đến và rất dễ tính toán; nó chỉ mất vài lần lặp lại phương pháp của Newton.vhvh

Lấy ví dụ đầu tiên, giả sử chúng ta chỉ quan tâm đến việc hạn chế giá trị trung bình có trọng số chứ không phải phương sai. Sửa , , , . Sau đó, đối với các phân phối cơ bản , và chúng tôi kết thúc với các biểu đồ sau, tương ứng, và sao cho giá trị trung bình của các biến thể là chính xác (ngay cả đối với nhỏ ):v = 1 w k = 1 / N N = 200000 N ( 0 , 1 ) N ( 0 , 0,1 ) Unif ( 0 , 1 ) 0,8 Nμ=0.8v=1wk=1/NN=200000N(0,1)N(0,0.1)Unif(0,1) 0.8N

Ví dụ 1

Tiếp theo, hãy hạn chế cả giá trị trung bình và phương sai. Lấy , , và xem xét ba độ lệch chuẩn mong muốn . Sử dụng cùng một phân phối cơ bản , đây là biểu đồ cho mỗi:w k = 1 / N N = 2000 σ = 0,1 , 0,05 , 0,01 N ( 0 , 1 )μ=0.2wk=1/NN=2000σ=0.1,0.05,0.01N(0,1)

Ví dụ 2

Lưu ý rằng những thứ này có thể trông hơi phân phối beta, nhưng chúng thì không.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.