Ước tính phân phối dựa trên ba phần trăm


23

Tôi có thể sử dụng phương pháp nào để suy ra phân phối nếu tôi chỉ biết ba phần trăm?

Ví dụ: tôi biết rằng trong một tập dữ liệu nhất định, phân vị thứ năm là 8.135, phân vị thứ 50 là 11.259 và phân vị thứ 95 là 23.611. Tôi muốn có thể đi từ bất kỳ số nào khác đến phần trăm của nó.

Đó không phải là dữ liệu của tôi và đó là tất cả số liệu thống kê tôi có. Rõ ràng là phân phối không bình thường. Thông tin khác duy nhất tôi có là dữ liệu này đại diện cho tài trợ bình quân đầu người của chính phủ cho các khu học chánh khác nhau.

Tôi biết đủ về số liệu thống kê để biết rằng vấn đề này không có giải pháp xác định, nhưng không đủ để biết cách tìm kiếm những dự đoán tốt.

Một phân phối hợp lý sẽ là phù hợp? Tôi có thể sử dụng công cụ nào để thực hiện hồi quy (hoặc tôi cần phải tự làm)?


Tôi đã thêm thẻ r để mã R được tô sáng trong nhận xét của tôi
mpiktas

Để biết ví dụ chi tiết về cùng một câu hỏi (và giải pháp của nó), hãy xem chuỗi trùng lặp tại stats.stackexchange.com/questions/133129 .
whuber

Câu trả lời:


17

Sử dụng một phương pháp thống kê thuần túy để thực hiện công việc này sẽ hoàn toàn không cung cấp thêm thông tin nào về phân phối chi tiêu của trường: kết quả sẽ chỉ phản ánh sự lựa chọn thuật toán tùy ý.

Bạn cần thêm dữ liệu .

Điều này rất dễ xảy ra: sử dụng dữ liệu từ các năm trước, từ các quận tương đương, bất cứ điều gì. Ví dụ, chi tiêu liên bang cho 14866 khu học chánh trong năm 2008 có sẵn từ trang Điều tra dân số . Điều đó cho thấy rằng trên toàn quốc, tổng doanh thu liên bang trên đầu người (đã đăng ký) được phân phối gần đúng theo tỷ lệ, nhưng việc phá vỡ nó theo tiểu bang cho thấy sự thay đổi đáng kể ( ví dụ: chi tiêu nhật ký ở Alaska có độ lệch âm trong khi chi tiêu nhật ký ở Colorado có độ lệch dương mạnh mẽ) . Sử dụng những dữ liệu đó để mô tả hình thức phân phối có khả năng và sau đó khớp lượng tử của bạn với hình thức đó.

Nếu bạn thậm chí gần với hình thức phân phối phù hợp, thì bạn sẽ có thể sao chép chính xác các lượng tử bằng cách khớp một hoặc nhiều nhất hai tham số. Kỹ thuật tốt nhất để tìm sự phù hợp sẽ phụ thuộc vào hình thức phân phối bạn sử dụng, nhưng - quan trọng hơn nhiều - nó sẽ phụ thuộc vào những gì bạn định sử dụng kết quả cho. Bạn có cần ước tính một khoản chi tiêu trung bình? Giới hạn trên và dưới về chi tiêu? Dù đó là gì, bạn muốn áp dụng một số biện pháp về sự phù hợp sẽ mang lại cho bạn cơ hội tốt nhất để đưa ra quyết định tốt với kết quả của bạn. Ví dụ: nếu sự quan tâm của bạn tập trung vào 10% trên của tất cả chi tiêu, bạn sẽ muốn điều chỉnh chính xác phần trăm thứ 95 và bạn có thể quan tâm rất ít đến việc phù hợp với phần trăm thứ 5. Không có kỹ thuật phù hợp tinh vi sẽ làm cho những cân nhắc cho bạn.

Tất nhiên không ai có thể đảm bảo một cách hợp pháp rằng phương pháp định hướng dữ liệu, dựa trên quyết định này sẽ thực hiện tốt hơn (hoặc tệ hơn) so với một số công thức thống kê, nhưng - không giống như một phương pháp thống kê thuần túy - phương pháp này có cơ sở trong thực tế, tập trung vào nhu cầu của bạn, mang lại cho nó một số tín nhiệm và bảo vệ chống lại sự chỉ trích.


2
+1 Bạn cần thêm dữ liệunhững gì bạn định sử dụng kết quả để được nhấn mạnh thêm.
vqv

2
Có vẻ như có rất nhiều sự khôn ngoan trong câu trả lời của bạn. Tôi sẽ phải tham khảo thêm với những người đặt ra vấn đề cho tôi về những gì họ muốn. Cảm ơn bạn đã liên kết và lời khuyên.
Đánh dấu Eichenlaub

1
@Mark Chúc may mắn!
whuber

23

Như @whuber đã chỉ ra, các phương pháp thống kê không hoạt động chính xác ở đây. Bạn cần suy ra sự phân phối từ các nguồn khác. Khi bạn biết phân phối, bạn có một bài tập giải phương trình phi tuyến tính. Biểu thị bằng hàm lượng tử của phân phối xác suất đã chọn của bạn với vectơ tham số . Những gì bạn có là hệ phương trình phi tuyến sau:θfθ

q0.05=f(0.05,θ)q0.5=f(0.5,θ)q0.95=f(0.95,θ)

trong đó là lượng tử của bạn. Bạn cần giải quyết hệ thống này để tìm . Bây giờ đối với thực tế cho bất kỳ phân phối 3 tham số nào, bạn sẽ tìm thấy các giá trị của các tham số thỏa mãn phương trình này. Đối với phân phối 2 tham số và 1 tham số, hệ thống này được xác định quá mức, do đó không có giải pháp chính xác. Trong trường hợp này, bạn có thể tìm kiếm một tập hợp các tham số giúp giảm thiểu sự khác biệt:θqθ

(q0.05f(0.05,θ))2+(q0.5f(0.5,θ))2+(q0.95f(0.95,θ))2

Ở đây tôi đã chọn hàm bậc hai, nhưng bạn có thể chọn bất cứ thứ gì bạn muốn. Theo nhận xét của @whuber, bạn có thể gán trọng số, để các lượng tử quan trọng hơn có thể được gắn chính xác hơn.

Đối với bốn tham số trở lên, hệ thống không được xác định trước, do đó, vô số giải pháp tồn tại.

Dưới đây là một số mã R mẫu minh họa phương pháp này. Với mục đích trình diễn, tôi tạo ra các lượng tử từ phân phối Singh-Maddala từ gói VGAM . Phân phối này có 3 tham số và được sử dụng trong mô hình phân phối thu nhập.

 q <- qsinmad(c(0.05,0.5,0.95),2,1,4)
 plot(x<-seq(0,2,by=0.01), dsinmad(x, 2, 1, 4),type="l")
 points(p<-c(0.05, 0.5, 0.95), dsinmad(p, 2, 1, 4))

văn bản thay thế

Bây giờ hình thành hàm đánh giá hệ phương trình phi tuyến tính:

 fn <- function(x,q) q-qsinmad(c(0.05, 0.5, 0.95), x[1], x[2], x[3])

Kiểm tra xem giá trị thực có thỏa mãn phương trình không:

 > fn(c(2,1,4),q)
   [1] 0 0 0

Để giải hệ phương trình phi tuyến tính, tôi sử dụng hàm nleqslvtừ gói nlqeslv .

 > sol <- nleqslv(c(2.4,1.5,4.3),fn,q=q)
 > sol$x       
  [1] 2.000000 1.000000 4.000001

Như chúng ta thấy, chúng ta có được giải pháp chính xác. Bây giờ chúng ta hãy cố gắng phù hợp với phân phối log-normal cho các lượng tử này. Đối với điều này, chúng tôi sẽ sử dụng optimchức năng.

 > ofn <- function(x,q)sum(abs(q-qlnorm(c(0.05,0.5,0.95),x[1],x[2]))^2)
 > osol <- optim(c(1,1),ofn)
 > osol$par
   [1] -0.905049  0.586334

Bây giờ vẽ kết quả

  plot(x,dlnorm(x,osol$par[1],osol$par[2]),type="l",col=2)
  lines(x,dsinmad(x,2,1,4))
  points(p,dsinmad(p,2,1,4))

văn bản thay thế

Từ đó chúng ta thấy ngay rằng hàm số bậc hai không tốt lắm.

Hi vọng điêu nay co ich.


1
Tuyệt quá! Cảm ơn tất cả những nỗ lực đã đi vào đây, mpiktas. Tôi không quen thuộc với R, nhưng mã của bạn được giải thích đủ tốt để tôi vẫn có thể dễ dàng biết bạn đang làm gì.
Đánh dấu Eichenlaub

Cảm ơn rất nhiều cho ví dụ này. Tôi nghĩ rằng có 2 sai lầm trong ofn <- function(x,q) sum(abs(q-qlnorm(c(0.05,0.5,0.95),x[1],x[2]))^2). Tôi đề xuất ofn <- function(x) sum(abs(q-qlnorm(c(0.05,0.5,0.95),x[1],x[2],x[3]))^2)qkhông phải là một đầu vào cho ofn, và X[3]bị thiếu. Trân trọng

9

Hãy thử gói rriskDistribution và - nếu bạn chắc chắn về họ phân phối lognatural - hãy sử dụng lệnh

get.lnorm.par(p=c(0.05,0.5,0.95),q=c(8.135,11.259,23.611))

mà nên giải quyết vấn đề của bạn. Sử dụng fit.percthay thế nếu bạn không muốn giới hạn ở một pdf đã biết.


Giải pháp siêu đơn giản!
luchonacho

6

Đối với một tỷ lệ logic, tỷ lệ phần trăm thứ 95 so với trung vị giống như tỷ lệ của phần trăm trung bình so với phần trăm thứ 5. Điều đó thậm chí gần như không đúng ở đây vì vậy lognatural sẽ không phù hợp.

Bạn có đủ thông tin để phù hợp với một phân phối có ba tham số và rõ ràng bạn cần phân phối lệch. Để đơn giản phân tích, tôi đề nghị phân phối logistic logistic thay đổihàm lượng tử của nó (nghĩa là nghịch đảo của hàm phân phối tích lũy của nó) có thể được viết ở dạng đóng đơn giản hợp lý, vì vậy bạn có thể nhận được các biểu thức dạng đóng cho ba tham số của nó theo ba số lượng tử của bạn với một chút đại số (tôi sẽ để nó như một bài tập!). Phân phối này được sử dụng trong phân tích tần suất lũ.

Điều này sẽ không cung cấp cho bạn bất kỳ dấu hiệu nào về sự không chắc chắn trong các ước tính của các lượng tử khác. Tôi không biết nếu bạn cần điều đó, nhưng là một nhà thống kê tôi cảm thấy mình có thể cung cấp nó, vì vậy tôi không thực sự hài lòng với câu trả lời này. Tôi chắc chắn sẽ không sử dụng phương pháp này, hoặc có thể là bất kỳ phương pháp nào , để ngoại suy (phần lớn) ngoài phạm vi của phần trăm thứ 5 đến 95.


1
Cảm ơn vì lời khuyên. Re: lognatural - Tôi có thể làm cho các tỷ lệ phần trăm thành trung bình hoạt động bằng cách trừ 7077 khỏi mọi thứ, sau đó thêm lại vào cuối. Làm thế nào xấu một ý tưởng sẽ được?
Đánh dấu Eichenlaub

1
Điểm hay, điều đó sẽ mang lại một 'phân phối log-log thông thường'. Log-normal và log-logistic có hình dạng khá giống nhau ngoài các đuôi nặng hơn sau này, vì vậy bạn có thể thử cả hai và so sánh kết quả.
vào

So sánh thế nào? Lognatural thay đổi được đảm bảo để phù hợp với các lượng tử hoàn hảo. Hầu như bất kỳ gia đình ba tham số sẽ phù hợp hoàn hảo. Làm thế nào để bạn so sánh hai phù hợp hoàn hảo?
whuber

@whuber Ý tôi là so sánh các dự đoán kết quả cho các phần trăm tương ứng với các giá trị khác
vào

Tôi đang thiếu một cái gì đó: những giá trị khác? OP tuyên bố rằng chỉ có ba phần trăm có sẵn, không có gì khác.
whuber

2

Về những điều duy nhất bạn có thể suy ra từ dữ liệu là phân phối không đối xứng. Bạn thậm chí không thể biết liệu những lượng tử đó đến từ một phân phối được trang bị hay chỉ là ecdf.

Nếu chúng đến từ một bản phân phối được trang bị, bạn có thể thử tất cả các bản phân phối mà bạn có thể nghĩ ra và xem có phù hợp không. Nếu không, gần như không có đủ thông tin. Bạn có thể nội suy một đa thức bậc 2 hoặc bậc 3 cho hàm lượng tử và sử dụng điều đó, hoặc đưa ra một lý thuyết về gia đình phân phối và so khớp các lượng tử, nhưng mọi suy luận bạn sẽ thực hiện với các phương pháp này sẽ bị nghi ngờ sâu sắc.


1
Đa thức và spline dường như không phải là CDF hợp lệ.
whuber

Quan sát tốt. Trong trường hợp này, đa thức bậc hai thông thường không hoạt động, nhưng có vô số phép chia bậc hai để chọn (nghĩ Bézier) không nên có cùng một vấn đề (mặc dù một số vẫn có thể yêu cầu cắt miền). Tương tự như vậy, nó có thể tìm thấy một spline khối đơn điệu phù hợp. Tôi nhận thức được các thuật toán spline đảm bảo tính đơn điệu, nhưng hiện tại tôi không thể tìm thấy một thuật toán, vì vậy tôi phải để lại vấn đề tại "chọn thứ gì đó bạn thích hoạt động như cdf".
Sesqu

Bạn có thể đi xa đến mức phù hợp với một spline đơn điệu (hoặc bất cứ thứ gì) với logarit của các lượng tử, nhờ đó thu được một cái gì đó hợp lý trong phạm vi của các lượng tử. Nhưng điều này không giúp được gì trong việc lắp đuôi ngoài hai lượng tử cực trị. Người ta nên miễn cưỡng để cho một khía cạnh quan trọng như vậy của sự phù hợp để lại các đặc điểm tình cờ của thủ tục khớp số.
whuber

2

Việc sử dụng các lượng tử để ước tính các tham số của phân phối tiên nghiệm được thảo luận trong tài liệu về đo lường thời gian đáp ứng của con người là "ước lượng xác suất tối đa lượng tử" (QMPE, mặc dù ban đầu được gọi nhầm là "ước lượng khả năng tối đa lượng tử", QMLE), được thảo luận theo chiều dài của Heathcote và các đồng nghiệp . Bạn có thể phù hợp với một số phân phối tiên nghiệm khác nhau (ex Gaussian, Logn normal, Wald và Weibull) sau đó so sánh khả năng ghi nhật ký tổng hợp của kết quả phù hợp nhất cho mỗi phân phối để tìm ra hương vị phân phối có vẻ phù hợp nhất.


2
Bất kỳ phân phối ba tham số nào cũng được đảm bảo phù hợp hoàn hảo với ba lượng tử . Do đó, thật hợp lý khi sử dụng phương pháp này để chỉ phù hợp với một hoặc hai tham số. Cũng không có ý nghĩa gì khi so sánh sự phù hợp một tham số với sự phù hợp hai tham số (với một gia đình khác nhau) chỉ dựa trên khả năng.
whuber

@whuber, re: "Bất kỳ phân phối ba tham số nào cũng được đảm bảo phù hợp hoàn hảo với ba lượng tử". Tôi đã không nhận ra rằng, rất tốt để biết! re: "Cũng không có ý nghĩa gì khi so sánh sự phù hợp một tham số với sự phù hợp hai tham số (với một gia đình khác) chỉ dựa trên khả năng." À vâng, thực sự; Tôi đã không đề cập đến việc người ta sẽ phải áp dụng một số hiệu chỉnh phức tạp (AIC, BIC, ...) nếu so sánh sự phù hợp với hương vị phân phối với số lượng tham số khác nhau. Cảm ơn đã chỉ ra rằng.
Mike Lawrence

Tôi đã phóng đại một chút, bởi vì tôi đã nghĩ đến hai trong số các tham số là tỷ lệ và vị trí và thứ ba bao gồm một loạt các hình dạng. Mặc dù vậy, hầu hết các gia đình ba tham số có đủ độ linh hoạt để phù hợp với ba phần trăm miễn là chúng hoàn toàn khác biệt.
whuber

1

Bạn có thể sử dụng thông tin phân vị của mình để mô phỏng dữ liệu theo một cách nào đó và sử dụng gói "logspline" để ước tính phân phối không theo quy chuẩn. Dưới đây là chức năng của tôi sử dụng một phương pháp như thế này.

calc.dist.from.median.and.range <- function(m, r) 
{
    ## PURPOSE: Return a Log-Logspline Distribution given (m, r).
    ##          It may be necessary to call this function multiple times in order to get a satisfying distribution (from the plot). 
    ## ----------------------------------------------------------------------
    ## ARGUMENT:
    ##   m: Median
    ##   r: Range (a vector of two numbers)
    ## ----------------------------------------------------------------------
    ## RETURN: A log-logspline distribution object.
    ## ----------------------------------------------------------------------
    ## AUTHOR: Feiming Chen,  Date: 10 Feb 2016, 10:35

    if (m < r[1] || m > r[2] || r[1] > r[2]) stop("Misspecified Median and Range")

    mu <- log10(m)
    log.r <- log10(r)

    ## Simulate data that will have median of "mu" and range of "log.r"
    ## Distribution on the Left/Right: Simulate a Normal Distribution centered at "mu" and truncate the part above/below the "mu".
    ## May keep sample size intentionaly small so as to introduce uncertainty about the distribution. 
    d1 <- rnorm(n=200, mean=mu, sd=(mu - log.r[1])/3) # Assums 3*SD informs the bound
    d2 <- d1[d1 < mu]                   # Simulated Data to the Left of "mu"
    d3 <- rnorm(n=200, mean=mu, sd=(log.r[2] - mu)/3)
    d4 <- d3[d3 > mu]                   # Simulated Data to the Right of "mu"
    d5 <- c(d2, d4)                     # Combined Simulated Data for the unknown distribution

    require(logspline)
    ans <- logspline(x=d5)
    plot(ans)
    return(ans)
}
if (F) {                                # Unit Test 
    calc.dist.from.median.and.range(m=1e10, r=c(3.6e5, 3.1e12))
    my.dist <- calc.dist.from.median.and.range(m=1e7, r=c(7e2, 3e11))
    dlogspline(log10(c(7e2, 1e7, 3e11)), my.dist) # Density
    plogspline(log10(c(7e2, 1e7, 3e11)), my.dist) # Probability
    10^qlogspline(c(0.05, 0.5, 0.95), my.dist) # Quantiles 
    10^rlogspline(10, my.dist) # Random Sample 
}
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.