Làm thế nào để giảm các yếu tố dự đoán đúng cách cho mô hình hồi quy logistic


9

Vì vậy, tôi đã đọc một số cuốn sách (hoặc một phần của chúng) về mô hình hóa ("Chiến lược mô hình hồi quy" của F. Harrell), vì tình hình hiện tại của tôi là tôi cần phải làm một mô hình logistic dựa trên dữ liệu phản hồi nhị phân. Tôi có cả dữ liệu nhị phân liên tục, phân loại và nhị phân (dự đoán) trong tập dữ liệu của mình. Về cơ bản tôi có khoảng 100 dự đoán ngay bây giờ, đó rõ ràng là quá nhiều cho một mô hình tốt. Ngoài ra, nhiều trong số các dự đoán này có liên quan, vì chúng thường dựa trên cùng một số liệu, mặc dù có một chút khác biệt.

Dù sao đi nữa, những gì tôi đã đọc, sử dụng hồi quy đơn biến và các kỹ thuật từng bước là một trong những điều tồi tệ nhất bạn có thể làm để giảm lượng dự đoán. Tôi nghĩ rằng kỹ thuật LASSO khá ổn (nếu tôi hiểu điều đó một cách chính xác), nhưng rõ ràng bạn không thể sử dụng nó trên 100 dự đoán và nghĩ rằng bất kỳ điều tốt đẹp nào sẽ đến từ đó.

Vậy lựa chọn của tôi ở đây là gì? Tôi có thực sự phải ngồi xuống, nói chuyện với tất cả những người giám sát của tôi, và những người thông minh trong công việc, và thực sự nghĩ về 5 dự đoán tốt nhất có thể / nên (chúng ta có thể sai) hay cách tiếp cận nào xem xét thay thế?

Và vâng, tôi cũng biết rằng chủ đề này được thảo luận rất nhiều (trực tuyến và trong sách), nhưng đôi khi nó có vẻ hơi quá khi bạn là người mới trong lĩnh vực người mẫu này.

BIÊN TẬP:

Trước hết, cỡ mẫu của tôi là +1000 bệnh nhân (rất nhiều trong lĩnh vực của tôi) và trong số đó có từ 70-170 phản ứng tích cực (nghĩa là 170 phản hồi có so với khoảng 900 không có phản hồi trong một trong các trường hợp) . Về cơ bản ý tưởng là để dự đoán độc tính sau khi điều trị bức xạ. Tôi có một số dữ liệu phản hồi nhị phân tiềm năng (nghĩa là độc tính, hoặc bạn có nó (1) hoặc bạn không (0)), và sau đó tôi có một số loại số liệu. Một số số liệu cụ thể là bệnh nhân, ví dụ tuổi, thuốc được sử dụng, khối lượng cơ quan và mục tiêu, bệnh tiểu đường, v.v., và sau đó tôi có một số số liệu cụ thể điều trị dựa trên lĩnh vực điều trị mô phỏng cho mục tiêu. Từ đó tôi có thể truy xuất một số yếu tố dự đoán, thường có liên quan cao trong lĩnh vực của tôi, vì phần lớn độc tính có tương quan cao với lượng phóng xạ (iedose) nhận được. Vì vậy, ví dụ, nếu tôi điều trị một khối u phổi, có nguy cơ đánh vào tim với một số lượng liều. Sau đó tôi có thể tính được bao nhiêu x lượng thể tích tim nhận được x lượng liều, ví dụ " Tôi chỉ chọn một để bắt đầu (mặc dù đó là điều mà các thí nghiệm trong quá khứ đã cố gắng thực hiện và tôi cũng muốn làm điều đó), bởi vì tôi cần biết "chính xác" ở mức độ nào thực sự có mối tương quan lớn giữa độc tính của tim và liều lượng (một lần nữa, như một ví dụ, có các số liệu tương tự khác, trong đó chiến lược tương tự được áp dụng). Vì vậy, yeah, đó là khá nhiều như thế nào tập dữ liệu của tôi trông như thế nào. Một số số liệu khác nhau và một số số liệu có phần giống nhau. Tôi chỉ chọn một để bắt đầu (mặc dù đó là điều mà các thí nghiệm trong quá khứ đã cố gắng thực hiện và tôi cũng muốn làm điều đó), bởi vì tôi cần biết "chính xác" ở mức độ nào thực sự có mối tương quan lớn giữa độc tính của tim và liều lượng (một lần nữa, như một ví dụ, có các số liệu tương tự khác, trong đó chiến lược tương tự được áp dụng). Vì vậy, yeah, đó là khá nhiều như thế nào tập dữ liệu của tôi trông như thế nào. Một số số liệu khác nhau và một số số liệu có phần giống nhau. s khá nhiều làm thế nào tập dữ liệu của tôi trông như thế nào. Một số số liệu khác nhau và một số số liệu có phần giống nhau. s khá nhiều làm thế nào tập dữ liệu của tôi trông như thế nào. Một số số liệu khác nhau và một số số liệu có phần giống nhau.

Sau đó, những gì tôi muốn làm là tạo ra một mô hình dự đoán để tôi có thể hy vọng những bệnh nhân nào sẽ có nguy cơ bị nhiễm độc. Và vì dữ liệu phản hồi là nhị phân, tất nhiên ý tưởng chính của tôi là sử dụng mô hình hồi quy logistic. Ít nhất đó là những gì người khác đã làm trong lĩnh vực của tôi. Tuy nhiên, khi xem qua nhiều tài liệu này, nơi mà điều này đã được thực hiện, một số trong đó có vẻ sai (ít nhất là khi đọc những loại sách mô hình cụ thể như của F. Harrel). Nhiều người sử dụng phân tích hồi quy đơn biến để chọn các yếu tố dự đoán và sử dụng chúng trong phân tích đa biến (một điều được khuyên là nếu tôi không nhầm lẫn), và cũng có nhiều người sử dụng các kỹ thuật từng bước để giảm lượng dự đoán. Tất nhiên nó không tệ lắm. Nhiều người sử dụng LASSO, PCA, xác thực chéo, bootstrapping, v.v., nhưng những cái tôi đã xem xét,

Liên quan đến lựa chọn tính năng, đây có lẽ là nơi tôi đang ở hiện tại. Làm cách nào để tôi chọn / tìm đúng dự đoán để sử dụng trong mô hình của mình? Tôi đã thử những cách tiếp cận đơn nhất / khôn ngoan này, nhưng mỗi lần tôi nghĩ: "Tại sao thậm chí làm điều đó, nếu nó sai?". Nhưng có lẽ đó là một cách tốt để thể hiện, ít nhất là cuối cùng, làm thế nào một "mô hình tốt" thực hiện đúng cách đi ngược lại một "mô hình xấu" đã làm sai cách. Vì vậy, bây giờ tôi có thể làm điều đó hơi sai, điều tôi cần giúp đỡ là hướng đi để làm điều đó đúng cách.

Xin lỗi vì đã chỉnh sửa, và nó quá dài.

EDIT 2: Chỉ là một ví dụ nhanh về cách dữ liệu của tôi trông như thế nào:

'data.frame':   1151 obs. of  100 variables:
 $ Toxicity              : Factor w/ 2 levels "0","1": 2 1 1 1 1 1 1 1 1 1 ...
 $ Age                   : num  71.9 64 52.1 65.1 63.2 ...
 $ Diabetes              : Factor w/ 2 levels "n","y": 1 1 1 1 1 1 1 1 1 1 ...
 $ Risk.Category         : Ord.factor w/ 3 levels "LOW"<"INTERMEDIATE"<..: 1 1 1 1 2 1 1 1 1 3 ...
 $ Organ.Volume.CC       : num  136.1 56.7 66 136.6 72.8 ...
 $ Target.Volume.CC      : num  102.7 44.2 58.8 39.1 56.3 ...
 $ D1perc                : num  7961 7718 7865 7986 7890 ...
 $ D1.5CC                : num  7948 7460 7795 7983 7800 ...
 $ D1CC                  : num  7996 7614 7833 7997 7862 ...
 $ D2perc                : num  7854 7570 7810 7944 7806 ...
 $ D2.5CC                : num  7873 7174 7729 7952 7604 ...
 $ D2CC                  : num  7915 7313 7757 7969 7715 ...
 $ D3perc                : num  7737 7379 7758 7884 7671 ...
 $ D3.5CC                : num  7787 6765 7613 7913 7325 ...
 $ D3CC                  : num  7827 6953 7675 7934 7480 ...
 $ D4perc                : num  7595 7218 7715 7798 7500 ...
 $ D5perc                : num  7428 7030 7638 7676 7257 ...
 $ DMEAN                 : num  1473 1372 1580 1383 1192 ...
 $ V2000CGY              : num  24.8 23.7 25.9 22.3 19.3 ...
 $ V2000CGY_CC           : num  33.7 13.4 17.1 30.4 14 ...
 $ V2500CGY              : num  22.5 21.5 24 20.6 17.5 ...
 $ V2500CGY_CC           : num  30.7 12.2 15.9 28.2 12.7 ...
 $ V3000CGY              : num  20.6 19.6 22.4 19.1 15.9 ...
 $ V3000CGY_CC           : num  28.1 11.1 14.8 26.2 11.6 ...
 $ V3500CGY              : num  18.9 17.8 20.8 17.8 14.6 ...
 $ V3500CGY_CC           : num  25.7 10.1 13.7 24.3 10.6 ...
 $ V3900CGY              : num  17.5 16.5 19.6 16.7 13.6 ...
 $ V3900CGY_CC           : num  23.76 9.36 12.96 22.85 9.91 ...
 $ V4500CGY              : num  15.5 14.4 17.8 15.2 12.2 ...
 $ V4500CGY_CC           : num  21.12 8.18 11.76 20.82 8.88 ...
 $ V5000CGY              : num  13.9 12.8 16.4 14 11 ...
 $ V5000CGY_CC           : num  18.91 7.25 10.79 19.09 8.03 ...
 $ V5500CGY              : num  12.23 11.14 14.84 12.69 9.85 ...
 $ V5500CGY_CC           : num  16.65 6.31 9.79 17.33 7.17 ...
 $ V6000CGY              : num  10.56 9.4 13.19 11.34 8.68 ...
 $ V6000CGY_CC           : num  14.37 5.33 8.7 15.49 6.32 ...
 $ V6500CGY              : num  8.79 7.32 11.35 9.89 7.44 ...
 $ V6500CGY_CC           : num  11.96 4.15 7.49 13.51 5.42 ...
 $ V7000CGY              : num  6.76 5.07 9.25 8.27 5.86 ...
 $ V7000CGY_CC           : num  9.21 2.87 6.1 11.3 4.26 ...
 $ V7500CGY              : num  4.61 2.37 6.22 6.13 4 ...
 $ V7500CGY_CC           : num  6.27 1.34 4.11 8.38 2.91 ...
 $ V8000CGY              : num  0.7114 0.1521 0.0348 0.6731 0.1527 ...
 $ V8000CGY_CC           : num  0.9682 0.0863 0.023 0.9194 0.1112 ...
 $ V8200CGY              : num  0.087 0 0 0 0 ...
 $ V8200CGY_CC           : num  0.118 0 0 0 0 ...
 $ V8500CGY              : num  0 0 0 0 0 0 0 0 0 0 ...
 $ V8500CGY_CC           : num  0 0 0 0 0 0 0 0 0 0 ...
 $ n_0.02                : num  7443 7240 7371 7467 7350 ...
 $ n_0.03                : num  7196 6976 7168 7253 7112 ...
 $ n_0.04                : num  6977 6747 6983 7055 6895 ...
 $ n_0.05                : num  6777 6542 6811 6871 6693 ...
 $ n_0.06                : num  6592 6354 6649 6696 6503 ...
 $ n_0.07                : num  6419 6180 6496 6531 6325 ...
 $ n_0.08                : num  6255 6016 6350 6374 6155 ...
 $ n_0.09                : num  6100 5863 6211 6224 5994 ...
 $ n_0.1                 : num  5953 5717 6078 6080 5840 ...
 $ n_0.11                : num  5813 5579 5950 5942 5692 ...
 $ n_0.12                : num  5679 5447 5828 5809 5551 ...
 $ n_0.13                : num  5551 5321 5709 5681 5416 ...
 $ n_0.14                : num  5428 5201 5595 5558 5285 ...
 $ n_0.15                : num  5310 5086 5485 5439 5160 ...
 $ n_0.16                : num  5197 4975 5378 5324 5039 ...
 $ n_0.17                : num  5088 4868 5275 5213 4923 ...
 $ n_0.18                : num  4982 4765 5176 5106 4811 ...
 $ n_0.19                : num  4881 4666 5079 5002 4702 ...
 $ n_0.2                 : num  4783 4571 4985 4901 4597 ...
 $ n_0.21                : num  4688 4478 4894 4803 4496 ...
 $ n_0.22                : num  4596 4389 4806 4708 4398 ...
 $ n_0.23                : num  4507 4302 4720 4616 4303 ...
 $ n_0.24                : num  4421 4219 4636 4527 4210 ...
 $ n_0.25                : num  4337 4138 4555 4440 4121 ...
 $ n_0.26                : num  4256 4059 4476 4355 4035 ...
 $ n_0.27                : num  4178 3983 4398 4273 3951 ...
 $ n_0.28                : num  4102 3909 4323 4193 3869 ...
 $ n_0.29                : num  4027 3837 4250 4115 3790 ...
 $ n_0.3                 : num  3955 3767 4179 4039 3713 ...
 $ n_0.31                : num  3885 3699 4109 3966 3639 ...
 $ n_0.32                : num  3817 3633 4041 3894 3566 ...
 $ n_0.33                : num  3751 3569 3975 3824 3496 ...
 $ n_0.34                : num  3686 3506 3911 3755 3427 ...
 $ n_0.35                : num  3623 3445 3847 3689 3361 ...
 $ n_0.36                : num  3562 3386 3786 3624 3296 ...
 $ n_0.37                : num  3502 3328 3725 3560 3233 ...
 $ n_0.38                : num  3444 3272 3666 3498 3171 ...
 $ n_0.39                : num  3387 3217 3609 3438 3111 ...
 $ n_0.4                 : num  3332 3163 3553 3379 3053 ...
 $ n_0.41                : num  3278 3111 3498 3321 2996 ...
 $ n_0.42                : num  3225 3060 3444 3265 2941 ...
 $ n_0.43                : num  3173 3010 3391 3210 2887 ...
 $ n_0.44                : num  3123 2961 3339 3156 2834 ...
 $ n_0.45                : num  3074 2914 3289 3103 2783 ...
 $ n_0.46                : num  3026 2867 3239 3052 2733 ...
 $ n_0.47                : num  2979 2822 3191 3002 2684 ...
 $ n_0.48                : num  2933 2778 3144 2953 2637 ...
 $ n_0.49                : num  2889 2734 3097 2905 2590 ...

Và nếu tôi chạy table(data$Toxicity)đầu ra là:

> table(data$Toxicity)
   0    1 
1088   63 

Một lần nữa, đây là cho một loại độc tính. Tôi có 3 người khác nữa.


1
Bạn đang nhắm đến làm gì? Dự đoán hoặc suy luận, hoặc cái gì khác?
Stephan Kolassa

Đây được gọi là lựa chọn tính năng . Nếu bạn phải sử dụng hồi quy, thì các tính năng phân loại đã được xác định một lần, nhưng đối với các phương thức cây, bạn có thể sử dụng chúng theo nguyên trạng. Bạn thậm chí có thể tìm ra các thuật ngữ tương tác hoặc liên kết n-way dự đoán nhất của bạn và sử dụng các thuật ngữ đó.
smci

"Tôi có thực sự chỉ cần ngồi xuống, nói chuyện với mọi người và thực sự suy nghĩ về / lý do ra những dự đoán hàng đầu không?" Địa ngục không, trực giác là một điểm khởi đầu, nhưng đó là lý do tại sao có các phương pháp lựa chọn tính năng; kết quả từ rất nhiều thử nghiệm đánh bại trực giác.
smci

1
@smci xin lỗi vì không rõ ràng. Vì vậy, trong lĩnh vực của tôi (ung thư bức xạ), chúng tôi lập kế hoạch điều trị, về cơ bản là đại diện 3D về cách thức phân phối / liều lượng xung quanh một mục tiêu. Thật không may, điều này không thể được thực hiện mà không đánh vào ít nhất một lượng nhỏ mô khỏe mạnh. Vì vậy, từ bản đồ 3D này, có thể nói, tôi có thể lấy thông tin về khối lượng lớn nhận được lượng x / lượng phóng xạ. Nhưng như bạn có thể tưởng tượng, tôi có thể "hỏi" theo các bước như "1% khối lượng cấu trúc này nhận được bao nhiêu", và sau đó là 2%, 3%. Về nguyên tắc, các giá trị sẽ có phần giống nhau.
Denver Đăng

1
@smci, nếu dự đoán là mục tiêu của OP, thì mối tương quan sẽ không có gì đáng lo ngại. Mối tương quan cao giữa các biến thực sự sẽ chỉ là mối quan tâm lớn khi cố gắng diễn giải các biến có trong mô hình.
StatsStudent 21/03/19

Câu trả lời:


4

Một số câu trả lời bạn đã nhận được rằng lựa chọn tính năng đẩy là không có cơ sở.

Các Lasso hoặc tốt hơn các ròng đàn hồi sẽ làm lựa chọn tính năng nhưng khi ra nhọn trên, bạn sẽ được khá thất vọng ở sự biến động của các bộ các tính năng "được chọn". Tôi tin rằng hy vọng thực sự duy nhất trong tình huống của bạn là giảm dữ liệu, nghĩa là học tập không giám sát, như tôi nhấn mạnh trong cuốn sách của mình. Giảm dữ liệu mang lại nhiều khả năng diễn giải và đặc biệt là ổn định hơn. Tôi rất khuyến nghị các thành phần chính thưa thớt, hoặc phân cụm biến theo sau là các thành phần chính thông thường trên các cụm.

Nội dung thông tin trong tập dữ liệu của bạn rất xa, quá thấp để mọi thuật toán lựa chọn tính năng đều đáng tin cậy.


Trước hết, cảm ơn bạn đã dành thời gian để bình luận. Thứ hai, nếu tôi không nhầm, việc học không có giám sát là khi bạn không sử dụng (hoặc không có) phản hồi cụ thể của (các) biến trả lời (tức là 1 hoặc 0) và làm cho máy tính "đoán "Cách phân phối nên được phân chia. Nhưng hồi quy logistic (và tuyến tính) được giám sát theo như tôi biết? Vì vậy, bạn đề nghị là từ bỏ phương pháp đó? Một mặt tôi thích ý tưởng này, nhưng mặt khác, hồi quy logistic và probit là cách mà hầu hết mọi giấy tờ mô hình trong lĩnh vực của tôi (dữ liệu tương tự như của tôi) đã được thực hiện cho đến nay.
Denver Đăng

Vì vậy, tôi sẽ không đi ra ngoài ở đây, hay tôi phải giả định rằng mọi người khác đã làm điều đó "sai" mãi mãi?
Denver Đăng

3
Không phải tất cả mọi người nhưng hầu hết mọi người chắc chắn đã làm sai. Đây là một động lực chính để viết Chiến lược mô hình hồi quy . Mục tiêu của việc giảm dữ liệu là giảm bớt lượng học có giám sát mà hồi quy logistic được yêu cầu thực hiện. Ví dụ: bạn có thể giảm 100 tính năng ứng viên xuống 5 điểm cụm một cách hiệu quả, sau đó chỉ phải ước tính 5 tham số + đánh chặn.
Frank Harrell

2
Bạn cảm thấy thế nào về các mô hình hệ số khác nhau trong trường hợp này (như tôi đã thêm vào câu trả lời của mình)?
Ben Bolker

@FrankHarrell nghe có vẻ khá thú vị. Nhưng xin lỗi vì đã hỏi, tại sao giám sát việc học kém, hoặc ít nhất là hơi xấu, vì có vẻ như bạn đang ám chỉ?
Denver Đăng

8

+1 cho "đôi khi có vẻ hơi quá". Nó thực sự phụ thuộc (như Mitchell nói rõ; xem phần cuối Chương 4) xem bạn có muốn làm không

  • Bạn sẽ phải sử dụng xác thực chéo để chọn mức độ xử phạt, điều này sẽ phá hủy khả năng suy luận của bạn (xây dựng khoảng tin cậy cho các dự đoán) trừ khi bạn sử dụng các phương pháp suy luận chiều cao tiên tiến (ví dụ Dezeure et al 2015 ; I đã không thử những cách tiếp cận này nhưng chúng có vẻ hợp lý ...)

  • phân tích khám phá : vui chơi, minh bạch và trung thực, không trích dẫn bất kỳ giá trị p nào.

Đối với trường hợp sử dụng cụ thể mà bạn đã mô tả (một nhóm các yếu tố dự đoán của bạn về cơ bản đại diện cho phân phối tích lũy của liều nhận được bởi các phân số khác nhau của tim), bạn có thể muốn xem xét các mô hình hệ số khác nhau (hơi khó tìm kiếm) , về cơ bản phù hợp với một đường cong trơn tru cho hiệu ứng của CDF (chúng có thể được thực hiện trong mgcvgói R ).


Cỡ mẫu của tôi là +1000 và tùy thuộc vào biến phản hồi (tôi có 4), tôi có từ 75-170 dương (hoặc âm, tùy thuộc vào cách bạn nhìn vào) các phản hồi của +1000. Tôi không biết nếu điều đó làm mọi thứ dễ dàng hơn, tức là tôi có thể bỏ qua một số bước vì bộ mẫu khá lớn (ít nhất là trong lĩnh vực của tôi).
Denver Đăng

Xác nhận chéo sẽ phá hủy khả năng suy luận? Có lẽ. Tôi nghĩ người ta có thể tự khởi động trước khi xác thực chéo để có được khoảng tin cậy cho các dự đoán. Điều này có thể khả thi với 1000 quan sát.
JTH

suy luận sau lựa chọn là thực sự khó khăn; nếu bạn sử dụng toàn bộ tập dữ liệu để điều chỉnh siêu âm (chẳng hạn như độ mạnh của hình phạt), thì bạn sẽ ở trong tình huống tương tự. Bạn phải phác thảo cách tiếp cận bootstrap + CV của mình trước khi tôi có thể nói nếu tôi tin rằng nó có thể hoạt động ...
Ben Bolker

0

Có nhiều cách tiếp cận khác nhau. Những gì tôi muốn giới thiệu là thử một số cái đơn giản, theo thứ tự sau:


1
Tôi tin rằng cả ba phương pháp này sẽ không ổn định.
Frank Harrell

nó phụ thuộc vào cách bạn xác định không ổn định. Trong thực tế, bạn thường sử dụng một số loại xác thực chéo như k-Fold hoặc rời khỏi một lần và đánh giá dựa trên hiệu suất tổng thể + phương sai (còn gọi là phương pháp 1SE) mà tính năng cuối cùng bạn chọn.
nối lại

Bootstrapping và xác thực chéo chỉ xác nhận một số chỉ số dự đoán cho quá trình tạo mô hình. Điều này dẫn đến một ước tính tốt về chỉ số đó cho một mô hình được chọn sử dụng quy trình đó nhưng không cung cấp bất kỳ sự thoải mái nào cho cấu trúc của một mô hình đã được phát triển một lần, tức là mô hình tổng thể. Nhìn vào cấu trúc được chọn (nghĩa là các tính năng được chọn) trên các mẫu tương ứng để thấy sự biến động.
Frank Harrell
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.