Làm cách nào để chuyển đổi dữ liệu không âm bao gồm số không?


191

Nếu tôi có dữ liệu tích cực sai lệch, tôi thường lấy nhật ký. Nhưng tôi nên làm gì với dữ liệu không âm rất sai lệch bao gồm số không? Tôi đã thấy hai phép biến đổi được sử dụng:

  • log(x+1) có tính năng gọn gàng là 0 ánh xạ thành 0.
  • log(x+c) trong đó c được ước tính hoặc được đặt thành một giá trị dương rất nhỏ.

Có cách tiếp cận nào khác không? Có bất kỳ lý do tốt để thích một cách tiếp cận hơn những cách khác?


19
Tôi đã tóm tắt một số câu trả lời cộng với một số tài liệu khác tại robjhyndman.com/researchtips/transformations
Rob Hyndman

5
cách tuyệt vời để chuyển đổi và thúc đẩy stat.stackoverflow!
cướp girard

Có, tôi đồng ý @robingirard (Tôi mới đến đây vì bài đăng trên blog của Rob)!
Ellie Kesselman

Ngoài ra, hãy xem stats.stackexchange.com/questions/39042/ cho một ứng dụng cho dữ liệu bị kiểm duyệt trái (có thể được mô tả, tùy theo sự thay đổi vị trí, chính xác như trong câu hỏi hiện tại).
whuber

2
Có vẻ lạ khi hỏi về cách biến đổi mà không nêu rõ mục đích biến đổi ngay từ đầu. Tình hình là gì? Tại sao cần phải biến đổi? Nếu chúng ta không biết những gì bạn đang cố gắng đạt được, làm thế nào một cách hợp lý có thể đề xuất bất cứ điều gì ? (Rõ ràng người ta không thể hy vọng chuyển đổi thành bình thường, bởi vì sự tồn tại của xác suất (khác không) của các số 0 chính xác ngụ ý một sự tăng đột biến trong phân phối ở mức 0, mà không có biến đổi nào sẽ loại bỏ - nó chỉ có thể di chuyển xung quanh.)
Glen_b

Câu trả lời:


55

Dường như với tôi rằng sự lựa chọn chuyển đổi thích hợp nhất phụ thuộc vào mô hình và bối cảnh.

Điểm '0' có thể phát sinh từ một số lý do khác nhau mà mỗi lý do có thể phải được đối xử khác nhau:

  • Cắt ngắn (như trong ví dụ của Robin): Sử dụng các mô hình phù hợp (ví dụ: hỗn hợp, mô hình sinh tồn, v.v.)
  • Thiếu dữ liệu: Dữ liệu không ổn định / Thả quan sát nếu thích hợp.
  • Điểm không tự nhiên (ví dụ: mức thu nhập; một người thất nghiệp có thu nhập bằng 0): Chuyển đổi khi cần thiết
  • Độ nhạy của dụng cụ đo: Có lẽ, thêm một lượng nhỏ vào dữ liệu?

Tôi không thực sự đưa ra một câu trả lời vì tôi nghi ngờ không có sự biến đổi 'chính xác' khi bạn có số không.


6
Mỗi câu trả lời cho câu hỏi của tôi đã cung cấp thông tin hữu ích và tôi đã bình chọn tất cả. Nhưng tôi chỉ có thể chọn một câu trả lời và Srikant cung cấp IMO tổng quan tốt nhất.
Rob Hyndman

2
Cũng lưu ý rằng có các mô hình không phồng lên (số 0 thêm và bạn quan tâm đến một số số không: mô hình hỗn hợp) và mô hình vượt rào (số không và bạn quan tâm đến các số không: một mô hình hai giai đoạn với mô hình được kiểm duyệt ban đầu).
Wayne

82

Không ai đề cập đến sự biến đổi hình sin hyperbol ngược. Vì vậy, để hoàn thiện tôi đang thêm nó ở đây.

Đây là một thay thế cho các phép biến đổi Box-Cox và được xác định bởi trong đó . Đối với bất kỳ giá trị nào của , zero maps thành zero. Ngoài ra còn có một phiên bản hai tham số cho phép thay đổi, giống như với phép biến đổi hai tham số BC. Burbidge, Magee và Robb (1988) thảo luận về chuyển đổi IHS bao gồm ước tính .θ > 0

f(y,θ)=sinh1(θy)/θ=log[θy+(θ2y2+1)1/2]/θ,
θ>0θθ

Phép biến đổi IHS hoạt động với dữ liệu được xác định trên toàn bộ dòng thực bao gồm các giá trị âm và số không. Đối với các giá trị lớn của nó hoạt động như một chuyển đổi nhật ký, bất kể giá trị của (ngoại trừ 0). Trường hợp giới hạn như cho .yθθ0f(y,θ)y

Theo tôi thì việc chuyển đổi IHS sẽ được biết đến nhiều hơn nó.


1
Trông giống như một sự thay thế tốt cho các biến đổi / logistictanh
Firebird

1
Về IHS, một số người dường như không đồng ý: onlinel Library.wiley.com/doi/10.1890/10-0340.1/abauge
kjetil b halvorsen

3
Bài báo đó là về sự biến đổi hình sin ngược, không phải là hình sin hyperbol nghịch đảo.
Bryan

42

Một cách tiếp cận hữu ích khi biến được sử dụng như một yếu tố độc lập trong hồi quy là thay thế nó bằng hai biến: một là chỉ số nhị phân cho dù nó bằng 0 và biến còn lại là giá trị của biến ban đầu hoặc biểu thức lại của nó, chẳng hạn như logarit của nó. Kỹ thuật này được thảo luận trong cuốn sách của Hosmer & Lemeshow về hồi quy logistic (và ở những nơi khác, tôi chắc chắn). Các biểu đồ xác suất rút gọn của phần dương của biến ban đầu rất hữu ích để xác định biểu thức lại thích hợp. (Xem phân tích tại https://stats.stackexchange.com/a/30749/919 để biết ví dụ.)

Khi biến là biến phụ thuộc trong mô hình tuyến tính, hồi quy kiểm duyệt (như Tobit ) có thể hữu ích, một lần nữa làm giảm nhu cầu tạo logarit bắt đầu. Kỹ thuật này là phổ biến giữa các nhà kinh tế lượng.


1
Là mô hình hóa dữ liệu dưới dạng Poisson bằng 0 có phải là trường hợp đặc biệt của phương pháp này không?
David LeBauer

4
@David, mặc dù có vẻ tương tự, nhưng không phải vì ZIP là mô hình của biến phụ thuộc , không phải biến độc lập.
whuber

1
@whuber Kỹ thuật này được thảo luận trong cuốn sách của Hosmer & Lemeshow về hồi quy logistic Có thể bạn sẽ biết trong chương nào họ sẽ thảo luận về kỹ thuật này? Tôi đang xem cuốn sách của họ, nhưng dường như không thể tìm đúng trang ...
Landroni

1
@landroni H & L lúc đó rất mới mẻ trong tâm trí tôi, vì vậy tôi cảm thấy tự tin có một cái gì đó trong cuốn sách liên quan đến chủ đề này. (Tôi đã tham khảo ý kiến ​​để phát triển một số mô hình hồi quy rất lớn và nhiều biến độc lập phải được xử lý theo cách này.) Tuy nhiên, tôi cũng không thể tìm thấy tài liệu tham khảo tại thời điểm này. Tôi đã viết về kỹ thuật này trong các bài viết tiếp theo, trong trường hợp bạn đang tìm kiếm chi tiết. Hai cái hiển thị trong một tìm kiếm trang web là tại stats.stackexchange.com/questions/6563stats.stackexchange.com/questions/4831 .
whuber

1
@landroni Có, chúng tương đương nhau, theo cùng một cách mà tất cả các mã hóa số của bất kỳ biến nhị phân nào đều tương đương. Chọn bất cứ điều gì bạn thấy thuận tiện nhất để giải thích.
whuber

37

Các biến đổi nhật ký với các ca là các trường hợp đặc biệt của các phép biến đổi Box-Cox :

y(λ1,λ2)={(y+λ2)λ11λ1when λ10log(y+λ2)when λ1=0

Đây là dạng mở rộng cho các giá trị âm, nhưng cũng có thể áp dụng cho dữ liệu chứa số không. Box and Cox (1964) trình bày một thuật toán để tìm các giá trị phù hợp cho khả năng tối đa của . Điều này cung cấp cho bạn sự chuyển đổi cuối cùng. λ

Một lý do để thích các phép biến đổi Box-Cox là chúng được phát triển để đảm bảo các giả định cho mô hình tuyến tính. Có một số công việc được thực hiện để chỉ ra rằng ngay cả khi dữ liệu của bạn không thể được chuyển đổi thành quy tắc, thì ước tính vẫn dẫn đến phân phối đối xứng.λ

Tôi không chắc chắn điều này xử lý dữ liệu của bạn tốt như thế nào, vì có thể đó là chỉ là biến đổi nhật ký mà bạn đã đề cập, nhưng có thể đáng để ước tính 'để xem nếu khác biến đổi là phù hợp.λλ=(0,1)λ

Trong R, boxcox.fithàm trong gói geoRsẽ tính toán các tham số cho bạn.


hmm, không thể có được "trường hợp bắt đầu" latex để chấp nhận dòng mới. : - /
ars

@ars Tôi đã sửa các eqns để sử dụng các trường hợp bắt đầu. Tôi hy vọng tôi đã không xử lý các eqns trong quá trình này.

1
@Rob: Ồ, xin lỗi. GeoR của GeoR là cách để đi - nhưng chỉ định lambda2=TRUEtrong các đối số boxcox.fit. (Cũng cập nhật câu trả lời.)
ars

3
@ gd047: đây là một tài liệu tham khảo tốt đẹp: elevatorlady.ca/doc/refcard/expressions.html
ars

6
Đối với bất cứ ai đọc điều này tự hỏi những gì đã xảy ra với chức năng này, bây giờ nó được gọi boxcoxfit.
stragu

19

Tôi đoán rằng zero! = Thiếu dữ liệu, vì đó là một câu hỏi hoàn toàn khác.

Khi nghĩ về cách xử lý các số 0 trong hồi quy tuyến tính, tôi có xu hướng xem xét chúng ta thực sự có bao nhiêu số không?

Chỉ có một vài số không

Nếu tôi có một số 0 duy nhất trong tập dữ liệu lớn hợp lý, tôi có xu hướng:

  1. Xóa điểm, ghi nhật ký và phù hợp với mô hình
  2. Thêm một nhỏ vào điểm, lấy nhật ký và phù hợp với mô hìnhc

Liệu mô hình phù hợp thay đổi? Còn các giá trị tham số thì sao? Nếu mô hình khá mạnh mẽ để loại bỏ điểm, tôi sẽ tìm cách tiếp cận nhanh và bẩn khi thêm .c

Bạn có thể làm cho thủ tục này bớt thô hơn một chút và sử dụng phương pháp boxcox với các ca được mô tả trong câu trả lời của ars.

Số lượng lớn số không

Nếu tập dữ liệu của tôi chứa một số lượng lớn số không, thì điều này cho thấy hồi quy tuyến tính đơn giản không phải là công cụ tốt nhất cho công việc. Thay vào đó tôi sẽ sử dụng một cái gì đó giống như mô hình hỗn hợp (theo đề xuất của Srikant và Robin).


15

Nếu bạn muốn một cái gì đó nhanh chóng và bẩn tại sao không sử dụng căn bậc hai?


7
Và thường xuyên chuyển đổi gốc khối hoạt động tốt, và cho phép số không và tiêu cực. Tôi đã tìm thấy căn bậc ba để đặc biệt hoạt động tốt khi, ví dụ, phép đo là một thể tích hoặc số hạt trên một đơn vị thể tích. Cube root sẽ chuyển đổi nó thành một kích thước tuyến tính. Một cách tiếp cận linh hoạt hơn là để phù hợp với một spline khối bị hạn chế (spline tự nhiên) trên căn bậc ba hoặc căn bậc hai, cho phép một chút rời khỏi hình thức giả định.
Frank Harrell

2
+1. Đối với một bài viết nhỏ về rễ khối, hãy xem stata-journal.com/article.html?article=st0223 (Đây sẽ là một .pdf miễn phí từ quý 1 năm 2014.)
Nick Cox

2
Căn bậc hai của số 0, bằng 0, do đó, chỉ các giá trị không phải là số 0 được chuyển đổi. Điều này không có gì để đối phó với sự tăng đột biến, nếu không tăng cao và có thể gây ra vấn đề nghiêm trọng nếu, trong các nhóm, mỗi nhóm có một số lượng khác nhau. Nói cách khác, nếu một số nhóm có nhiều số 0 và các nhóm khác có ít, sự chuyển đổi này có thể ảnh hưởng đến nhiều thứ theo cách tiêu cực. Đối với nhóm có phương sai lớn nhất (cũng có ít số 0 nhất), gần như tất cả các giá trị đang được chuyển đổi. Ngược lại, những người có nhiều số 0 nhất, không có nhiều giá trị được chuyển đổi. Điều này có thể thay đổi nhóm nào có phương sai lớn nhất.
D_Williams

Không có biến đổi sẽ duy trì phương sai trong trường hợp được mô tả bởi @D_Williams. Các mô hình hỗn hợp (được đề cập ở nơi khác trong chủ đề này) có lẽ sẽ là một cách tiếp cận tốt trong trường hợp đó.
mkt

10

Tôi giả sử bạn có dữ liệu liên tục.

Nếu dữ liệu bao gồm các số không, điều này có nghĩa là bạn tăng đột biến về 0, điều này có thể là do một số khía cạnh cụ thể của dữ liệu của bạn. Ví dụ, nó xuất hiện trong năng lượng gió, gió dưới 2 m / s tạo ra năng lượng bằng không (nó được gọi là cắt) và gió trên (một cái gì đó xung quanh) 25 m / s cũng tạo ra năng lượng bằng không (vì lý do an ninh, nó được gọi là cắt) . Trong khi sự phân phối năng lượng gió được sản xuất dường như liên tục, có sự tăng đột biến bằng không.

Giải pháp của tôi: Trong trường hợp này, tôi đề nghị xử lý các số 0 một cách riêng biệt bằng cách làm việc với hỗn hợp tăng vọt bằng 0 và mô hình bạn dự định sử dụng cho phần phân phối liên tục (wrt Lebesgue).


9

So sánh câu trả lời được cung cấp bởi @RobHyndman với một phép biến đổi log-plus-one được mở rộng thành các giá trị âm với biểu mẫu:

T(x)=sign(x)log(|x|+1)
r = -1000:1000

l = sign(r)*log1p(abs(r))
l = l/max(l)
plot(r, l, type = "l", xlab = "Original", ylab = "Transformed", col = adjustcolor("red", alpha = 0.5), lwd = 3)

#We scale both to fit (-1,1)
for(i in exp(seq(-10, 100, 10))){
  s = asinh(i*r)

  s = s / max(s)
  lines(r, s, col = adjustcolor("blue", alpha = 0.2), lwd = 3)
}
legend("topleft", c("asinh(x)", "sign(x) log(abs(x)+1)"), col = c("blue", "red"), lty = 1)

Như bạn có thể thấy, khi tăng thêm biến đổi trông giống như một hàm bước. Với nó trông rất giống phép chuyển đổi log-plus-one. Và khi nó tiếp cận một dòng.q 1 q 0θθ1θ0

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


EDIT: Hãy nhớ rằng biến đổi nhật ký có thể được thay đổi tương tự thành quy mô tùy ý, với kết quả tương tự. Tôi chỉ muốn hiển thị những gì cho kết quả tương tự dựa trên câu trả lời trước đó. Sự khác biệt lớn nhất giữa cả hai cách tiếp cận là vùng gần , như chúng ta có thể thấy bằng các dẫn xuất của chúng.x = 0θx=0


8

Do Box-Cox phù hợp với hai tham số đã được đề xuất, đây là một số R để phù hợp với dữ liệu đầu vào, chạy một hàm tùy ý trên nó (ví dụ như dự báo chuỗi thời gian), sau đó trả về đầu ra đảo ngược:

# Two-parameter Box-Cox function
boxcox.f <- function(x, lambda1, lambda2) {
  if (lambda1!=0) {
    return(((x + lambda2) ^ lambda1 - 1) / lambda1)
  } else {
    return(log(x + lambda2))
  }
}

# Two-parameter inverse Box-Cox function
boxcox.inv <- function(x, lambda1, lambda2) {
  if (lambda1!=0) {
    return((lambda1 * x + 1) ^ (1 / lambda1) - lambda2)
  } else {
    return(exp(x) - lambda2)
  }
}

# Function to Box-Cox transform x, apply function g, 
# and return inverted Box-Cox output y
boxcox.fit.apply <- function(x, g) {
  require(geoR)
  require(plyr)

  # Fit lambdas
  t <- try(lambda.pair <- boxcoxfit(x, lambda2=T)$lambda)

  # Estimating both lambdas sometimes fails; if so, estimate lambda1 only
  if (inherits(t, "try-error")) {
    lambda1 <- boxcoxfit(x)$lambda
    lambda2 <- 0
  } else {
    lambda1 <- lambda.pair[1]
    lambda2 <- lambda.pair[2]
  }
  x.boxcox <- boxcox.f(x, lambda1, lambda2)

  # Apply function g to x.boxcox. This should return data similar to x (e.g. ts)
  y <- aaply(x.boxcox, 1, g)

  return(boxcox.inv(y, lambda1, lambda2))
}

5

Giả sử Y là số tiền mỗi người Mỹ chi cho một chiếc xe mới trong một năm nhất định (tổng giá mua). Y sẽ tăng vọt về 0; sẽ không có giá trị nào trong khoảng từ 0 đến khoảng 12.000; và sẽ lấy các giá trị khác chủ yếu ở thanh thiếu niên, hai mươi và ba mươi ngàn. Những người dự đoán sẽ là những ủy nhiệm cho mức độ cần thiết và / hoặc quan tâm đến việc mua hàng như vậy. Nhu cầu hoặc lãi suất khó có thể nói là bằng không đối với các cá nhân không mua hàng; trên các thang đo này, những người không mua sẽ gần với người mua hơn Y hoặc thậm chí nhật ký của Y sẽ đề xuất. Trong một trường hợp giống như thế này nhưng trong chăm sóc sức khỏe, tôi thấy rằng những dự đoán chính xác nhất, được đánh giá bằng phương pháp xác định chéo tập hợp thử nghiệm / tập huấn luyện, đã thu được bằng cách, theo thứ tự tăng dần,

  1. Hồi quy logistic trên phiên bản nhị phân của Y,
  2. OLS trên Y,
  3. Hồi quy thông thường (PLUM) trên Y đã chia thành 5 loại (để chia người mua thành 4 nhóm có kích thước bằng nhau),
  4. Hồi quy logistic đa thức trên Y được chia thành 5 loại,
  5. OLS trên nhật ký (10) của Y (Tôi không nghĩ đến việc thử root cube) và
  6. OLS trên Y đã chia thành 5 loại.

Một số sẽ giật lại ở phân loại này của một biến phụ thuộc liên tục. Nhưng mặc dù nó hy sinh một số thông tin, việc phân loại dường như có ích bằng cách khôi phục một khía cạnh cơ bản quan trọng của tình huống - một lần nữa, "số không" giống với phần còn lại nhiều hơn Y chỉ ra.


4
Bạn cũng có thể chia nó thành hai mô hình: xác suất mua xe (phản ứng nhị phân) và giá trị của chiếc xe được mua. Đây là thông lệ tiêu chuẩn trong nhiều lĩnh vực, ví dụ như bảo hiểm, rủi ro tín dụng, v.v.
Hong Ooi

1
@HongOoi - bạn có thể đề xuất bất kỳ bài đọc nào khi phương pháp này được áp dụng và không áp dụng?
rolando2

4

Chuyển đổi năng lượng Yeo-Johnson được thảo luận ở đây có các đặc tính tuyệt vời được thiết kế để xử lý các số không và âm trong khi xây dựng các điểm mạnh của chuyển đổi năng lượng Box Cox. Đây là những gì tôi thường làm khi tôi xử lý số không hoặc dữ liệu âm.

Dưới đây là một bản tóm tắt các biến đổi với ưu / nhược điểm để minh họa tại sao Yeo-Johnson lại thích hợp hơn.

Đăng nhập

Ưu điểm: Làm tốt với dữ liệu tích cực.

Nhược điểm: Không xử lý số không.

> log(0)
[1] -Inf

Đăng nhập cộng 1

Ưu điểm: Phần bù cộng 1 bổ sung khả năng xử lý các số 0 ngoài dữ liệu dương.

Nhược điểm: Thất bại với dữ liệu âm

> log1p(-1)
[1] -Inf
> log1p(-2)
[1] NaN
Warning message:
In log1p(-2) : NaNs produced

Căn bậc hai

Ưu điểm: Sử dụng một chuyển đổi năng lượng có thể xử lý số không và dữ liệu tích cực.

Nhược điểm: Thất bại với dữ liệu âm

> sqrt(-1)
[1] NaN
Warning message:
In sqrt(-1) : NaNs produced

Hộp Cox

Mã R:

box_cox <- function(x, lambda) {

    eps <- 0.00001
    if (abs(lambda) < eps)
        log(x)
    else
        (x ^ lambda - 1) / lambda

}

Ưu điểm: Cho phép biến đổi công suất theo tỷ lệ

Nhược điểm: Bị các vấn đề với số không và số âm (nghĩa là chỉ có thể xử lý dữ liệu tích cực.

> box_cox(0, lambda = 0)
[1] -Inf
> box_cox(0, lambda = -0.5)
[1] -Inf
> box_cox(-1, lambda = 0.5)
[1] NaN

Yeo Johnson

Mã R:

yeo_johnson <- function(x, lambda) {

    eps <- .000001
    not_neg <- which(x >= 0)
    is_neg  <- which(x < 0)

    not_neg_trans <- function(x, lambda) {
        if (abs(lambda) < eps) log(x + 1)
        else ((x + 1) ^ lambda - 1) / lambda
    }

    neg_trans <- function(x, lambda) {
        if (abs(lambda - 2) < eps) - log(-x + 1)
        else - ((-x + 1) ^ (2 - lambda) - 1) / (2 - lambda)
    }

    x[not_neg] <- not_neg_trans(x[not_neg], lambda)

    x[is_neg] <- neg_trans(x[is_neg], lambda)

    return(x)

}

Ưu điểm: Có thể xử lý dữ liệu dương, không và âm.

Nhược điểm: Không ai mà tôi có thể nghĩ ra. Các thuộc tính rất giống với Box-Cox nhưng có thể xử lý dữ liệu âm và không.

> yeo_johnson(0, lambda = 0)
[1] 0
> yeo_johnson(0, lambda = -0.5)
[1] 0
> yeo_johnson(-1, lambda = 0.5)
[1] -1.218951

1
Nhược điểm cho Yeo học Johnson: biến đổi phức tạp, riêng biệt cho tích cực và tiêu cực và cho các giá trị ở hai bên của lambda, giá trị điều chỉnh ma thuật (epsilon; và lambda là gì?). Không có lợi thế rõ ràng so với chuyển đổi nhật ký mở rộng âm đơn giản hơn được hiển thị trong câu trả lời của Fireorms, trừ khi bạn yêu cầu chuyển đổi công suất theo tỷ lệ (như trong Box Box Cox).
Konrad Rudolph

1

Để làm rõ cách xử lý nhật ký bằng 0 trong các mô hình hồi quy, chúng tôi đã viết một bài báo sư phạm giải thích giải pháp tốt nhất và những sai lầm phổ biến mà mọi người mắc phải trong thực tế. Chúng tôi cũng đã đưa ra một giải pháp mới để giải quyết vấn đề này.

Bạn có thể tìm thấy bài báo bằng cách nhấn vào đây: https : //ssrn.com/abab=3444996

log(y)=βlog(x)+εβyx

YY+c>0

Trong bài viết của chúng tôi, chúng tôi thực sự cung cấp một ví dụ trong đó việc thêm các hằng số rất nhỏ thực sự mang lại độ lệch cao nhất. Chúng tôi cung cấp dẫn xuất một biểu hiện của sự thiên vị.

Trên thực tế, Poisson Pseudo Maximum Likabilities (PPML) có thể được coi là một giải pháp tốt cho vấn đề này. Người ta phải xem xét quá trình sau đây:

yi=aiexp(α+xiβ)E(ai|xi)=1

βaiyi=0E(ai|xi)=1E(yiexp(α+xiβ)|xi)=0

i=1N(yiexp(α+xiβ))xi=0

yi=0

β

log(yi+exp(α+xiβ))=xiβ+ηi

Chúng tôi cho thấy rằng công cụ ước tính này không thiên vị và nó có thể được ước tính đơn giản bằng GMM với bất kỳ phần mềm thống kê tiêu chuẩn nào. Chẳng hạn, nó có thể được ước tính bằng cách thực thi chỉ một dòng mã với Stata.

Chúng tôi hy vọng rằng bài viết này có thể giúp đỡ và chúng tôi muốn nhận phản hồi từ bạn.

Barshe Bellégo và Louis-Daniel Pape CREST - Ecole Polytechnique - ENSAE

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.