شروع به کار با مدلهای مخلوط خطی عمومی Binomial

ساخت وبلاگ

مدلهای مخلوط خطی عمومی دوتایی ، یا GLMM های دوتایی ، برای مدل سازی نتایج باینری برای اقدامات مکرر یا خوشه ای مفید هستند. به عنوان مثال ، بیایید بگوییم که ما مطالعه ای را طراحی می کنیم که آنچه را که دانشجویان در طی 2 هفته می خورند ، دنبال می کند ، و ما علاقه مندیم که آیا آنها هر روز سبزیجات می خورند یا نه. برای هر دانش آموز 14 رویداد باینری خواهیم داشت: سبزیجات بخورید یا نه. با استفاده از GLMM دوتایی می توانیم با توجه به پیش بینی کننده های مختلف مانند جنس دانش آموز ، نژاد دانش آموز و/یا برخی از "معالجه" که ما برای زیر مجموعه ای از دانش آموزان مانند کلاس تغذیه استفاده کردیم ، احتمال خوردن سبزیجات روزانه را الگوبرداری کنیم. از آنجا که هر دانش آموز در طی چند روز مشاهده می شود ، ما اقدامات مکرر و بنابراین نیاز به یک مدل اثر مختلط داریم.

قبل از اینکه نحوه اجرای و تفسیر GLMM دوتایی را نشان دهیم ، ابتدا داده هایی را که برای GLMM دوتایی مناسب است شبیه سازی خواهیم کرد. اگر می دانیم چگونه داده ها را برای یک مدل معین شبیه سازی کنیم ، در این صورت درک بهتری از فرضیات و ضرایب مدل داریم. ما از R برای شبیه سازی داده ها و انجام مدل سازی استفاده خواهیم کرد.

برای شروع ما داده ها را برای چهار متغیر پیش بینی کننده شبیه سازی می کنیم:

  • شناسه (غرق شدن تعداد موضوع)
  • روز (روز مشاهده)
  • TRT (وضعیت درمان: کنترل یا درمان)
  • رابطه جنسی (مرد یا زن)

ما "N" را به 250 تنظیم کردیم ، این بدان معنی است که ما 250 موضوع در داده های خود خواهیم داشت. سپس ما از SEQ (n) برای تولید وکتور اعداد صحیح 1 تا 250 استفاده می کنیم و به "شناسه" اختصاص می دهیم. اینها شناسه های موضوع ما خواهند بود. ما به "روز" اعداد صحیح 1 - 14 اختصاص می دهیم و سپس از Expand. Grid استفاده می کنیم تا تمام ترکیبات "شناسه" و "روز" را ایجاد کنیم و به "D" اختصاص دهیم ، که یک قاب داده است. برای شبیه سازی متغیرهای "TRT" و "جنسی" ، ما به سادگی 250 بار از مقادیر ممکن با تعویض نمونه می گیریم. عملکرد Set. seed (1) تضمین می کند که ما همیشه همان مقادیر را شبیه سازی می کنیم ، که اگر می خواهید نتایج این مقاله را تکرار کنید ، باید اجرا کنید. بعد از اینکه ارزشهای "TRT" و "جنسی" را شبیه سازی می کنیم ، باید هر یک از آنها را برای هر شناسه موضوع 14 بار تکرار کنیم. ما این کار را با استفاده از براکت های زیرزمینی و اختصاص نتیجه به قاب داده "D" انجام می دهیم. سرانجام ما داده ها را با "id" و "روز" مرتب می کنیم ، شماره های ردیف را مجدداً تنظیم می کنیم و به 15 رکورد اول نگاه می کنیم.

ما می بینیم که موضوع 1 یک زن در گروه کنترل است و دارای 14 مشاهده در طی 14 روز است.

اکنون ما آماده هستیم تا از این داده ها برای شبیه سازی صفرها و مواردی برای رویداد خوردن سبزیجات استفاده کنیم ، جایی که 0 به معنای "سبزیجات نخورده" و 1 به معنای "سبزیجات می خورد". ما می خواهیم صفرها و آنهایی را که از احتمالات استفاده می کنند شبیه سازی کنیم. ما از عملکرد RBINOM برای انجام این کار استفاده خواهیم کرد ، که صفرها یا مواردی را از توزیع دوتایی تولید می کند. به عنوان مثال برای تولید 5 تلنگر یک سکه واحد با احتمال موفقیت (مثلاً سرها) 0. 5 ، می توانیم موارد زیر را انجام دهیم:

اما ما یک احتمال ثابت نداریم. ما این احتمال را خواهیم داشت که بر اساس جنس موضوع و اینکه آیا آنها در گروه درمانی بودند یا نه ، تغییر کند. از آنجا که ما داده ها را شبیه سازی می کنیم ، می توانیم احتمالات را انتخاب کنیم.

  • زن ، کنترل: P = 0. 40
  • زن ، تحت درمان: P = 0. 85
  • مرد ، کنترل: P = 0. 30
  • مرد ، تحت درمان: P = 0. 50

اینها همان چیزی است که ما ممکن است جلوه های ثابت بنامیم. ما می گوییم که اثرات درمان و رابطه جنسی ثابت است ، مهم نیست که شما چه کسی هستید ، از کجا هستید ، چند ساله هستید و غیره. این ممکن است یک فرض قابل قبول در زندگی واقعی نباشد ، اما این همان چیزی است که ما فرض می کنیموقتی این مجموعه داده خاص را شبیه سازی می کنیم. همچنین توجه کنید که این اثرات در تعامل هستند. تأثیر درمان احتمال زن را 0. 45 افزایش می دهد ، اما تنها احتمال مردان را 0. 20 افزایش می دهد. تأثیر درمان به جنس بستگی دارد ، این بدان معنی است که آنها در تعامل هستند.

اما به یاد بیاورید که ما 14 روز پشت سر هم همان شخص را مشاهده می کنیم. این بدان معنی است که ما مشاهدات مستقل نداریم. این 14 مشاهده در مورد یک شخص ممکن است به نوعی با هم ارتباط داشته باشد. ساده ترین راه برای القاء این همبستگی ، اضافه کردن یک اثر تصادفی برای هر شخص است. به عنوان مثال ، شاید یک دانش آموز پسر در خانواده ای بزرگ شده باشد که در حیاط خلوت یک باغ داشت و در حال خوردن سبزیجات خانگی بود. اثر تصادفی وی ممکن است یک احتمال 0. 10 اضافی باشد. بنابراین اگر او در گروه کنترل بود ، احتمال وی ممکن است 0. 30 (ثابت) + 0. 10 (تصادفی) = 0. 40 باشد. بنابراین اکنون ما ترکیبی از اثرات ثابت و اثرات تصادفی داریم.

بیایید احتمالات اثر ثابت خود را به قاب داده اضافه کنیم. ما از تابع تعامل برای ایجاد یک عامل 4 سطح به نام "Trtsex" استفاده می کنیم که نشان می دهد آیا یک موضوع مرد/زن است و تحت درمان/کنترل قرار دارد. سپس ما یک بردار از احتمالات ایجاد می کنیم و با استفاده از نام سطح متغیر "TrtSex" وکتور را نامگذاری می کنیم. این به یک جدول جستجوی تبدیل می شود که می توانیم با "Trtsex" از آن استفاده کنیم تا به سرعت احتمال تأثیر ثابت یک موضوع را تعیین کنیم.

اکنون اجازه می دهیم احتمالات اثر تصادفی را اضافه کنیم. ما این کار را با ترسیم نمونه های تصادفی از توزیع عادی با میانگین 0 و انحراف استاندارد 0. 03 انجام خواهیم داد. این باعث می شود مقدار تصادفی از احتمال تأثیر ثابت یک موضوع اضافه یا تفریق کنیم. مجدداً از "r_probs" به عنوان یک جدول جستجوی استفاده می کنیم و از براکت های زیرزمینی برای انتخاب احتمال تصادفی مطابق شناسه موضوع استفاده می کنیم. توجه کنید که برای هر موضوع 14 بار تکرار می شود.

و اکنون می توانیم از احتمالات برای تولید صفرها و موارد با عملکرد BINOM استفاده کنیم.

با آن داده های ما شبیه سازی شده است. بیایید چند سوابق اول را بازرسی کنیم.

موضوع 1 (زن/کنترل) از خوردن سبزیجات 1 بار در 6 روز اول خبر داد. و می بینیم که احتمال او 0. 37 است. اثر تصادفی وی در حدود 0. 3 7-0. 40 = -0. 03 است.

بیایید به موضوع 5 نگاه کنیم.

موضوع 5 (زن/معالجه) در 6 روز اول هر روز سبزیجات را خوردن گزارش داد. و می بینیم که احتمال او در حدود 0. 86 است. اثر تصادفی وی در حدود 0. 86 - 0. 85 = 0. 01 است.

افشای کامل: روشی که ما فقط داده های خود را شبیه سازی می کنیم از نظر فنی صحیح نیست! ما می توانستیم به راحتی اثر تصادفی ایجاد کنیم که احتمال یک موضوع را فراتر از 1 یا زیر 0 قرار داد! با این حال ما فکر کردیم که این رویکرد مکان مناسبی برای شروع است زیرا به ما امکان می دهد از نظر احتمالات فکر کنیم. روش صحیح بعداً در مقاله نشان داده شده است و همانطور که خواهیم دید ، شامل ورود به سیستم است که بسیار کمتر بصری هستند.

اکنون بیایید به عقب کار کنیم و وانمود کنیم که ما از احتمالاتی که در بالا تعریف کردیم نمی دانیم. ما فقط "ID" ، "روز" ، "TRT" ، "Sex" و "Y" داریم. ما می خواهیم یک مدل Binomial GLMM را متناسب کنیم تا ببینیم که چگونه "رابطه جنسی" و "TRT" بر احتمال خوردن سبزیجات تأثیر می گذارد. در زندگی واقعی ما نمی دانیم که آیا آنها بر این احتمال تأثیر می گذارند. ما ممکن است یک شکار داشته باشیم ، اما تنها کاری که واقعاً می توانیم انجام دهیم این است که یک مدل را پیشنهاد کنیم و ببینیم که چقدر مناسب داده ها است. برای این کار ما از عملکرد GLMER در بسته LME4 استفاده خواهیم کرد.

بیایید زندگی را برای ما آسان کنیم و مدل "صحیح" را پیشنهاد کنیم ، که می دانیم از زمان شبیه سازی داده ها. ما y را به عنوان یک جنس عملکردی ، TRT و تعامل آنها مدل می کنیم: y~trt * رابطه جنسی. ما همچنین یک اثر تصادفی برای هر موضوع با + (1 | id) درج می کنیم ، که به عنوان یک رهگیری تصادفی نیز شناخته می شود زیرا مدل یک رهگیری متفاوت برای هر موضوع را تخمین می زند. ما می توانیم 1 | id را به عنوان "رهگیری مشروط به شناسه موضوع" بخوانیم. "(در نحو مدل R ، 1 نشان دهنده رهگیری است.) ما همچنین خانواده = binomial را مشخص می کنیم تا نشان دهیم که فرض می کنیم پاسخ از توزیع دوتایی گرفته شده است ، که در این مورد صحیح است.

به طور خلاصه ، اثرات تصادفی و اثرات ثابت را مشاهده می کنیم. ضرایب اثر ثابت در مقیاس احتمال بلکه در مقیاس ورود به سیستم یا ورود به سیستم نیست. تحول ورود به مقادیر از 0 تا 1 (احتمالات) می رسد و آنها را به مقادیر مختلف ا ز-inf به +inf تبدیل می کند. این به ما امکان می دهد تا بدون نگرانی در مورد رفتن به بالای 1 یا زیر 0 ، مدل های خطی افزودنی ایجاد کنیم تا از مدل خود استفاده کنیم ، باید از ورود به سیستم معکوس استفاده کنیم. عملکردی برای این در پایه R به نام Plogis وجود دارد. به عنوان مثال ، ورود به سیستم پیش بینی شده یک زن در گروه کنترل ، سبزیجات را می خورد: -0. 30840. ورود به سیستم معکوس این است:

احتمال پیش بینی شده 0. 42 تقریباً نزدیک به مقدار 0. 40 است که ما برای تولید داده ها استفاده کردیم.

پیش بینی شده ورود یک زن در گروه درمانی که سبزیجات می خورد ، رهگیری به علاوه ضریب TRTTREAT است: -0. 30840 + 2. 18835 = 1. 87995. ورود به سیستم معکوس:

احتمال پیش بینی شده 0. 87 نزدیک به مقدار 0. 85 است که ما برای تولید داده ها استفاده کردیم.

ورود به سیستم پیش بینی شده یک مرد در گروه کنترل ، سبزیجات را می خورد. ورود به سیستم معکوس:

احتمال پیش بینی شده 0. 28 نزدیک به مقدار 0. 30 است که ما برای تولید داده ها استفاده کردیم.

سرانجام ورود به سیستم پیش بینی شده یک مرد در گروه درمانی که سبزیجات می خورد ، مجموع ضرایب است: -0. 30840 + 2. 18835 + -0. 63440 + -1. 21669 = 0. 02886. ورود به سیستم معکوس:

احتمال پیش بینی شده 0. 51 بسیار نزدیک به مقدار 0. 50 است که ما برای تولید داده ها استفاده کردیم.

به جای استفاده از plogis ، می توانیم به سادگی از عملکرد پیش بینی استفاده کنیم. آرگومان re. form = na می گوید فقط اثرات ثابت را تخمین می زند. قاب داده ای که به آرگومان NewData داده شده است ، تمام ترکیبات ممکن از نوع موضوع را نشان می دهد.

احتمالات پیش بینی شده همان چیزی است که ما "با دست" در بالا محاسبه کردیم (منهای خطای گرد).

ما همچنین می توانیم ضرایب مدل را تفسیر کنیم. برای انجام این کار ، ما آنها را برای به دست آوردن نسبت شانس به دست می آوریم. به عنوان مثال ، بازده ضریب درمان 8. 92.

این می گوید شانس "موفقیت" برای یک زن در گروه درمانی حدود 8. 9 برابر بیشتر از شانس موفقیت برای یک زن در گروه کنترل است.

ما همچنین می توانیم فاصله اطمینان را به دست بیاوریم تا از نسبت شانس پایین و بالایی استفاده کنیم:

بنابراین ممکن است نتیجه بگیریم که شانس "موفقیت" حداقل 7 برابر بیشتر برای زن تحت درمان در مقابل کنترل زن است.

اما نسبت های شانس نسبی هستند و گاهی اوقات می توانند زنگ هشدار دهنده باشند. به عنوان مثال ، بیایید بگوییم که تأثیر "درمان" باعث افزایش احتمال موفقیت از 0. 001 به 0. 009 شد. هیچ یک از احتمال بسیار محتمل نیست ، اما نسبت شانس حدود 9 است.

در این حالت ، توصیف اثر درمانی به عنوان شانس موفقیت 9 برابر بیشتر احتمال دارد که به یک خواننده مظنون پیشنهاد کند که این کارآمدتر از آن است. به همین دلیل ایده خوبی است که علاوه بر نسبت های شانس ، احتمالات مورد انتظار را نیز بررسی کنیم.

در بخش اثرات تصادفی ، انحراف معیار تخمین زده شده از اثر تصادفی رهگیری را مشاهده می کنیم ، که می توانیم با عملکرد VARCORR از شیء مدل استخراج کنیم.

0. 20 تخمین 0. 03 است ، انحراف استاندارد که ما برای شبیه سازی اثرات احتمال تصادفی خود استفاده کردیم. به نظر می رسد این یک تخمین نسبتاً ضعیف است. اما اگر فاصله اطمینان 95 ٪ را در این تخمین محاسبه کنیم ، می بینیم که 0. 03 در فاصله زمانی به خوبی می افتد. برای انجام این کار ، ما با عملکرد Confint تماس می گیریم و PARM = "THETA_" را مشخص می کنیم تا نشان دهیم که می خواهیم یک فاصله اطمینان برای انحراف استاندارد تخمین زده شده از اثر تصادفی رهگیری داشته باشیم. تنظیم OldNames = false خروجی آموزنده تر را فراهم می کند.

این فاصله اطمینان به 0 گسترش می یابد ، نشان می دهد که ممکن است تنوع تصادفی بین افراد وجود نداشته باشد. با این حال ما می دانیم که متغیر بودن را داریم زیرا داده ها را تولید کردیم. به علاوه ساختار داده ها دیکته می کند که ما باید واریانس بین افراد و همچنین در افراد را در خود جای دهیم. به عبارت دیگر ، ما مشاهدات مستقل نداریم. بنابراین در زندگی واقعی ما به طور جدی سرگرم نمی شویم که اثر تصادفی را کنار بگذاریم.

اگر بخواهیم این مدل را با استفاده از نماد ریاضی گزارش دهیم ، ممکن است آن را به این شکل بنویسیم:

[ text (y_ = 1) = text^(-0. 31 + 2. 19 بارها TEXT-0. 63 TIME TEXT-1. 22 TIME TEXT TIME TEXT + U_J) ]

جایی که (j ) نشان دهنده شناسه موضوع و

[u_j sim text (0 ، 0. 20) ]

(u_j ) اثر تصادفی برای هر شخص است. این می گوید اثر تصادفی هر فرد از توزیع عادی با میانگین 0 و انحراف استاندارد 0. 20 تهیه می شود.

( text^) تابع ورود به سیستم معکوس است و مطابق با عملکرد Plogis است که ما برای تبدیل Log-ODD ها به احتمال استفاده می کنیم. به زبان مدلهای خطی عمومی ، این عملکرد پیوند است. ورود به سیستم پیوند بین یک مدل خطی افزودنی و نتیجه احتمال است.

نکته جانبی: قبلاً ذکر کردیم که داده های جعلی خود را به طور نادرست ایجاد کرده ایم زیرا خطر شبیه سازی احتمالات را در خارج از محدوده [0،1] اداره می کنیم. روش صحیح استفاده از تحول logit همانطور که فقط توضیح داده شده است. با این حال این به معنای کار با ورود به سیستم به جای احتمالات است که کمتر شهودی هستند. انجام این کار غیرممکن نیست ، فقط ناخوشایند. در اینجا چگونگی شبیه سازی احتمالات پاسخ خود با استفاده از ODD های ورود به سیستم و تحول ورود به سیستم آورده شده است. این صفحه را برای نحوه استخراج Log-Odds مشاهده کنید.

با بازگشت به مدل تخمین زده شده ما ، M ، می توانیم از آن برای شبیه سازی داده های پاسخ با عملکرد شبیه سازی استفاده کنیم. اگر مدل ما "خوب" باشد ، باید داده های پاسخ مشابه آنچه را که مشاهده کردیم شبیه سازی کند. در اینجا ما از آن برای شبیه سازی 100 مجموعه داده مختلف استفاده می کنیم. در اصل این 3500 پیش بینی کننده مشاهده شده ما را می گیرد ، آنها را به مدل تغذیه می کند و سری جدیدی از آن ها و صفرها را تولید می کند تا نشان دهد آیا کسی سبزیجات می خورد یا نه. نتیجه یک قاب داده 100 ستون است که ما در یک شیء به نام "سیم" ذخیره می کنیم.

بنابراین با این قاب داده چه کاری می توانیم انجام دهیم؟یک برنامه استفاده از آن برای تجسم نحوه عملکرد مدل تخمین زده شده ما در مقایسه با داده های مشاهده شده ما است. ما می توانیم با استفاده از میانگین Y توسط TRT و رابطه جنسی با استفاده از عملکرد کل ، به داده های مشاهده شده خود نگاه کنیم.(به یاد بیاورید وسایل صفر و موارد نسبت به مواردی است.)

توجه کنید که احتمالات مشاهده شده بسیار نزدیک به احتمالات پیش بینی شده مدل ما است.

اکنون بیایید همین کار را با تمام ستون های موجود در قاب داده "سیم" انجام دهیم. ما عملکرد کل را برای هر ستون اعمال می کنیم ، و برای جمع آوری همان آرگوارهایی که برای داده های مشاهده شده استفاده کردیم ، استفاده می کنیم. سپس ما با استفاده از توابع do. call و rbind نتایج را در یک قاب داده ترکیب می کنیم.

اکنون می توانیم داده های مشاهده شده و شبیه سازی شده را ترسیم کنیم تا ببینیم چگونه داده های شبیه سازی شده مدل به داده های مشاهده شده نزدیک می شوند. ما برای ایجاد این طرح از ggplot2 استفاده می کنیم. ابتدا از Geom_Point برای ترسیم قاب داده "OBS" استفاده می کنیم ، و باعث می شود که نسبت های مشاهده شده با یک نقطه آبی بزرگتر ظاهر شود. سپس داده های شبیه سازی شده را در قاب داده "S_DF" با استفاده از GEOM_JITTER ترسیم می کنیم ، که نقاط را در کنار هم قرار می دهد. آرگومان آلفا = 1/2 باعث می شود نقاط شفاف شوند و شکل = 1 آرگومان نقاط را به محافل باز تبدیل می کند.

ما می توانیم داده های شبیه سازی شده مدل خود را بسیار نزدیک به داده های مشاهده شده مشاهده کنیم ، که تعجب آور نیست زیرا ما مدل "صحیح" را با داده ها متناسب می کنیم.

بیایید یک مدل اشتباه متناسب باشیم و طرح را دوباره بسازیم. در زیر ما یک مدل بدون تعامل "TRT" و "جنس" قرار می گیریم. اینگونه نیست که ما داده ها را شبیه سازی کردیم ، بنابراین می دانیم که مدل اشتباه است. بعد از اینکه مدل متناسب هستیم ، همان کد فوق را دوباره اجرا کردیم تا پاسخ های مدل خود را 100 بار شبیه سازی کنیم و با داده های مشاهده شده ترسیم کنیم.

مدل ما به طور سیستماتیک احتمالات پیش بینی کننده و پیش بینی بیش از حد موفقیت است. اگر مدل ما "خوب" بود ، انتظار داشتیم که داده هایی مشابه آنچه مشاهده کردیم تولید کند.

رگرسیون لجستیک و مدل سازی با اثر مختلط موضوعات گسترده ای است و ما فقط به اصول اولیه پرداخته ایم. اما امیدوارم که اکنون ایده بهتری در مورد چگونگی ترکیب این دو داشته باشید تا به ما اجازه دهد تا هنگام اقدامات خوشه بندی یا مکرر ، احتمال وقایع باینری را الگوبرداری کنیم.

برای سؤالات یا توضیحات مربوط به این مقاله ، با کتابخانه UVA Statlab تماس بگیرید: statlab@virginia. edu

مشاهده کل مجموعه مقالات کتابخانه UVA Statlab.

مشاور تحقیقات آماری Clay Ford کتابخانه دانشگاه ویرجینیا 19 مارس 2021

مبانی تجارت فارکس...
ما را در سایت مبانی تجارت فارکس دنبال می کنید

برچسب : نویسنده : سحر دولتشاهی بازدید : 63 تاريخ : سه شنبه 8 فروردين 1402 ساعت: 21:12