1 điểm bởi GN⁺ 2025-04-16 | 1 bình luận | Chia sẻ qua WhatsApp
  • Trong các phép tính có đầu vào dao động như chuyển việc, tính khả thi kinh doanh hay đầu tư, phạm vi kết quả có thể xảy ra thường hữu ích cho việc ra quyết định hơn là một con số duy nhất
  • Unsure Calculator cho phép nhập các khoảng như 4~6 để tính với giá trị không chắc chắn, và 10~15 có nghĩa là bạn tin chắc 95% rằng giá trị thực nằm trong khoảng đó
  • Kết quả không phải là một số đơn lẻ mà là khoảng giá trị, phân phối xác suất và các bách phân vị; trong ví dụ chuyển việc ra nước ngoài, công cụ cho thấy số dư hàng tháng có thể nằm trong khoảng -$60~+$220
  • Để giữ đầu vào đơn giản, công cụ bỏ qua các ký hiệu như loại phân phối, mức tin cậy hay hiệp phương sai; phần tính toán bên trong dùng phương pháp Monte Carlo nên chậm và thông báo lỗi cũng không thân thiện
  • Đây không phải công cụ cho chuyên gia thống kê mà phù hợp với các phép tính kiểu mặt sau khăn giấy như ý tưởng kinh doanh, tiết kiệm thời gian, rủi ro đại dịch hay ROI marketing; với phân tích phức tạp thì cần công cụ chuyên dụng

Đưa những con số không chắc chắn vào phép tính

  • Unsure Calculator là phiên bản đầu của một máy tính bất định để xử lý các con số không chắc chắn
  • Nó đơn giản hóa thống kê thành bài toán “dù các con số không chắc chắn, tôi vẫn muốn suy luận từ chúng”
  • Ngay cả các phép tính thường ngày cũng có nhiều đầu vào không chắc chắn, nên ngay cả khi không phải chuyên gia thống kê, đôi lúc bạn vẫn cần tính toán có tính đến sự bất định

Cách ghi khoảng giá trị

  • Ngoài các số thông thường như 4, 3.14, 43942, công cụ còn hỗ trợ nhập khoảng như 4~6, 3.1~3.2, 40000~45000
  • ~ là dấu ngã nằm giữa hai giá trị biên và cũng có trên bàn phím của máy tính
  • Cách ghi khoảng này có nghĩa là “không biết giá trị chính xác, nhưng tin chắc 95% rằng giá trị thực nằm trong khoảng này”
  • 10~15 có thể đọc là “10 đến 15”
  • Có thể hỗ trợ thêm các ký hiệu cho phân phối xác suất khác, mức tin cậy khác, cắt ngưỡng hay hiệp phương sai, nhưng chúng bị loại bỏ vì sẽ làm mọi thứ khó hiểu hơn
    • Giả định ở đây là những người đã quen với các khái niệm đó nên dùng công cụ tinh vi hơn
    • Mục tiêu là giúp nhiều người dùng có thể dễ dàng tận dụng sức mạnh của tính toán thống kê

Cái bẫy khi chỉ tính bằng một con số

  • Khi gặp giá trị không chắc chắn, ta rất dễ bỏ qua với suy nghĩ “cả hai đều không chắc nên không quan trọng”
  • Nếu chọn một con số có vẻ hợp lý để tính, ta bị hấp dẫn bởi sự đơn giản của một đáp án duy nhất, nhưng kết quả thực tế có thể không chỉ có một
  • Unsure Calculator phản ánh nhiều kết quả có thể xảy ra trong phép tính để cho thấy cả rủi ro lẫn dư địa

Ví dụ tính tài chính khi chuyển việc ra nước ngoài

  • Điểm khởi đầu là tình huống năm 2015, khi tác giả tính ảnh hưởng tài chính với gia đình trước một cơ hội làm việc ở nước ngoài
    • Mức lương chỉ được biết sau khi đã đi qua gần hết quy trình tuyển dụng
    • Chi phí sinh hoạt tại chỗ chênh lệch lớn giữa thông tin từ bạn bè và trên Internet
    • Thuế suất cũng khó gói gọn thành một tỷ lệ phần trăm đơn giản
  • Ban đầu tác giả tính bằng các giá trị đơn lẻ có vẻ bảo thủ
1500 * 0.6 - 650 - 150 - 30 - 20 = 50
  • Phép tính này chỉ cho ra một kết quả là còn +$50 mỗi tháng
  • Khi đưa các khoảng vào để tính lại, kết quả thay đổi
1400~1700 * 0.55~0.65 - 600~700 - 100~200 - 30 - 20 = -60~220
  • Nếu tin chắc 95% rằng giá trị thực của từng hạng mục nằm trong khoảng tương ứng, thì cũng có thể xem số dư thực mỗi tháng nằm trong khoảng -$60 đến +$220
  • Lý do nó hữu ích hơn giá trị đơn +$50 là vì nó còn cho thấy cả khả năng bị lỗ tiền
  • Các bách phân vị cho thông tin cụ thể hơn để ra quyết định
    • Nếu bách phân vị thứ 10 là -$8, thì xác suất số dư hàng tháng ở mức -$8 hoặc thấp hơn là 10%
    • Ngược lại, 90% kết quả sẽ cao hơn -$8
    • Bạn cũng có thể cân nhắc rủi ro 5% là bị lỗ từ -$33 mỗi tháng trở lên
  • Việc có chấp nhận rủi ro hay không sẽ tùy vào gia đình và hoàn cảnh
    • Mức chấp nhận rủi ro có thể khác giữa lúc chưa có con, chưa có thế chấp nhà và khi đã có
    • Nếu không có kế hoạch dự phòng, khả năng lỗ 10% có thể cần được nhìn nhận thận trọng hơn

Ví dụ phương trình Drake

  • Dù hướng đến các phép tính thực dụng, bài viết cũng dùng phương trình Drake (Drake equation) để minh họa việc ước lượng số nền văn minh ngoài Trái Đất
  • Đây là công thức vật lý thiên văn để ước tính số nền văn minh trong thiên hà có thể liên lạc được
  • Các giá trị gốc của Frank Drake năm 1961 được nhân từ các yếu tố sau
    • Mỗi năm có 1 ngôi sao được hình thành trong thiên hà
    • Trong số đó, 1/5 có khoảng 3 hành tinh
    • 100% các hành tinh đó phát triển sự sống
    • 100% sự sống đó phát triển trí thông minh
    • 10% trong số đó có khả năng liên lạc
    • Trạng thái có thể liên lạc kéo dài 1 triệu năm
  • Nhân các giá trị này lại sẽ được 60,000, tức kết luận rằng tại bất kỳ thời điểm nào cũng nên có 60.000 nền văn minh đang cố gắng liên lạc trong thiên hà
  • Từ năm 1961 đến nay, ước lượng cho từng tham số đã khác biệt rất lớn giữa các nhà vật lý thiên văn
  • Ví dụ dùng các ước lượng mới hơn dưới dạng khoảng như sau
1.5~3 x 0.9~1.0 x 0.1~0.4 x 0.1~1.0 x 0.1~1.0 x 0.1~0.2 x 304~10000
  • Kết quả từ Unsure Calculator cho thấy số nền văn minh có thể kỳ vọng nằm trong khoảng 0 đến 450
  • Xác suất nghiêng về phía thấp hơn, và histogram cũng trải rộng hơn ở vùng thấp
  • Trên histogram có thể xuất hiện cả số âm như -5
    • Đây là giới hạn của một công cụ ưu tiên sự đơn giản
    • Nếu không có thêm tri thức, máy tính không thể biết rằng số nền văn minh không thể là số âm

Các trường hợp sử dụng có thể có

  • Có thể tính mức khả thi của ý tưởng kinh doanh
    • Khi quy mô thị trường, thị phần, doanh thu hàng tháng trên mỗi người dùng và chi phí vận hành đều không chắc chắn
50000~80000 x 0.10~0.20 x 5~10 - 20000~50000
  • Có thể ước tính thu nhập tương lai
    • Khi thu nhập hàng tháng, thời hạn hợp đồng và thuế suất đều không chắc chắn
1000~1500 x 10~12 x (30~50 / 100)
  • Có thể tính thời gian được tiết kiệm nhờ công nghệ như máy rửa chén
    • Khi số lần dùng mỗi tuần, thời gian tiết kiệm mỗi lần dùng, tuổi thọ và chi phí lắp đặt đều không chắc chắn
(3~5 * 5~10 * 51 * 7~15) / 60 - 10~15
  • Có thể ước tính tổng lợi nhuận của tài khoản đầu tư
    • Khi lãi suất và thời gian đầu tư đều không chắc chắn
5000 x (-2~5 / 100) x 5~10
  • Có thể tính gần đúng xác suất tử vong trong đại dịch
    • Khi tỷ lệ mắc và tỷ lệ tử vong đều không chắc chắn
(10~30 / 100) * (0.1~1.0 / 100) * 100
  • Có thể ước tính chiều cao của một tòa nhà cao tầng
    • Khi khoảng cách đến chân tòa nhà và góc nhìn lên đỉnh đều không chắc chắn
100 x tan(70 ~ 80)
  • Có thể ước tính ROI của một chiến dịch marketing
    • Khi lượt xem, tỷ lệ nhấp, tỷ lệ chuyển đổi và chi tiêu đều không chắc chắn
1000000 x (2~3 / 100) x (3~5 / 100) x (10~15)

Các hàm được hỗ trợ

  • Bàn phím chỉ có +, -, x, /, nhưng ngay từ giai đoạn đầu công cụ đã hỗ trợ nhiều phép tính hơn
  • Một số hàm và phép toán ví dụ gồm
    • 2~3 ^ 4: lũy thừa bậc 4 của giá trị từ 2 đến 3
    • sqrt(10~12): căn bậc hai của giá trị từ 10 đến 12
    • sin(90~95): sin của giá trị từ 90 đến 95 độ

Giới hạn và cách chia sẻ

  • Đây là dự án một người nên cần chấp nhận khả năng vỡ lỗi
  • Trình phân tích biểu thức còn mong manh và thông báo lỗi không hữu ích
  • Tính toán khá chậm
    • Để giữ tính linh hoạt, công cụ dùng phương pháp Monte Carlo
    • Mỗi phép tính được nhập sẽ chạy khoảng 250.000 lần tính dựa trên AST
  • Giao diện rất đơn giản và không đẹp mắt
  • Cách duy nhất để chia sẻ công thức là tự tạo URL trực tiếp
  • range luôn là phân phối chuẩn
    • Số thấp là thấp hơn trung bình 2 độ lệch chuẩn
    • Số cao là cao hơn trung bình 2 độ lệch chuẩn
    • Không hỗ trợ cách biểu diễn phức tạp hơn từ góc nhìn phân phối xác suất đầu vào
  • Đây không phải công cụ cho chuyên gia thống kê
    • Có thể dùng Unsure Calculator cho các phép tính kiểu mặt sau khăn giấy
    • Với công việc phức tạp hơn, sẽ cần công cụ thống kê miễn phí hoặc trả phí, môi trường lập trình đầy đủ hoặc chuyên gia thống kê

Dự án và cập nhật

  • Nếu muốn tham gia cải thiện công cụ hoặc lấy phiên bản dòng lệnh, có thể dùng github.com/filiph/unsure
  • Theo cập nhật năm 2025, ký pháp và công cụ này đã được dùng trong 5 năm và trở thành phần thiết yếu trong quy trình làm việc khi bắt đầu dự án mới
  • Có thể xem phiên bản ứng dụng notebook mới hơn tại đây
    • Nó kém thân thiện với người mới hơn nhưng hữu ích hơn cho power user
  • Nếu quan tâm đến dự án, có thể theo dõi Filip Hracek hoặc đăng ký mailing list

1 bình luận

 
GN⁺ 2025-04-16
Ý kiến trên Hacker News
  • Tôi thích công cụ này. Nhưng đúng theo truyền thống HN, tôi sẽ bám vào một từ trong bài và nói về một nhánh gần-như-nhưng-thực-ra-không-hoàn-toàn-liên-quan: có ít nhất ba điểm dễ tự bắn vào chân trong kiểu tính toán này

    1. 95% rộng hơn rất nhiều so với điều mọi người thường nghĩ. Người ta hay hiểu 95% là “chắc cỡ này là đúng”, nhưng thực ra nó gần với “nếu không phải thế thì cũng khá bất ngờ đấy”. Nói chung mọi người thường đặt thanh sai số trong đầu quá hẹp
    2. Các xác suất hiếm khi thực sự độc lập. Có thể gọi đây là châm ngôn kiểu Mortgage Derivatives. Trong ví dụ về gia đình, tiền thuê nhà rất có thể liên quan tới chi phí ăn uống, và nếu tiền thuê cao thì chi phí ăn uống cũng có khả năng cao hơn. Điều này làm phân phối bị méo, và nếu mô hình hóa bằng phân phối đều không trọng số thì bạn sẽ ngạc nhiên vì kết quả thực tế trông “hiếm” đến mức nào
    3. Nói chung, phân phối chuẩn hiếm hơn nhiều so với điều mọi người tưởng. Nó thường cần một số yếu tố ràng buộc lên giá trị để bị ép thành như vậy. Trong tự nhiên có rất nhiều vòng phản hồi âm nên ta thấy nó khá thường xuyên, nhưng khi bước ra khỏi khu vườn thiên nhiên tương đối ngăn nắp để vào sự hỗn loạn của đời sống con người thì phân phối chuẩn lại khá bất thường
      Công cụ và cách triển khai đều tốt, nhưng tôi đã thấy quá nhiều người mới cầm thống kê lên là mất một ngón tay
    • Rất đồng ý với ý này, đặc biệt là điểm 1. Nếu bảo mọi người ước lượng khoảng cho một câu trả lời mà họ tự tin 90%, thì trung bình họ chỉ đưa ra một khoảng tương đương khoảng tin cậy 30%
      Hơn 90% số người còn không đạt nổi khoảng tin cậy 70%. Bạn có thể tự kiểm tra: https://blog.codinghorror.com/how-good-an-estimator-are-you/
    • Tôi từng làm một dự án với các bên liên quan không chuyên kỹ thuật để mô hình hóa ngày hoàn thành dự kiến của một biểu đồ Gantt lớn. Một số đầu việc là mới và không thực tế để định lượng bằng thời lượng cố định, nên phía kinh doanh muốn thời gian hoàn thành công việc theo xác suất
      Các bên liên quan cực kỳ thích cách chỉ định thời lượng công việc là t_i ~ PERT(min, mode, max). Nó giống với cách họ suy nghĩ và còn xử lý được các phân phối bất đối xứng vốn phổ biến ngoài đời
      Nhân tiện, PERT thực chất chỉ là phân phối beta được tái tham số hóa theo cách thân thiện và trực quan hơn với người dùng: https://rpubs.com/Kraj86186/985700
    • Nó khá khớp với ấn tượng chung tôi có sau khi đọc bài. Khi độ phức tạp và độ khó của việc suy luận về các khoảng tăng lên, tôi lại càng ít tin hơn vào kết quả tính trong ví dụ
      Kết quả $50 thì ổn, và nếu gắn thêm một khoảng cộng/trừ vào đó thì nhìn chung có thể cảm nhận là đang gần điểm hòa vốn. Nhưng cách diễn đạt “xác suất 95% là số dư thực tế nằm trong khoảng -$60 đến +$220” lại tạo cảm giác sai lầm rằng ta có thông tin cụ thể hơn, trong khi ở mỗi bước chỉ đơn giản là cộng thêm sự chồng ghép của bất định
      Nếu bạn không biết liệu từng hạng mục có thật sự là 95% hay không, hoặc giá trị tối thiểu/tối đa thật sự là gì, thì bạn chỉ đang thêm nhiều phỏng đoán có khả năng sai hơn mà thôi. Vì thế tôi cũng không thích Drake equation lắm. Mỗi bước đều là chồng chất những ước đoán rất thô, nên tôi nghi ngờ liệu cuối cùng có tạo ra được con số hữu ích hay không
    • Tôi không thực sự đồng ý với ý “tiền thuê nhà rất có khả năng tương quan mạnh với chi phí ăn uống, và nếu tiền thuê cao thì chi phí ăn uống cũng có khả năng cao hơn”. Một mô hình mà tiền thuê trung bình tương quan với chi phí ăn uống trung bình là hợp lý, nhưng nếu đã cho trước hai tham số đó thì dao động quanh giá trị trung bình có thể được mô hình hóa là không tương quan
      Dù sao thì, đến lúc bạn muốn tính đến những thứ như vậy thì nên làm thống kê Bayes cho đàng hoàng
      Tôi cũng không hiểu câu “phân phối chuẩn cần một yếu tố ràng buộc nào đó để ép giá trị” xuất phát từ đâu. Thứ cần thiết là sai số không tương quan, chứ không phải “ràng buộc” hay “phản hồi âm”
    • Tôi chưa từng nghĩ về thống kê như đồ nghề điện hay súng ống, nhưng phép ví von “người mới cầm thống kê lên là mất một ngón tay” thực sự rất chuẩn
  • Tôi từng làm một công cụ tương tự
    fermi cho dòng lệnh: https://git.nunosempere.com/NunoSempere/fermi
    máy tính phân phối cho Android: https://f-droid.org/en/packages/com.nunosempere.distribution...
    Bạn cũng có thể quan tâm tới phiên bản phức tạp hơn là https://www.squiggle-language.com/. Hoặc phiên bản C nhanh hơn nhưng dài dòng hơn nhiều là <https://git.nunosempere.com/personal/squiggle.c>

    • Cụ thể, Fermi có cú pháp như sau
      5M 12M # number of people living in Chicago  
      
      beta 1 200 # fraction of people that have a piano  
      
      30 180 # minutes it takes to tune a piano, including travel time  
      
      / 48 52 # weeks a year that piano tuners work for  
      
      / 5 6 # days a week in which piano tuners work  
      
      / 6 8 # hours a day in which piano tuners work  
      
      / 60 # minutes to an hour  
      
      Phép nhân được ngầm coi là phép toán mặc định, còn phân phối tùy chỉnh là phân phối log-normal
    • Một công cụ khác cùng nhóm là <https://carlo.app/>. Nó cho phép làm kiểu tính toán này trong Google Sheets
    • Sẽ là một chi tiết hay nếu Squiggle hỗ trợ cú pháp a~b :^)
    • Tôi đã thử unsure calc và ứng dụng Android, có vẻ như chúng cho ra kết quả khác nhau
  • Tuyệt. Nếu bạn thích bài viết này thì bài báo “Dissolving the Fermi Paradox” cũng có thể sẽ thú vị. Bài đó đào sâu hơn vào việc thực sự nhân các hàm mật độ xác suất thay vì dùng các ước lượng điểm thông thường
    Khá bất ngờ là nó đưa ra kết quả rằng có thể chúng ta thật sự chỉ có một mình
    https://arxiv.org/abs/1806.02404

    • Thành thật mà nói thì hơi u ám, nhưng gần như toàn bộ trang này vẫn đáng đọc chỉ riêng vì phương pháp luận
  • Tôi cũng đã làm một công cụ tương tự, dành cho dòng lệnh[1], và động lực cũng gần giống nhưng tham vọng hơn một chút[2]
    Thật tuyệt khi ngày càng có nhiều người suy nghĩ theo cách này. Năng lực suy luận về nguồn gốc của biến thiên không phải thứ ai cũng được đào tạo hay tự phát triển, nhưng nó đang ngày càng quan trọng hơn[3]
    [1]: https://git.sr.ht/~kqr/precel
    [2]: https://entropicthoughts.com/precel-like-excel-for-uncertain...
    [3]: https://entropicthoughts.com/statistical-literacy

  • Biểu đồ tần suất ASCII art, hay chính xác hơn là ANSI art, rất hay. Đây là một cú hack tốt để nhanh chóng làm ra thứ gì đó hữu dụng
    Nếu là tôi thì chắc đã mất thời gian gấp 5 lần để thử đủ loại thư viện vẽ biểu đồ rồi bỏ cuộc

    • Cùng mạch đó, các minh họa vẽ tay thô mộc cũng khá ổn. Rất hợp với chủ đề “khăn giấy ăn”
    • Ở đây [1] có một bản triển khai ổn viết bằng Awk. Hơi thô nhưng có vẻ dễ mở rộng
      [1] https://github.com/stefanhengl/histogram
  • https://www.getguesstimate.com/ là phiên bản bảng tính của ý tưởng này

  • Có cách nào để làm phép nhân mà không phải là nhân vô hướng không? Ví dụ, nếu tôi muốn diễn đạt “tổng của ba lần tung xúc xắc”, thì bỏ qua việc nó không phải phân phối chuẩn, tôi sẽ muốn 1~6 * 3 = 1~6 + 1~6 + 1~6 = 6~15
    Nhưng trên thực tế nó lại thành 1~6 * 3 = 3~18. Điều này khiến những phép tính kiểu “sẽ mất bao lâu để hoàn thành 1000 tác vụ, mỗi tác vụ tốn 10~100 ngày?” trở nên thực sự khó làm

  • Sẽ hay hơn nếu có thể chuyển đầu ra trở lại thành khoảng hoặc phân phối Gauss
    Lưu ý: nếu bạn thắc mắc vì sao biểu đồ tần suất có số âm (-5), đó là nhược điểm không thể tránh khỏi do sự đơn giản của Unsure Calculator. Nếu không có thêm tri thức, máy tính không thể biết rằng giá trị âm là không thể
    Phương trình Drake hay các phương trình nhân xác suất cũng có thể được xét trong không gian log. Có độ bất định trên thang đo của từng xác suất, và xác suất cuối cùng là kết quả của việc lấy mũ của các log-xác suất rồi nhân chúng lại. Khi đó sẽ không gặp vấn đề số âm kiểu này

    • Ví dụ cơ bản 100 / 4~6 cho ra đầu ra 17~25
  • Ban đầu nghe có vẻ như đồ chơi, nhưng trông lại hữu ích một cách bất ngờ. Nếu có bản app để dùng cạnh máy tính thường ngày thì tôi chắc chắn sẽ cài
    Tôi không nhớ chính xác khi nào mình cần đến nó, nhưng nếu gán vào một phím tắt trên bàn phím thì rất có thể tôi sẽ bắt đầu tìm ra việc để dùng nó

    • Tôi đã thử đưa vào đây các con số, tức dân số × tỷ lệ sở hữu × tần suất thay thế × đơn giá, để ước tính doanh thu hằng năm của thị trường smartphone, và kết quả chỉ lệch vài điểm phần trăm so với số liệu thực tế trên Internet
      Nó cũng có lượng giác, nên có vẻ phù hợp để thiết kế ngược các bộ phận phức tạp từ những phép đo đơn giản. Ví dụ như thể tích hình dạng, góc cạnh, diện tích mặt cắt các kiểu
      Sẽ tốt nếu hỗ trợ phân phối đa đỉnh, nhưng không bắt buộc. Hàm lượng giác ngược cũng thú vị, nhưng phức tạp và không thiết yếu
      Dù sao thì công cụ này tiện hơn việc cứ phải mở Python mỗi lần cần ước lượng một khoảng đáp án
    • Nếu cần app thì có thể cân nhắc https://f-droid.org/en/packages/com.nunosempere.distribution...
    • Vì ngôn ngữ chính là Dart, nên có vẻ sẽ dễ làm một ứng dụng Flutter từ đây
  • Yêu cầu tính năng: sẽ hay hơn nếu có thể chỉ định phân phối xác suất. Ví dụ ~ là phân phối chuẩn, _ là phân phối đều, kiểu vậy

    • Tôi nghĩ những thứ này nên là hàm. Ví dụ phân phối Gauss với µ=50, σ=1 là G(50, 1), phân phối mũ âm với λ=3 là N(3), phân phối đều từ 0 đến 1 là U(0, 1), và phân phối đều nguyên từ 1 đến 6 là UI(1, 6)
      Như vậy sẽ linh hoạt hơn nhiều và cũng dễ nhớ hơn
    • Việc không có tính năng này tự nó lại là một tính năng. Bài viết cũng nói như vậy