Có ví dụ nào về các gói R thay đổi đáng kể giữa các phiên bản sao cho kết quả của chức năng thống kê khác nhau đáng kể không?


8

Tôi đang cố gắng hiểu cách mọi người sử dụng các gói R và tự hỏi liệu có trường hợp tài liệu nào mà các gói R đã tạo ra các câu trả lời khác nhau không.

Làm rõ: Động lực đằng sau câu hỏi này xuất phát từ nỗ lực tôi tham gia vào mục tiêu hiểu tầm quan trọng của xuất xứ trong các phương pháp phân tích và cách nó tạo điều kiện cho nghiên cứu tái sản xuất. Mặc dù R rất lớn trong cộng đồng khoa học hiện nay và các gói R được phiên bản bằng CRAN, không có thông tin chi tiết [đặc biệt là số phiên bản], một người nào đó cố gắng tái tạo cơ thể của công việc trong tương lai có thể đi đến một kết luận khác rằng tác phẩm gốc ( thậm chí với dữ liệu gốc).

Ví dụ: Paper by John Doe nói rằng "chúng tôi đã sử dụng R 2.3.1 và gói glmulti để phù hợp với các mô hình của chúng tôi". 10 năm nữa, ai đó có thể sử dụng phiên bản mới của glmulti (không ai biết phiên bản nào được sử dụng trong bản gốc) có thể tạo ra một kết luận khác biệt. Câu hỏi của tôi: Có ví dụ về một điều như vậy đã xảy ra? Gói phiên bản 2 hoặc R tạo ra kết quả khác nhiều so với phiên bản 1.


1
Câu hỏi là một chút mơ hồ. Bạn có thể tập trung hơn một chút không?
Dirk Eddelbuettel

Vâng, tôi đã làm rõ câu hỏi.
Maiasaura

Câu trả lời:


6

Tôi đã có vấn đề với gói glmnetqua các phiên bản. Nếu tôi nhớ rõ, nó đã chuyển từ phiên bản 1.5 sang 1.6, nhưng tôi có thể nghỉ một chút.

Các trình tạo / bảo trì gói đã thay đổi thứ tự các lớp của các đối tượng của chúng (vì vậy nó đã trở thành c("lognet", "glmnet")thay vì c("glmnet", "lognet")- hoặc nó có thể là cách khác). Tất nhiên, họ cũng thay đổi tất cả các chức năng S3 của mình để xử lý việc này (ví dụ predict.lognet).

Vấn đề với điều này là: một đối tượng bạn đã tạo với phiên bản cũ glmnetkhông tương thích với các chức năng mới (do việc điều phối hoạt động theo cách khác). Hầu hết mọi người sẽ không ở trong vị trí đó (ai sẽ cứu một glmnetđối tượng để sử dụng sau này?), Nhưng tôi thì có.

Xin lưu ý bạn: đây là một gói rất mạnh, được phát triển bởi những người cực kỳ thông minh, vì vậy nó có thể xảy ra với bất kỳ ai :-)


1
Để trả lời ai cứu đối tượng: tôi làm. :)
Lặp lại

8

Điều này sẽ thay đổi gói để gói, nhưng câu trả lời chung là . Đầu ra có thể khác nhau, và thậm chí cả cách sử dụng cơ bản nữa (đầu vào / ouput args). Đây là lý do tại sao, khi tôi thực hiện một phân tích quan trọng, tôi luôn muốn ghi lại những phiên bản được sử dụng với version()sessionInfo(). Ngay cả khi mọi thứ thay đổi, các phiên bản cũ vẫn được giữ lại trên CRAN, vì vậy bạn có thể lấy các phiên bản cũ nếu bạn cần chúng.


1
+1 Lời khuyên tuyệt vời. Tôi đã từng tham gia lớp hướng dẫn R trước khi mã của người hướng dẫn được viết bằng phiên bản R cũ hơn so với các máy tính trong phòng thí nghiệm của trường và phải mất 30 phút gỡ lỗi để tìm ra những thay đổi trong bản phát hành điểm và cách mã khóa học phải được chỉnh sửa. Mặc dù một số phần mềm có lẽ quá ngoan ngoãn để tương thích ngược, nhưng nó chưa bao giờ khiến tôi nghĩ rằng đây sẽ là một lời chỉ trích của R.
Josh Hemann

1
@JohnColby là chính xác - điều rất quan trọng là có thể sao chép thiết lập của bạn, bao gồm số phiên bản gói và bao gồm cả những thứ thường bị bỏ qua, chẳng hạn như các đối số được truyền cho các hàm (tôi cố gắng luôn sử dụng các đối số có tên), số ngẫu nhiên hạt giống, các phụ thuộc bên ngoài khác nhau, và nhiều hơn nữa. Về việc bất kỳ một gói nào có ảnh hưởng đến kết quả hay không, câu trả lời là có, và rộng hơn bạn mong đợi: ngay cả các gói I / O cơ bản cũng có thể ảnh hưởng đến kết quả nếu bạn mất dữ liệu. :) Bạn có thể mất dữ liệu hoặc dữ liệu có thể được sửa đổi theo một cách nào đó nếu hành vi tải tệp mặc định đã thay đổi.
Lặp lại

3

Chỉ cần một điểm nhanh chóng:

  • Hệ sinh thái gói R rất lớn và nó thực sự tùy thuộc vào từng tác giả, cho dù họ có ý định duy trì khả năng tương thích ngược.
  • Cá nhân tôi không có bất kỳ vấn đề nào với các gói R cơ sở thay đổi theo cách dẫn đến các vấn đề về khả năng tương thích ngược. Nói chung, đây là một lý do tại sao tôi thích sử dụng các gói R cơ sở.

2

Theo kinh nghiệm của tôi, hầu hết các thay đổi tạo ra loại vấn đề máy tính / lập trình thông thường. Các hàm bị phản đối, các đối số là khác nhau, v.v. Ví dụ, mã đã xảy ra với tôi rằng mã sẽ ngừng hoạt động vì một số hàm yêu cầu thêm một đối số. Điều này có thể gây phiền nhiễu nhưng vấn đề là rõ ràng và thường không quá khó để giải quyết.

Một số gói có thể được duy trì tốt hơn ở khía cạnh đó nhưng các quy tắc thông thường của Phần mềm miễn phí áp dụng: Bạn phải thấy rằng nó được sản xuất bởi các tình nguyện viên - thường là các nhà thống kê có nhiệm vụ khác chứ không phải nhà phát triển phần mềm chuyên nghiệp toàn thời gian - và nếu chất lượng và độ tin cậy rất quan trọng đối với bạn, bạn nên tránh mọi thứ có số phiên bản như 0.x và chỉ sử dụng các gói trưởng thành với cộng đồng người dùng và nhà phát triển tích cực.

Tôi chưa bao giờ gặp phải một bản cập nhật dẫn đến thay đổi ngấm ngầm của kết quả thống kê (ví dụ: chuyển đổi phương thức mặc định trong một số chức năng, thay đổi mức độ tự do và giá trị p trong khi tạo ra kết quả tương tự bề ngoài). Tôi đoán điều đó phải xảy ra mặc dù, ít nhất là thông qua sửa lỗi (nhưng tôi đã đọc được ở đâu đó rằng Microsoft thực sự đã thêm mã trong các sản phẩm mới của mình để mô phỏng một số lỗi cũ hơn để tránh phá vỡ tính tương thích với các chương trình phụ thuộc vào các lỗi này). Có lẽ, một số người bảo trì có thể cung cấp cho chúng tôi một số hiểu biết về cách xử lý những thứ này cho các gói của họ.

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.