Làm thế nào để quản lý hiệu quả một dự án phân tích thống kê?


89

Chúng ta thường nghe về quản lý dự án và các mẫu thiết kế trong khoa học máy tính, nhưng ít thường xuyên hơn trong phân tích thống kê. Tuy nhiên, dường như một bước quyết định để thiết kế một dự án thống kê hiệu quả và lâu dài là giữ cho mọi thứ được tổ chức.

Tôi thường ủng hộ việc sử dụng R và một tổ chức nhất quán của các tệp trong các thư mục riêng biệt (tệp dữ liệu thô, tệp dữ liệu được chuyển đổi, tập lệnh R, số liệu, ghi chú, v.v.). Lý do chính cho cách tiếp cận này là có thể dễ dàng hơn để chạy phân tích của bạn sau này (khi bạn quên cách bạn đã tạo ra một âm mưu cụ thể, chẳng hạn).

Các thực tiễn tốt nhất để quản lý dự án thống kê hoặc các đề xuất bạn muốn đưa ra từ kinh nghiệm của chính bạn là gì? Tất nhiên, điều này áp dụng cho bất kỳ phần mềm thống kê. ( một câu trả lời cho mỗi bài viết, xin vui lòng )


Tôi đang bỏ phiếu để đóng câu hỏi này ngoài chủ đề vì đó là về quản lý dự án
Aksakal

2
@Aksakal: Tôi nghĩ bạn hơi khắc nghiệt. :) Nó có liên quan đến " những người quan tâm đến số liệu thống kê ". Ngoài ra, hơn 70 phiếu bầu đề nghị mạnh mẽ người dùng tiêu chuẩn tìm thấy câu hỏi quan tâm và hữu ích này.
usεr11852

1
Tôi nghĩ rằng điều này nên được xem xét về chủ đề ở đây.
gung

@gung Có lẽ bạn muốn thêm câu trả lời cho chủ đề Meta đó để chúng ta có thể thảo luận về nó?
amip

Câu trả lời:


80

Tôi đang biên soạn một loạt hướng dẫn nhanh mà tôi tìm thấy trên SO (như được đề xuất bởi @Shane), Biostar (sau đây, BS) và SE này. Tôi đã cố gắng hết sức để thừa nhận quyền sở hữu cho từng mục và để chọn câu trả lời đầu tiên hoặc được đánh giá cao. Tôi cũng đã thêm những thứ của riêng mình và các mục được gắn cờ dành riêng cho môi trường [R].

Quản lý dữ liệu

  • Tạo cấu trúc dự án để giữ tất cả mọi thứ ở đúng nơi (dữ liệu, mã, số liệu, v.v., giovanni / BS)
  • Không bao giờ sửa đổi các tệp dữ liệu thô (lý tưởng nhất là chúng chỉ đọc), sao chép / đổi tên thành tệp mới khi thực hiện chuyển đổi, làm sạch, v.v.
  • Kiểm tra tính nhất quán của dữ liệu ( whuber / SE)
  • Quản lý các phụ thuộc tập lệnh và luồng dữ liệu bằng một công cụ tự động hóa xây dựng, như GNU make ( Karl Broman / Zachary Jones )

Mã hóa

  • tổ chức mã nguồn theo các đơn vị logic hoặc khối xây dựng ( Josh Reich / hadley / ars / SO; giovanni / Khader Shameer / BS)
  • tách mã nguồn khỏi công cụ chỉnh sửa, đặc biệt đối với dự án lớn - chồng chéo một phần với mục và báo cáo trước đó
  • Tài liệu mọi thứ, ví dụ như [R] oxy ( Shane / SO) hoặc tự chú thích nhất quán trong tệp nguồn - một cuộc thảo luận tốt về Medstats, phân tích tài liệu và chỉnh sửa dữ liệu Tùy chọn
  • [R] Các chức năng tùy chỉnh có thể được đặt trong một tệp chuyên dụng (có thể có nguồn gốc khi cần thiết), trong một môi trường mới (để tránh điền vào không gian tên cấp cao nhất, Brendan OConnor / SO) hoặc gói ( Dirk Eddelbuettel / Shane / SO)

Phân tích

  • Đừng quên thiết lập / ghi lại hạt giống bạn đã sử dụng khi gọi thuật toán RNG hoặc ngẫu nhiên (ví dụ: k-nghĩa)
  • Đối với các nghiên cứu ở Monte Carlo, có thể rất thú vị khi lưu trữ thông số / thông số trong một tệp riêng biệt ( sumatra có thể là một ứng cử viên tốt, giovanni / BS)
  • Đừng giới hạn bản thân trong một ô trên mỗi biến, hãy sử dụng màn hình đa biến (Trellis) và các công cụ trực quan tương tác (ví dụ: GGobi)

Phiên bản

  • Sử dụng một số loại kiểm soát sửa đổi để dễ dàng theo dõi / xuất, ví dụ Git ( Sharpie / VonC / JD Long / SO) - điều này xuất phát từ các câu hỏi hay được hỏi bởi @Jeromy và @Tal
  • Sao lưu mọi thứ, một cách thường xuyên ( Sharpie / JD Long / SO)
  • Giữ một bản ghi ý tưởng của bạn, hoặc dựa vào một trình theo dõi vấn đề, như ditz ( giovanni / BS) - một phần dư thừa với mục trước vì nó có sẵn trong Git

Chỉnh sửa / Báo cáo

Là một lưu ý phụ, Hadley Wickham cung cấp một cái nhìn tổng quan toàn diện về quản lý dự án R , bao gồm các ví dụ có thể tái tạo và một triết lý thống nhất về dữ liệu .

Cuối cùng, trong Quy trình phân tích dữ liệu thống kê theo định hướng R của mình, Oliver Kirchkamp cung cấp một cái nhìn tổng quan rất chi tiết về lý do tại sao việc áp dụng và tuân theo một quy trình công việc cụ thể sẽ giúp các nhà thống kê cộng tác với nhau, trong khi vẫn đảm bảo tính toàn vẹn dữ liệu và khả năng tái tạo kết quả. Nó cũng bao gồm một số thảo luận về việc sử dụng một hệ thống kiểm soát phiên bản và dệt. Người dùng Stata có thể thấy Quy trình phân tích dữ liệu của J. Scott Long sử dụng Stata cũng hữu ích.


Chl công việc tuyệt vời! Nó sẽ ổn với bạn nếu tôi xuất bản bài này trên blog của mình chứ? (Ý tôi là, văn bản này là cc, vì vậy tôi có thể, nhưng tôi muốn bạn cho phép bằng mọi cách :)) Chúc mừng, Tal
Tal Galili

@Tal Không có vấn đề. Nó không phải là một danh sách đầy đủ, nhưng có lẽ bạn có thể tổng hợp các liên kết hữu ích khác sau đó. Ngoài ra, hãy thoải mái thích nghi hoặc sắp xếp lại theo cách tốt hơn.
chl

+1 Đây là một danh sách hay. Bạn có thể cân nhắc "chấp nhận điều này" để nó luôn luôn đứng đầu; cho rằng đó là CW, bất cứ ai cũng có thể cập nhật nó.
Shane

@Shane Vâng, tôi mang ơn bạn vì đã cung cấp câu trả lời đầu tiên với các liên kết rất hữu ích. Hãy thêm / sửa đổi theo cách bạn muốn.
chl

Tôi tái bản nó ở đây. Danh sách tuyệt vời! r-statistic.com/2010/09/ từ
Tal Galili

21

Cảm ơn các liên kết! Câu hỏi được mở cho bất kỳ phần mềm thống kê nào - thỉnh thoảng tôi vẫn sử dụng Python và Stata, vì vậy tôi tự hỏi liệu người dùng được xác nhận có thể mang lại các đề xuất thú vị ở đó không.
chl

Chắc chắn rồi; mặc dù tôi sẽ thêm rằng các khuyến nghị trong các liên kết trên có thể thực sự áp dụng cho bất kỳ dự án thống kê nào (bất kể ngôn ngữ).
Shane

Chắc chắn là có! Tôi cập nhật câu hỏi của tôi cùng một lúc.
chl

8

Điều này trùng lặp với câu trả lời của Shane, nhưng theo quan điểm của tôi có hai bến tàu chính:

  • Khả năng sinh sản ; không chỉ bởi vì bạn sẽ không kết thúc với kết quả được tạo ra "bằng cách nào đó" mà còn có thể chạy lại phân tích nhanh hơn (trên dữ liệu khác hoặc với các tham số thay đổi một chút) và có nhiều thời gian hơn để suy nghĩ về kết quả. Đối với một dữ liệu khổng lồ, trước tiên bạn có thể kiểm tra ý tưởng của mình trên một số "playet" nhỏ và sau đó dễ dàng mở rộng trên toàn bộ dữ liệu.
  • Tài liệu tốt ; nhận xét các kịch bản dưới sự kiểm soát phiên bản, một số tạp chí nghiên cứu, thậm chí hệ thống vé cho các dự án phức tạp hơn. Cải thiện khả năng tái tạo, làm cho việc theo dõi lỗi dễ dàng hơn và viết các báo cáo cuối cùng không đáng kể.

+1 Tôi thích điểm thứ hai (tôi sử dụng roxygen + git). Điểm đầu tiên cũng khiến tôi nghĩ đến khả năng đưa mã của bạn cho một nhà thống kê khác có thể tái tạo kết quả của bạn ở giai đoạn sau của dự án mà không cần bất kỳ trợ giúp nào.
chl

Khả năng tái lập? Dữ liệu có lỗi ngẫu nhiên nào, vì vậy ai quan tâm. Tài liệu? Hai câu trả lời có thể có: 1) Chúng tôi quá bận rộn, chúng tôi không có thời gian cho tài liệu hoặc 2) Chúng tôi chỉ có ngân sách để phân tích hoặc ghi lại tài liệu, vì vậy chúng tôi đã chọn phân tích. Bạn nghĩ tôi đang nói đùa? Tôi đã thấy / nghe những thái độ này trong nhiều dịp - về các dự án mà cuộc sống đang đi trên đường.
Mark L. Stone


1

Chỉ 2 xu của tôi. Tôi đã tìm thấy Notepad ++ hữu ích cho việc này. Tôi có thể duy trì các tập lệnh riêng biệt (điều khiển chương trình, định dạng dữ liệu, v.v.) và tệp .pad cho mỗi dự án. Tệp .pad gọi tất cả các tập lệnh được liên kết với dự án đó.


3
Ý bạn là, notepad ++ với việc sử dụng npptor :)
Tal Galili

1

Trong khi các câu trả lời khác là tuyệt vời, tôi sẽ thêm một tình cảm khác: Tránh sử dụng SPSS. Tôi đã sử dụng SPSS cho luận án thạc sĩ và bây giờ là công việc thường xuyên của tôi trong nghiên cứu thị trường.

Khi làm việc với SPSS, rất khó để phát triển mã thống kê có tổ chức, do thực tế là SPSS rất tệ trong việc xử lý nhiều tệp (chắc chắn, bạn có thể xử lý nhiều tệp, nhưng nó không gây đau đớn như R), vì bạn không thể lưu trữ bộ dữ liệu đến một biến - bạn phải sử dụng "tập dữ liệu kích hoạt x" - mã, có thể là một nỗi đau tổng thể. Ngoài ra, cú pháp là khó hiểu và khuyến khích các tốc ký, làm cho mã thậm chí không thể đọc được.


0

Jupyter Notebooks, hoạt động với R / Python / Matlab / etc, loại bỏ rắc rối ghi nhớ tập lệnh nào tạo ra một con số nhất định. Bài đăng này mô tả một cách gọn gàng để giữ mã và con số ngay cạnh nhau. Giữ tất cả các số liệu cho một chương giấy hoặc luận án trong một sổ ghi chép làm cho mã được ghép rất dễ tìm.

Thực tế, thậm chí tốt hơn, bởi vì bạn có thể cuộn qua, giả sử, một tá con số để tìm ra cái bạn muốn. Mã được giữ kín cho đến khi cần thiết.

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.