missForest
missForest هي طريقة تقدير غير معلمية لقيم مفقودة للبيانات الجدولية متعددة الأنواع في لغة R. تتعامل مع المتغيرات العددية والتصنيفية في الوقت نفسه من خلال تدريب غابات عشوائية بشكل تكراري للتنبؤ بالقيم المفقودة بناءً على القيم الملحوظة. لا افتراضات نمذجة صريحة، ولا تحليلات مصفوفية—فقط خطوط أساس تنبؤية قوية تعمل مباشرة بكفاءة.
- تعمل مع أي مزيج من الأعمدة العددية والتصنيفية
- تلتقط اللاخطيات والتفاعلات
- تبلغ عن خطأ التقدير خارج الحقيبة (OOB) (NRMSE/PFC)
- تدعم التنفيذ المتوازي (حسب المتغير أو حسب الغابة)
- يوجد محركان للغابات:
ranger(افتراضي) وrandomForest(قديم/متوافق)
التثبيت
# CRAN (recommended)
install.packages("missForest")Development version (from GitHub)
install.packages("remotes")
remotes::install_github("stekhoven/missForest")Quick start
library(missForest)Example data
data(iris)Introduce ~20% MCAR missingness
set.seed(81)
iris_mis <- prodNA(iris, noNA = 0.20)Impute with default backend (ranger)
imp <- missForest(iris_mis, xtrue = iris, verbose = TRUE)Imputed data
head(imp$ximp)Estimated OOB errors (NRMSE for numeric, PFC for factors)
imp$OOBerrorTrue error if xtrue was provided (for benchmarking only)
imp$errorاختيار الواجهة الخلفية
# Legacy behavior using randomForest
imp_rf <- missForest(iris_mis, backend = "randomForest")Explicitly use ranger with limited threads
imp_rg <- missForest(iris_mis, backend = "ranger", num.threads = 2)التوازي
يتوفر وضعان عبر parallelize:
"variables": بناء الغابات لمتغيرات مختلفة بالتوازي (سجل خلفية foreach)."forests": التوازي ضمن غابة متغير واحد (خيوط ranger؛ أو غابات فرعية foreach لـ randomForest).
# Not run:
library(doParallel)
registerDoParallel(2)
imp_vars <- missForest(iris_mis, parallelize = "variables", verbose = TRUE)
imp_fors <- missForest(iris_mis, parallelize = "forests", verbose = TRUE, num.threads = 2)
نظرة عامة على واجهة برمجة التطبيقات (API)
missForest(xmis, ...)
دالة الإكمال الأساسية.
المعلمات الرئيسية:
xmis— إطار بيانات/مصفوفة تحتوي على قيم مفقودة (يجب أن تكون الأعمدة من النوعnumericأوfactor).maxiter— الحد الأقصى لعدد التكرارات (القيمة الافتراضية10).ntree— عدد الأشجار في كل غابة (الافتراضي100).mtry— عدد المتغيرات المجربة عند كل تقسيم (الافتراضيsqrt(p)).nodesize— عدد عشري من عنصرين: الحد الأدنى لحجم العقدة لـ c(numeric, factor). الافتراضيc(5, 1).variablewise— يُرجع خطأ OOB لكل متغير إذا كانت قيمتهTRUE.parallelize—"no"أو"variables"أو"forests".num.threads— عدد الخيوط لـranger(يتم تجاهله فيrandomForest).backend—"ranger"(افتراضي) أو"randomForest".xtrue— بيانات كاملة اختيارية لأغراض المقارنة المرجعية (تضيف$error).
backend = "ranger":ntree → num.treesnodesize → min.bucket(منفصل للتنبؤ والانحدار/التصنيف؛ الافتراضيc(5,1))sampsize(كعدد) →sample.fraction(كنسبة؛ إجمالية أو لكل فئة)classwt → class.weightscutoffتتم معالجته عن طريق تركيب غابات الاحتمالية ثم تطبيق العتبة بعد ذلك
الأدوات المساعدة
mixError(ximp, xmis, xtrue)— يحسب NRMSE (للمتغيرات العددية) و PFC (للمتغيرات الفئوية) للقيم المفقودة الحقيقية.nrmse(ximp, xmis, xtrue)— NRMSE للبيانات العددية فقط.prodNA(x, noNA = 0.1)— يحقن فقدان عشوائي (MCAR) في إطار بيانات.varClass(x)— يُرجع"numeric"/"factor"لكل عمود.
نصائح وأفضل الممارسات
- قم بتحويل أعمدة الأحرف إلى عوامل قبل استدعاء
missForest. - بالنسبة للبيانات الواسعة، ضع في اعتبارك استخدام
parallelize = "variables". بالنسبة للأشجار العميقة أو المكلفة، ضع في اعتبارك استخدامparallelize = "forests". - قم بتعيين قيمة للبذرة للحصول على نتائج شبه قابلة لإعادة الإنتاج:
set.seed(123); imp <- missForest(x)
``
- يمكنك تقليل قيمة
ntree أثناء النمذجة الأولية لتسريع عملية التكرار.---
الاقتباس
إذا استخدمت missForest، يرجى الاقتباس من:
Stekhoven, D. J. & Bühlmann, P. (2012). MissForest—nonparametric missing value imputation for mixed-type data.* Bioinformatics, 28(1), 112–118. https://doi.org/10.1093/bioinformatics/btr597
يمكنك أيضًا الاستشهاد بالحزمة:
r
citation("missForest")
``Contributing
Issues and pull requests are welcome. Please include a minimal reproducible example when reporting bugs. For performance discussions, share small benchmarks and session info.
License
GPL (≥ 2)
Contact
Daniel J. Stekhoven — stekhoven@nexus.ethz.ch
--- Tranlated By Open Ai Tx | Last indexed: 2026-07-17 ---