Тож я читав деякі книги (або їх частини) про моделювання (Ф. Гаррелл «Стратегії моделювання регресії» серед інших), оскільки зараз у мене ситуація полягає в тому, що мені потрібно зробити логістичну модель, засновану на даних бінарних відповідей. У моєму наборі даних є як безперервні, категоричні, так і двійкові дані (предиктори). В основному у мене зараз близько 100 прогнокторів, що, очевидно, занадто багато для хорошої моделі. Крім того, багато з цих прогнозів є спорідненими, оскільки вони часто базуються на одній метриці, хоча і дещо відрізняються.
У будь-якому випадку, те, що я читав, використовуючи одноманітну регресію та поетапні методи - це найгірші речі, які ви можете зробити, щоб зменшити кількість прогнозів. Я думаю, що техніка LASSO є цілком нормальною (якщо я це правильно зрозумів), але очевидно, ви просто не можете використовувати це на 100 прогнозах і думаєте, що користі з цього не вийде.
То які тут мої варіанти? Чи справді мені просто треба сісти, поговорити з усіма моїми керівниками та розумними людьми на роботі, і дійсно думати про те, якими можуть / повинні бути топ-5 найкращих прогнозів (ми можемо помилятися) чи який підхід я повинен вважаєте замість цього?
І так, я також знаю, що ця тема активно обговорюється (в Інтернеті та в книжках), але іноді здається трохи непосильною, коли ти щось нове у цій галузі моделювання.
Редагувати:
Перш за все, мій обсяг вибірки становить 1 000 пацієнтів (що в моїй галузі багато), і з них є між 70-170 позитивних відповідей (тобто 170 відповідей та приблизно 900 відсутніх відповідей в одному з випадків) . В основному ідея полягає в тому, щоб передбачити токсичність після променевої обробки. У мене є деякі перспективні дані бінарного відгуку (тобто токсичності, або у вас є (1), або у вас немає (0)), і тоді у мене є кілька типів показників. Деякі показники залежать від пацієнта, наприклад, вік, використовувані наркотики, обсяг органів та цілей, діабет тощо, і тоді я маю певні показники лікування на основі модельованого поля лікування для цілі. З цього я можу знайти кілька предикторів, що часто має велике значення в моїй галузі, оскільки більшість токсичності сильно корелює з кількістю одержуваної радіації (ідози). Так, наприклад, якщо я лікую пухлину легенів, є ризик уразити серце якоюсь дозою. Тоді я можу підрахувати, скільки x-обсягу серця отримує x-доза, наприклад " t просто вибрати один для початку (хоча саме це намагалися, звичайно, минулі експерименти, і те, що я хотів би зробити також), тому що мені потрібно точно "знати", на якій ступені насправді існує велика кореляція між серцевою токсичністю. та об'ємна доза (знову ж таки, як приклад, є інші подібні показники, де застосовується та ж стратегія). Так, так, приблизно так виглядає мій набір даних. Деякі різні показники та деякі показники, які дещо схожі. t просто вибрати один для початку (хоча саме це намагалися, звичайно, минулі експерименти, і те, що я хотів би зробити також), тому що мені потрібно точно "знати", на якій ступені насправді існує велика кореляція між серцевою токсичністю. та об'ємна доза (знову ж таки, як приклад, є інші подібні показники, де застосовується та ж стратегія). Так, так, приблизно так виглядає мій набір даних. Деякі різні показники та деякі показники, які дещо схожі. s майже як виглядає мій набір даних Деякі різні показники та деякі показники, які дещо схожі. s майже як виглядає мій набір даних Деякі різні показники та деякі показники, які дещо схожі.
Тоді я хочу зробити передбачувальну модель, тому я можу сподіватися передбачити, які пацієнти матимуть ризик отримати якусь токсичність. Оскільки дані відповіді є двійковими, головна моя ідея, звичайно, була використовувати логістичну модель регресії. Принаймні так робили інші люди у моїй галузі. Однак, переглядаючи багато цих робіт, де це вже було зроблено, деякі з них просто здаються неправильними (принаймні, читаючи такі специфічні книги моделювання, як Ф. Харрел). Багато хто використовує однофакторний регресійний аналіз для вибору прогнозів і використовує їх у багатовимірному аналізі (річ, яку не рекомендується, якщо я не помиляюсь), а також багато хто використовує поетапні методи зменшення кількості предикторів. Звичайно, це не все погано. Багато хто використовує LASSO, PCA, крос-валідацію, завантажувальну програму тощо, але ті, які я переглянув,
Щодо вибору особливостей, то, мабуть, зараз я там перебуваю. Як вибрати / знайти правильні прогнози, які слід використовувати у своїй моделі? Я спробував ці універсальні / ступінчасті підходи, але щоразу думаю: "Навіщо це робити, якщо це неправильно?". Але, можливо, це хороший спосіб показати, принаймні, врешті-решт, як "хороша модель", зроблена правильним шляхом, йде проти "поганої моделі", зробленої не так. Тож я, мабуть, міг би зробити це дещо неправильним шляхом, для чого мені потрібна допомога - це напрямок робити це правильно.
Вибачте за редагування, і це так довго.
EDIT 2: лише короткий приклад того, як виглядають мої дані:
'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 ...
І якщо я запускаю table(data$Toxicity)
результат, це:
> table(data$Toxicity)
0 1
1088 63
Знову ж таки, це стосується одного типу токсичності. У мене є ще 3 інших.