Phân phối đề xuất cho phân phối bình thường tổng quát


10

Tôi đang lập mô hình phân tán thực vật bằng cách sử dụng phân phối chuẩn tổng quát ( mục nhập wikipedia ), có hàm mật độ xác suất:

b2aΓ(1/b)e(da)b

Trong đó là quãng đường đi được, là tham số tỷ lệ và là tham số hình dạng. Khoảng cách trung bình đi được cho bởi độ lệch chuẩn của phân phối này:dab

a2Γ(3/b)Γ(1/b)

Điều này thuận tiện vì nó cho phép hình dạng hàm mũ khi , hình dạng Gaussian khi và cho phân phối leptokurtic khi . Phân phối này mọc lên thường xuyên trong tài liệu phân tán thực vật, mặc dù nói chung nó khá hiếm, và do đó rất khó tìm thấy thông tin.b=1b=2b<1

Các tham số thú vị nhất là và khoảng cách phân tán trung bình.b

Tôi đang cố gắng ước tính và bằng MCMC, nhưng tôi đang cố gắng đưa ra một cách hiệu quả để lấy mẫu các giá trị đề xuất. Cho đến nay, tôi đã sử dụng Metropolis-Hastings và rút ra từ các bản phân phối thống nhất và , và tôi nhận được khoảng cách phân tán trung bình sau khoảng 200-400 mét, điều này có ý nghĩa sinh học. Tuy nhiên, sự hội tụ thực sự rất chậm và tôi không tin nó đang khám phá không gian tham số đầy đủ.ab0<a<4000<b<3

Thật khó khăn để đưa ra một phân phối đề xuất tốt hơn cho và , bởi vì chúng phụ thuộc vào nhau, mà không có nhiều ý nghĩa riêng. Khoảng cách phân tán trung bình có ý nghĩa sinh học rõ ràng, nhưng khoảng cách phân tán trung bình nhất định có thể được giải thích bằng vô số kết hợp của và . Như vậy và có tương quan ở phía sau.ababab

Cho đến nay tôi đã sử dụng Metropolis Hastings, nhưng tôi mở cho bất kỳ thuật toán nào khác sẽ hoạt động ở đây.

Câu hỏi: Bất cứ ai cũng có thể đề xuất một cách hiệu quả hơn để vẽ các giá trị đề xuất cho và ?ab

Chỉnh sửa: Thông tin bổ sung về hệ thống: Tôi đang nghiên cứu một quần thể thực vật dọc theo thung lũng. Mục đích là để xác định sự phân bố khoảng cách di chuyển giữa phấn hoa giữa các nhà tài trợ và các nhà máy mà họ thụ phấn. Dữ liệu tôi có là:

  1. Vị trí và DNA cho mọi nhà tài trợ phấn hoa có thể
  2. Hạt giống được thu thập từ một mẫu của 60 cây mẹ (tức là máy thu phấn hoa) đã được trồng và có kiểu gen.
  3. Vị trí và DNA cho từng cây mẹ.

Tôi không biết danh tính của các nhà tài trợ, nhưng điều này có thể được suy ra từ dữ liệu di truyền bằng cách xác định nhà tài trợ nào là cha đẻ của mỗi cây con. Giả sử thông tin này được chứa trong một ma trận xác suất G với một hàng cho mỗi đứa con và một cột cho mỗi người hiến tặng, điều đó đưa ra xác suất mỗi ứng cử viên là cha của mỗi đứa con chỉ dựa trên dữ liệu di truyền. G mất khoảng 3 giây để tính toán và cần phải tính toán lại ở mỗi lần lặp, điều này làm mọi thứ chậm lại đáng kể.

Vì chúng tôi thường mong đợi các nhà tài trợ ứng cử viên gần gũi hơn có nhiều khả năng là cha, nên suy luận về quan hệ cha con sẽ chính xác hơn nếu bạn cùng suy luận về quan hệ cha con và phân tán. Ma trận D có cùng kích thước với G và chứa xác suất làm cha chỉ dựa trên hàm khoảng cách giữa mẹ và ứng cử viên và một số vectơ tham số. Các yếu tố nhân trong DG đưa ra xác suất chung về quan hệ cha con với dữ liệu di truyền và không gian. Sản phẩm của các giá trị nhân cho khả năng mô hình phân tán.

Như đã mô tả ở trên, tôi đã sử dụng GND để phân tán mô hình. Trong thực tế, tôi thực sự đã sử dụng hỗn hợp GND và phân phối đồng đều để cho phép các ứng cử viên ở rất xa có khả năng làm cha cao hơn do chỉ có cơ hội (di truyền lộn xộn) sẽ làm phồng cái đuôi rõ ràng của GND nếu bị bỏ qua. Vậy xác suất của khoảng cách phân tán là:d

cPr(d|a,b)+(1c)N

Trong đó là xác suất khoảng cách phân tán từ GND, N là số lượng ứng cử viên và ( ) xác định mức độ đóng góp của GND cho phân tán.Pr(d|a,b)c0<c<1

Do đó, có hai cân nhắc bổ sung làm tăng gánh nặng tính toán:

  1. Khoảng cách phân tán không được biết nhưng phải được suy ra ở mỗi lần lặp và tạo G để thực hiện việc này rất tốn kém.
  2. Có một tham số thứ ba, , để tích hợp hơn.c

Vì những lý do này, dường như tôi đã quá phức tạp để thực hiện phép nội suy lưới, nhưng tôi rất vui khi được thuyết phục bằng cách khác.

Thí dụ

Dưới đây là một ví dụ đơn giản về mã python tôi đã sử dụng. Tôi đã đơn giản hóa ước tính quan hệ cha con từ dữ liệu di truyền, vì điều này sẽ liên quan đến rất nhiều mã bổ sung và thay thế nó bằng một ma trận các giá trị từ 0 đến 1.

Đầu tiên, xác định các hàm để tính GND:

import numpy as np
from scipy.special import gamma

def generalised_normal_PDF(x, a, b, gamma_b=None):
    """
    Calculate the PDF of the generalised normal distribution.

    Parameters
    ----------
    x: vector
        Vector of deviates from the mean.
    a: float
        Scale parameter.
    b: float
        Shape parameter
    gamma_b: float, optional
        To speed up calculations, values for Euler's gamma for 1/b
        can be calculated ahead of time and included as a vector.
    """
    xv = np.copy(x)
    if gamma_b:
        return (b/(2 * a * gamma_b ))      * np.exp(-(xv/a)**b)
    else:
        return (b/(2 * a * gamma(1.0/b) )) * np.exp(-(xv/a)**b)

def dispersal_GND(x, a, b, c):
    """
    Calculate a probability that each candidate is a sire
    assuming assuming he is either drawn at random form the
    population, or from a generalised normal function of his
    distance from each mother. The relative contribution of the
    two distributions is controlled by mixture parameter c.

    Parameters
    ----------
    x: vector
        Vector of deviates from the mean.
    a: float
        Scale parameter.
    b: float
        Shape parameter
    c: float between 0 and 1.
        The proportion of probability mass assigned to the
        generalised normal function.
    """    
    prob_GND = generalised_normal_PDF(x, a, b)
    prob_GND = prob_GND / prob_GND.sum(axis=1)[:, np.newaxis]

    prob_drawn = (prob_GND * c) + ((1-c) / x.shape[1])
    prob_drawn = np.log(prob_drawn)

    return prob_drawn

Tiếp theo mô phỏng 2000 ứng cử viên, và 800 con. Cũng mô phỏng một danh sách khoảng cách giữa mẹ của con cái và cha ứng cử viên, và một ma trận G giả .

n_candidates = 2000 # Number of candidates in the population
n_offspring  = 800 # Number of offspring sampled.
# Create (log) matrix G.
# These are just random values between 0 and 1 as an example, but must be inferred in reality.
g_matrix  = np.random.uniform(0,1, size=n_candidates*n_offspring)
g_matrix  = g_matrix.reshape([n_offspring, n_candidates])
g_matrix  = np.log(g_matrix)
# simulate distances to ecah candidate father
distances = np.random.uniform(0,1000, 2000)[np.newaxis]

Đặt giá trị tham số ban đầu:

# number of iterations to run
niter= 100
# set intitial values for a, b, and c.
a_current = np.random.uniform(0.001,500, 1)
b_current = np.random.uniform(0.01,  3, 1)
c_current = np.random.uniform(0.001,  1, 1)
# set initial likelihood to a very small number
lik_current = -10e12

Cập nhật lần lượt a, b và c và tính tỷ lệ đô thị.

# number of iterations to run
niter= 100
# set intitial values for a, b, and c.
# When values are very small, this can cause the Gamma function to break, so the limit is set to >0.
a_current = np.random.uniform(0.001,500, 1)
b_current = np.random.uniform(0.01,  3, 1)
c_current = np.random.uniform(0.001,  1, 1)
# set initial likelihood to a very small number
lik_current = -10e12 
# empty array to store parameters
store_params = np.zeros([niter, 3])

for i in range(niter):
    a_proposed = np.random.uniform(0.001,500, 1)
    b_proposed = np.random.uniform(0.01,3, 1)
    c_proposed = np.random.uniform(0.001,1, 1)

    # Update likelihood with new value for a
    prob_dispersal = dispersal_GND(distances, a=a_proposed, b=b_current, c=c_current)
    lik_proposed = (g_matrix + prob_dispersal).sum() # lg likelihood of the proposed value
    # Metropolis acceptance ration for a
    accept = bool(np.random.binomial(1, np.min([1, np.exp(lik_proposed - lik_current)])))
    if accept:
        a_current = a_proposed
        lik_current = lik_proposed
    store_params[i,0] = a_current

    # Update likelihood with new value for b
    prob_dispersal = dispersal_GND(distances, a=a_current, b=b_proposed, c=c_current)
    lik_proposed = (g_matrix + prob_dispersal).sum() # log likelihood of the proposed value
    # Metropolis acceptance ratio for b
    accept = bool(np.random.binomial(1, np.min([1, np.exp(lik_proposed - lik_current)])))
    if accept:
        b_current = b_proposed
        lik_current = lik_proposed
    store_params[i,1] = b_current

    # Update likelihood with new value for c
    prob_dispersal = dispersal_GND(distances, a=a_current, b=b_current, c=c_proposed)
    lik_proposed = (g_matrix + prob_dispersal).sum() # lg likelihood of the proposed value
    # Metropolis acceptance ratio for c
    accept = bool(np.random.binomial(1, np.min([1, np.exp(lik_proposed - lik_current)])))
    if accept:
        c_current = c_proposed
        lik_current = lik_proposed
    store_params[i,2] = c_current

2
Bạn đang tìm kiếm một ưu tiên trên a và b, hoặc cho một phân phối đề xuất trong thuật toán Metropolis-Hastings? Bạn dường như đã sử dụng cả hai thuật ngữ thay thế cho nhau.
Robin Ryder

Bạn đúng - xin lỗi vì đã không rõ ràng. Tôi quan tâm nhất đến việc phân phối đề xuất cho MH. Tôi đã thay đổi tiêu đề nơi tôi đề cập đến các linh mục.
Tellis

Trong một căn hộ hoặc Jeffreys trước , nghĩa là, hoặc Tôi tin rằng việc thay đổi biến thành tạo ra một đóng -form điều kiện . aπ(a)1π(a)1/aα=abπ(a|b,data)
Tây An


Hiện vẫn chưa rõ liệu bạn có quan tâm đến việc đặt ưu tiên giúp hoặc điều hành Metropolis-Hastings hiệu quả hơn hay không.
Tây An

Câu trả lời:


2

Bạn không cần sử dụng phương pháp Markov Chain Monte Carlo (MCMC).

Nếu bạn đang sử dụng các bản phân phối thống nhất trước đó thì bạn đang làm một cái gì đó rất giống như ước tính khả năng tối đa trên một không gian hạn chế cho các tham số và .ab

P(a,b;d)=P(d;a,b)P(a,b)P(d)=L(a,b;d)×const

trong đó là một hằng số (độc lập với và ) và nó có thể được tìm thấy bằng cách nhân rộng hàm khả năng sao cho nó tích hợp thành 1.P(a,b)P(d)ab

Hàm khả năng đăng nhập, cho iid biến là:ndiGN(0,a,b)

logL(a,b;d)=nlog(2a)nlog(Γ(1/b)b)1abi=1n(di)b

Đối với chức năng này, không quá khó để vẽ đồ thị và tìm tối đa.


Phép nội suy gird này sẽ hoạt động cho hai tham số và khoảng cách quan sát được, và có thể là điều tôi kết thúc. Trên thực tế, tôi đang thực hiện ước tính chung về khoảng cách phân tán và suy luận quan hệ cha con, bao gồm ít nhất một tham số khác để tích hợp và một thuật ngữ khả năng bổ sung rất chậm (~ 3 giây mỗi lần lặp) thực sự làm chậm chuỗi. Tôi nghĩ rằng tôi sẽ cần số lần lặp nhiều hơn gấp 10 lần so với hiện tại tôi đang sử dụng cho chuỗi markov.
Tellis

@tellis những thuật ngữ 'khoảng cách phân tán' và 'suy luận cha con' tôi không thực sự hiểu. Có lẽ bạn có thể cung cấp một số thông tin cụ thể hơn bằng cách thêm một tập dữ liệu hoặc một phần của nó. Trong khi làm điều đó, bạn cũng có thể nói nhiều hơn về 'một tham số khác'. Vì vậy, những gì dữ liệu là nó mà bạn làm có?
Sextus Empiricus

1
Tôi đã thêm một ví dụ sử dụng dữ liệu mô phỏng.
Tellis

0

Tôi hoàn toàn không hiểu cách bạn thiết lập mô hình: cụ thể, đối với tôi, đối với một hạt giống nhất định, khoảng cách phân tán phấn hoa có thể là một tập hợp hữu hạn và do đó "xác suất phân tán" của bạn có thể được gọi là " tỷ lệ phân tán "(vì nó sẽ cần được chuẩn hóa bằng cách tính tổng các cha giả định là một xác suất). Do đó, các tham số có thể không hoàn toàn có ý nghĩa (như trong, các giá trị hợp lý) mà bạn mong đợi.

Tôi đã từng làm việc với một vài vấn đề tương tự trong quá khứ và vì vậy tôi sẽ cố gắng lấp đầy những khoảng trống trong sự hiểu biết của mình, như một cách gợi ý một cách tiếp cận / cái nhìn quan trọng có thể. Xin lỗi nếu tôi hoàn toàn bỏ lỡ điểm câu hỏi ban đầu của bạn. Điều trị dưới đây về cơ bản theo Hadfield et al (2006) , một trong những bài báo tốt hơn về loại mô hình này.

Đặt biểu thị kiểu gen tại locus cho một số riêng lẻ . Đối với con cái có mẹ là và cha giả định , hãy để xác suất của kiểu gen con được quan sát là - trong trường hợp đơn giản nhất, đây đơn giản là một sản phẩm của xác suất thừa kế Mendel, nhưng trong các trường hợp phức tạp hơn có thể bao gồm một số mô hình lỗi kiểu gen hoặc thiếu kiểu gen của cha mẹ, vì vậy tôi bao gồm các tham số phiền toái ) .Xl,klkimif

Gi,f=lPr(Xl,i|Xl,mi,Xl,f,θ)
θ

Đặt là khoảng cách phân tán phấn hoa cho con cái và đặt là khoảng cách giữa mẹ đã biết và cha giả định và đặt là tỷ lệ phân tán (ví dụ: sự kết hợp có trọng số của các tệp pdf thông thường và thống nhất như trong câu hỏi của bạn). Để biểu thị tốc độ phân tán như một xác suất, bình thường hóa wrt vào không gian trạng thái hữu hạn: tập hợp (hữu hạn) khoảng cách phân tán có thể được tạo ra bởi số lượng (cha) hữu hạn trong khu vực nghiên cứu của bạn, sao cho δiidmi,fmifDi,f=q(dmi,f|a,b,c)

D~i,f=Pr(δi=dmi,f|a,b,c)=Di,fkDi,k

Đặt là sự gán ghép của hạt giống , đó là nếu thực vật là cha của con cái . Giả sử đồng phục trước khi giao nhiệm vụ làm cha, Nói cách khác, có điều kiện dựa trên các tham số và kiểu gen khác, gán cha là một rv rời rạc với sự hỗ trợ hữu hạn, được chuẩn hóa bằng cách tích hợp qua hỗ trợ đã nói (những người cha có thể).PiiPi=ffi

Pr(Pi=f|a,b,c,θ,X)=Gi,fD~i,fkGi,kD~i,k=Gi,fDi,fkGi,kDi,k

Vì vậy, một cách hợp lý để viết một bộ lấy mẫu đơn giản cho vấn đề này là Metropolis-bên trong Gibbs:

  1. Có điều kiện trên , cập nhật các bài tập quan hệ cha con cho tất cả . Đây là một rv riêng biệt với sự hỗ trợ hữu hạn để bạn có thể dễ dàng vẽ một mẫu chính xác{a,b,c,θ}Pii
  2. Có điều kiện trên , cập nhật với bản cập nhật Metropolis-Hastings. Để hình thành mục tiêu, chỉ cần cập nhật các giá trị trong các phương trình trên, vì vậy điều này không tốn kém{Pi,θ}a,b,cD
  3. Có điều kiện trên , cập nhật với bản cập nhật MH. Để hình thành mục tiêu, các giá trị cần được cập nhật, rất tốn kém, nhưng thì không.{Pi,a,b,c}θGD

Để giảm chi phí vẽ các mẫu của , bạn có thể thực hiện các bước 1-2 nhiều lần trước 3. Để điều chỉnh phân phối đề xuất trong các bước 2-3, bạn có thể sử dụng các mẫu từ lần chạy sơ bộ đến ước tính hiệp phương sai của phân phối sau chung cho . Sau đó sử dụng ước lượng hiệp phương sai này trong một đề xuất Gaussian đa biến. Tôi chắc chắn đây không phải là cách tiếp cận hiệu quả nhất, nhưng nó rất dễ thực hiện.{a,b,c}{a,b,c,θ}

Bây giờ, sơ đồ này có thể gần với những gì bạn đang làm (Tôi không thể nói bạn làm mẫu như thế nào từ câu hỏi của bạn). Nhưng ngoài mối quan tâm tính toán, điểm lớn hơn của tôi là các tham số có thể không có nghĩa như bạn nghĩ chúng làm, liên quan đến khoảng cách phân tán. Điều này là do, trong bối cảnh mô hình quan hệ cha con tôi đã mô tả ở trên, nhập vào cả tử số và mẫu số (hằng số chuẩn hóa): do đó, sự sắp xếp không gian của các nhà máy sẽ có tác động mạnh mẽ đến các giá trị của có khả năng cao hoặc xác suất sau. Điều này đặc biệt đúng khi sự phân bố không gian của cây không đồng đều.a,b,cPr(Pi|)a,b,ca , b , ca,b,c

Cuối cùng, tôi khuyên bạn nên xem bài báo Hadfield được liên kết ở trên và gói R đi kèm ("MasterBayes"), nếu bạn chưa có. Ít nhất nó có thể cung cấp ý tưởng.


Cách tiếp cận của tôi thực sự được mô phỏng theo Hadfield, với hai thay đổi lớn: (1) hạt giống từ mẹ có thể là anh chị em đầy đủ, và do đó không độc lập. Do đó, vấn đề là một trong những suy luận chung về cấu trúc phân tán, quan hệ cha con, dơi cũng vậy. (2) Tôi đang sử dụng phương pháp làm cha phân đoạn để xem xét tất cả các ứng cử viên đồng thời tương ứng với khả năng làm cha của họ, thay vì cập nhật các nhiệm vụ làm cha theo tuần tự, bởi vì có một không gian rộng lớn của những người cha có thể khám phá.
Tellis

Tôi đang sử dụng gói FAPS để làm những việc đó.
Tellis

Câu hỏi của tôi về cơ bản là hỏi về phân phối đề xuất hiệu quả để thực hiện quan điểm của bạn 2. Phần còn lại của câu trả lời của bạn mô tả một cái gì đó rất gần với những gì tôi đã làm, bao gồm cả việc xây dựng sản phẩm của G và D (nhưng cảm ơn vì điều này - tôi đã không Tôi chắc chắn rằng tôi đã thực hiện nó một cách chính xác, vì vậy thật hữu ích khi biết một cặp mắt thứ hai đồng ý!).
Tellis

Tôi không có một phân phối đề xuất giải pháp đóng hộp, xin lỗi. Nhưng tôi có một vài quan sát: (1) Các bước 1-2 rất rẻ và có thể được lặp đi lặp lại nhiều lần với chi phí thấp trước khi chuyển sang bước 3. Ngay cả với một đề xuất kém chất lượng ở bước 2, rất nhiều lần lặp lại cũng đủ để " thực hiện các bước di chuyển lớn "trong không gian trạng thái của . a,b,c
Giáo hoàng Nate

(2) Phân phối có điều kiện trong bước 2 là 3 chiều. Như trong: dễ hình dung. Mục tiêu không chuẩn hóa của trông như thế nào trong ước tính MAP về các nhiệm vụ làm cha cho một cố định ? Hình dung mục tiêu không chuẩn hóa trên các nhóm khác nhau sẽ cho bạn cảm giác nếu nó đa phương thức, bằng phẳng trong các khu vực, v.v.Ga,b,cG
Nate Pope
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.