Tôi đang làm việc thông qua Think Bayes (miễn phí tại đây: http://www.greenteapress.com/thinkbayes/ ) và tôi đang tập thể dục 3.1. Dưới đây là tóm tắt về vấn đề:
"Một đường sắt đánh số đầu máy xe lửa theo thứ tự 1..N. Một ngày nọ, bạn thấy một đầu máy xe lửa với số 60. Ước tính có bao nhiêu đầu máy xe lửa có đường sắt."
Giải pháp này được tìm thấy với hàm khả năng và hàm mũ theo cấp số nhân như vậy:
class Train(Suite):
def __init__(self, hypos, alpha=1.0):
# Create an exponential prior
Pmf.__init__(self)
for hypo in hypos:
self.Set(hypo, hypo**(-alpha))
self.Normalize()
def Likelihood(self, data, hypo):
if hypo < data:
return 0
else:
return (1.0/hypo)
Về mặt khái niệm, điều này có nghĩa là, nếu chúng ta thấy số lượng tàu lớn hơn một trong những giả thuyết của chúng ta (1 ... 1000) thì mọi giả thuyết nhỏ hơn đều không có cơ hội đúng. Phần còn lại của các giả thuyết có cơ hội 1 / number_of_trains cho chúng ta thấy một chuyến tàu với con số này.
Trong bài tập tôi đang làm việc với tác giả, sau đó thêm vào một chút. Điều này giả định chỉ có một công ty. Tuy nhiên, trong cuộc sống thực, bạn có sự kết hợp giữa các công ty lớn và nhỏ và các công ty lớn hơn (cả hai đều có khả năng như nhau). Tuy nhiên, điều này có nghĩa là bạn có nhiều khả năng nhìn thấy một chuyến tàu từ một công ty lớn hơn vì họ có nhiều chuyến tàu hơn.
Bây giờ câu hỏi là làm thế nào để phản ánh điều này trong chức năng khả năng?
Đây không phải là Stack Overflow vì vậy tôi không thực sự yêu cầu trợ giúp về mã hóa, mà thay vào đó có lẽ chỉ giúp về cách tôi có thể nghĩ về vấn đề này theo chức năng khả năng.