Máy tính thống kê Bootstrapping

Để làm cho các giới hạn đó có thể so sánh được với giá trị trung bình đã cắt được quan sát (7. 225), chúng tôi đã nhân chúng với sai số chuẩn của nó (độ lệch chuẩn của phương tiện cắt giảm bootstrap ở giai đoạn đầu) đưa ra giới hạn là 4. 019533 và 13. 505900

    Lưu ý rằng các khoảng này rộng hơn các khoảng phần trăm đơn giản mà chúng tôi thu được,
    Máy tính thống kê Bootstrapping
    như bạn mong đợi khi mức độ phù hợp được tăng lên. Tuy nhiên, vì chúng được lấy từ một mẫu dữ liệu lệch rời rạc khiêm tốn, nên chúng tôi nghi ngờ rằng các khoảng này có thể hơi quá rộng.

  • Làm mịn giới hạn phần trăm
  • Chúng tôi đã áp dụng trình tự đã cho ở trên

    Máy tính thống kê Bootstrapping
    bằng cách sử dụng mã R này.

      Để đơn giản, chúng tôi đã sử dụng làm mịn Gaussian đơn giản và khoảng phân vị đơn giản. Dưới đây là phân phối dữ liệu ban đầu và được làm mịn của chúng tôi

    Máy tính thống kê Bootstrapping

      Do đó, vì những dữ liệu này là số đếm, dữ liệu bootstrap bị xáo trộn được làm tròn thành số nguyên dương gần nhất

    Các giới hạn bootstrap được làm mịn phần trăm đơn giản mà chúng tôi thu được là 6. 875 và 7. 925

      Các giới hạn này, mặc dù rộng hơn các giới hạn phần trăm đơn giản (không được làm mịn) của chúng tôi, nhưng
      Máy tính thống kê Bootstrapping
      lại hẹp hơn các khoảng t bootstrap của chúng tôi (ở trên).

  • Giới hạn phần trăm thử nghiệm đảo ngược
  • Chúng tôi đã áp dụng trình tự đã cho ở trên

    Máy tính thống kê Bootstrapping
    bằng cách sử dụng mã R sau.

      Lưu ý rằng vì những dữ liệu này không thể phát sinh nếu quần thể không có ấu trùng cryptolignacae, số lượng âm là không thể và những số lượng này khá sai lệch, chúng tôi đã xây dựng quần thể mô hình của mình bằng cách dịch chuyển từng phần của quần thể tỷ lệ thuận với sự khác biệt của nó từ 0

      Ngoài ra, để tránh phải lặp lại, chúng tôi đã thu được kết quả của mình dưới dạng biểu đồ giá trị P và sử dụng các giá trị giới hạn độ tin cậy ước tính bằng phép nội suy

      Hơn nữa, vì những dữ liệu này được tính, thay vì lấy mẫu một mô hình tham số (được trang bị) tùy ý, chúng tôi đã sử dụng một bootstrap được làm mịn. Tuy nhiên, vì việc thay đổi dân số mô hình của chúng tôi sẽ thay đổi phương sai của nó, nên chúng tôi đã tính toán băng thông sau mỗi lần thay đổi

      Cuối cùng, vì chúng tôi đang thay đổi mẫu nhưng lấy mẫu lại mẫu đã làm mịn, giả sử tham số mà chúng tôi đang ước tính là giá trị trung bình đã cắt bớt 10% của tổng thể, chúng tôi đã giả định thêm rằng một mẫu gồm 50 × 5000 quan sát sẽ cho chúng tôi một kết quả hợp lý không thiên vị.

    Các giới hạn đảo ngược thử nghiệm mà chúng tôi thu được, sau 100 thử nghiệm bootstrap phần trăm được làm mịn bằng Gaussian, là 6. 673416 và 7. 668602

    Chúng tôi đã xuất bản một bài báo về giải quyết một cách có hệ thống sự không chắc chắn trong học máy nguyên tử, trong đó chúng tôi tập trung vào một phương pháp tổng hợp bootstrap cơ bản

    Peterson, Christensen và Khorshidi, “Giải quyết sự không chắc chắn trong học máy nguyên tử”, PCCP 19. 10978-10985, 2017. DOI. 10. 1039/C7CP00375G

    Một mô-đun trợ giúp để tạo các máy tính bootstrap, có khả năng đưa ra không chỉ dự đoán mô hình trung bình mà cả các khoảng không chắc chắn, được mô tả tại đây. Lưu ý rằng bạn nên thận trọng khi sử dụng các khoảng không chắc chắn và, như chúng tôi mô tả trong bài báo trên, cách giải thích “đúng” về việc nhìn thấy các giới hạn không chắc chắn lớn đối với một cấu hình nguyên tử cụ thể là cần phải có một phép tính cấu trúc điện tử mới (ở cấu hình đó),

    Tập huấn¶

    Đoạn script dưới đây cho thấy một ví dụ đơn giản về việc tạo một nhóm bootstrap gồm 10 máy tính cho một tập huấn luyện mẫu nhỏ. (Nhưng bạn có thể muốn có kích thước tập hợp lớn hơn 10 để có số liệu thống kê hợp lý. )

    from amp.utilities import Logger
    from amp.stats.bootstrap import BootStrap
    
    
    def generate_data(count, filename='training.traj'):
        """Generates test or training data with a simple MD simulation."""
        import os
        from ase import Atoms, Atom, units
        import ase.io
        from ase.calculators.emt import EMT
        from ase.build import fcc110
        from ase.md.velocitydistribution import MaxwellBoltzmannDistribution
        from ase.md import VelocityVerlet
        from ase.constraints import FixAtoms
        if os.path.exists(filename):
            return
        traj = ase.io.Trajectory(filename, 'w')
        atoms = fcc110('Pt', (2, 2, 2), vacuum=7.)
        atoms.extend(Atoms([Atom('Cu', atoms[7].position + (0., 0., 2.5)),
                            Atom('Cu', atoms[7].position + (0., 0., 5.))]))
        atoms.set_constraint(FixAtoms(indices=[0, 2]))
        atoms.calc = EMT()
        atoms.get_potential_energy()
        traj.write(atoms)
        MaxwellBoltzmannDistribution(atoms, 300. * units.kB)
        dyn = VelocityVerlet(atoms, dt=1. * units.fs)
        for step in range(count - 1):
            dyn.run(50)
            traj.write(atoms)
    
    
    generate_data(5, 'training.traj')
    
    calc_text = """
    from amp import Amp
    from amp.descriptor.gaussian import Gaussian
    from amp.model.neuralnetwork import NeuralNetwork
    from amp.model import LossFunction
    
    calc = Amp(descriptor=Gaussian(),
               model=NeuralNetwork(),
               dblabel='../amp-db',
               envcommand='loadamp')
    calc.model.lossfunction = LossFunction(force_coefficient=0.,
        convergence={'force_rmse': None})
    """
    
    start_command = 'python run.py'
    
    calc = BootStrap(log=Logger('bootstrap.log'))
    calc.train(images='training.traj', n=10, calc_text=calc_text,
               start_command=start_command, label='bootstrap')
    

    Chạy đoạn script trên một lần và đợi nó hoàn thành (có thể là <1 phút). Bạn sẽ thấy rất nhiều thư mục được tạo bằng máy tính tập hợp. Chạy lại cùng một tập lệnh và nó sẽ dọn sạch/lưu trữ các thư mục này vào một tệp nén (. hắc ín. gz) và tạo tệp tham số máy tính có tên là 'bootstrap. ensemble', mà bạn có thể tải bằng Bootstrap(load='bootstrap. quần thể'), như được mô tả sau

    Đầu tiên, một số lưu ý trên. Các máy tính riêng lẻ được tạo bằng biến calc_text trong tập lệnh trên;

    Ở phần trên, start_command tùy chọn là lệnh để bắt đầu công việc, mặc định là “python run. py”. Tại đây, nó chạy tuần tự quá trình đào tạo của từng máy tính; . Nếu máy của bạn có >10 lõi hoặc bạn không quan tâm đến việc tất cả các quy trình đào tạo đều cạnh tranh để giành tài nguyên, thì bạn có thể cho tất cả chúng chạy song song bằng cách đặt dấu và (trong hệ thống *nix) ở cuối dòng này, nghĩa là “ . tôi &”

    Rất có thể, bạn muốn chạy ứng dụng này trên cụm máy tính hiệu suất cao sử dụng hệ thống xếp hàng. Trong trường hợp này, start_command là lệnh xếp hàng của bạn, đối với hệ thống SLURM của chúng tôi, đây chỉ là

    start_command = 'sbatch run.py'
    

    Nếu bạn cần cung cấp các tiêu đề cho hệ thống xếp hàng của mình, bạn có thể thực hiện chúng với nội dung như bên dưới

    headerlines = """#SBATCH --time=00:30:00
    #SBATCH --nodes=1
    #SBATCH --ntasks-per-node=8
    #SBATCH --partition=batch
    """
    
    ...
    
    calc.train(images='training.traj', n=10, train_line=train_line,
               calc_text=calc_text, headerlines=headerlines,
               start_command=start_command, label='bootstrap')
    

    Theo cách tương tự, bạn cũng có thể cung cấp một train_line tùy chỉnh nếu cần;

    Đang tải và sử dụng¶

    Nhóm bootstrap có thể được tải thông qua từ khóa tải của máy tính. Tập lệnh bên dưới hiển thị một ví dụ về tải máy tính và sử dụng nó để dự đoán năng lượng và sự lan truyền của quần thể cho các hình ảnh đào tạo

    import ase.io
    from amp.stats.bootstrap import BootStrap
    
    
    calc = BootStrap(load='bootstrap.ensemble')
    
    traj = ase.io.Trajectory('training.traj')
    
    for image in traj:
                  energies = calc.get_potential_energy(image,
                                   output=(0.05, 0.5, 0.95))
                  print(energies)
                  energy = image.get_potential_energy()
                  print(energy)
    

    Lưu ý rằng cuộc gọi đến calc. get_potential_energy trả về ba dự đoán năng lượng, ở phân vị thứ 5, 50 (trung vị) và 95, như được chỉ định với bộ (0. 05, 0. 5, 0. 95). Khi bạn chạy chương trình này, bạn sẽ thấy rằng dự đoán trung bình phù hợp với năng lượng thực (từ hình ảnh. get_potential_energy) khá tốt, trong khi sự lan truyền trong dữ liệu là do sự thưa thớt của dữ liệu;

    Đào tạo rảnh tay¶

    Trong sử dụng điển hình, việc gọi phương thức train() của lớp BootStrap sẽ tạo ra nhiều công việc đào tạo độc lập. Các cuộc gọi tiếp theo để đào tạo sẽ giúp bạn quản lý những công việc đó. kiểm tra cái nào đã hội tụ, kiểm tra cái nào không hội tụ (và gửi lại chúng), kiểm tra cái nào đã hết thời gian (và gửi lại chúng) và, nếu tất cả đã hội tụ, tạo một máy tính đi kèm. Có thể hiệu quả nhất khi gửi một công việc (lõi đơn) liên tục gọi lệnh này cho bạn và đóng vai trò là người quản lý công việc cho đến khi tất cả các công việc đào tạo hoàn tất. Điều này có thể đạt được bằng cách tận dụng từ điển kết quả do tàu trả về, như trong tập lệnh ví dụ bên dưới sử dụng các lệnh môi trường SLURM

    Giá trị bootstrap được tính như thế nào?

    Các giá trị bootstrap trong cây phát sinh gen cho biết rằng trong số 100, có bao nhiêu lần cùng một nhánh được quan sát thấy khi lặp lại quá trình tạo cây phát sinh gen trên một tập hợp dữ liệu được lấy mẫu lại. If we get this observation 100 times out of 100, then this supports our result.

    Làm thế nào để tính toán khoảng thời gian bootstrap?

    Tính toán δ* = x* − x cho mỗi mẫu bootstrap (x là giá trị trung bình của dữ liệu gốc), sắp xếp chúng từ nhỏ nhất đến lớn nhất. Chọn δ. 1 là phân vị thứ 90, δ. 9 là phân vị thứ 10 của danh sách đã sắp xếp của δ*, cung cấp khoảng tin cậy 80% cho [x−δ.

    bootstrapping có ý nghĩa gì trong thống kê?

    Bootstrapping là lấy mẫu có thay thế từ dữ liệu được quan sát để ước tính độ biến thiên trong một thống kê quan tâm . Xem thêm phép thử hoán vị, một hình thức lấy mẫu lại có liên quan. Một ứng dụng phổ biến của bootstrap là đánh giá độ chính xác của ước tính dựa trên một mẫu dữ liệu từ một dân số lớn hơn.

    Làm thế nào để khởi động trong Excel?

    Ví dụ từng bước sau đây cho thấy cách thực hiện bootstrapping trong Excel. .
    Bước 1. Nhập dữ liệu gốc
    Bước 2. Tạo mẫu Bootstrap
    Bước 3. Tính toán thống kê quan tâm cho từng mẫu
    Bước 4. Tính khoảng tin cậy Bootstrapped
    Tài nguyên bổ sung