علم البيانات ·12 دقيقة قراءة

تحليل المسوح المعقدة: أوزان المعاينة وأثر التصميم وتقدير التباين في R

دليل تحليل المسوح المعقدة بحزمة survey في R: الأوزان والطبقات والعناقيد، وأثر التصميم، وsvyglm، وتعديل عدم الاستجابة والمعايرة، وتقدير التباين، ومدخل إلى تقدير المناطق الصغيرة.

في هذه المقالة
  1. مكونات تصميم المسح وأثر كل منها
  2. أثر التصميم وحجم العينة الفعال
  3. تعريف التصميم بحزمة survey في R
  4. الانحدار تحت التصميم: svyglm
  5. عدم الاستجابة: تعديل الأوزان
  6. المعايرة: التقسيم اللاحق والتكرار النسبي
  7. تقدير التباين: التخطيط الخطي وأوزان التكرار
  8. ملاحظة عن Python وبقية البرامج
  9. تقدير المناطق الصغيرة: مدخل مفاهيمي
  10. نموذج فاي وهيريوت
  11. أخطاء شائعة
  12. أسئلة شائعة
  13. هل أحتاج إلى الأوزان في نماذج الانحدار أيضًا؟
  14. ماذا أفعل إذا لم يتضمن الملف متغيرات الطبقات والعناقيد؟
  15. ما الفرق بين التقسيم اللاحق والتكرار النسبي؟
  16. في الملف وزنان للأسرة وللفرد، فأيهما أستخدم؟

تصلك البيانات الفردية لمسح أسري وطني، وفيها إلى جانب الأسئلة أعمدة بأسماء مثل wgt وstrata وpsu. إذا حسبت المتوسطات والنسب دون الوزن فستحصل على تقديرات متحيزة نحو الفئات التي بولغ في تمثيلها عمدًا في العينة. وإذا استخدمت الوزن كأوزان تكرار في برنامج إحصائي عادي فستحصل على تقدير نقطي صحيح غالبًا، لكن مع خطأ معياري صغير إلى درجة مضللة، ونتائج «دالة» لا تستحق ذلك. تحليل المسوح المعقدة يعني أن تدخل التصميم نفسه، أي الأوزان والطبقات والعناقيد، في كل تقدير وفي كل خطأ معياري. يشرح هذا المقال مكونات التصميم، والتحليل بحزمة survey في R، وتعديل عدم الاستجابة والمعايرة، وتقدير التباين، ثم مدخلًا مفاهيميًا إلى تقدير المناطق الصغيرة.

مكونات تصميم المسح وأثر كل منها

المسوح الكبيرة التي تجريها المكاتب الإحصائية والمنظمات نادرًا ما تكون عينات عشوائية بسيطة. الشائع عينة متعددة المراحل: يقسم البلد إلى طبقات (محافظات، وحضر وريف)، وتسحب داخل كل طبقة مناطق عد هي وحدات المعاينة الأولية (PSU)، ثم أسر داخل كل منطقة. ولكل مكون أثر مختلف على التقدير وعلى دقته. ولمراجعة أنواع المعاينة نفسها اقرأ مقال طرق المعاينة.

المكون سبب استخدامه أثره على التقدير أثره على الخطأ المعياري
الأوزان (Weights) احتمالات اختيار غير متساوية، وتعديل عدم الاستجابة، والمعايرة تجاهلها يسبب تحيزًا تفاوت الأوزان يرفع التباين عادةً
الطبقات (Strata) ضمان تمثيل كل منطقة وفئة، وتحسين الدقة لا تحيز إذا استخدمت الأوزان الصحيحة تخفض التباين عادةً
العناقيد (PSU) خفض تكلفة العمل الميداني وتوفر الإطار لا تحيز إذا استخدمت الأوزان الصحيحة ترفع التباين لأن وحدات العنقود الواحد متشابهة
تصحيح المجتمع المحدود (FPC) السحب دون إرجاع من مجتمع صغير نسبيًا لا أثر يخفض التباين حين يكون كسر المعاينة كبيرًا

الوزن الأساسي (Base Weight) هو مقلوب احتمال الاختيار: أسرة احتمال اختيارها واحد من خمسمئة تمثل خمسمئة أسرة في المجتمع. يعدل هذا الوزن بعد ذلك لعدم الاستجابة، ثم يعاير ليطابق مجاميع سكانية معروفة. والوزن النهائي في الملف هو حاصل هذه الخطوات كلها، لذلك يجب أن تقرأ التوثيق الفني للمسح لتعرف أي وزن يناسب وحدة تحليلك.

أثر التصميم وحجم العينة الفعال

أثر التصميم (Design Effect) هو نسبة تباين التقدير تحت التصميم الفعلي إلى تباينه لو كانت العينة عشوائية بسيطة بالحجم نفسه. أثر تصميم قيمته 2 مثلًا يعني أن عينة من 4000 أسرة تعطي دقة عينة بسيطة من 2000 أسرة فقط، وهذا ما يسمى حجم العينة الفعال (n/deff). ولأثر التصميم مصدران معروفان يمكن تقريبهما بصيغتي كيش (Kish):

  • أثر العنقدة: تقريبًا 1 + (m - 1) × ρ، حيث m متوسط عدد الوحدات المسحوبة من كل عنقود وρ معامل الارتباط داخل العنقود. لهذا قد يكون الأثر كبيرًا حتى مع ρ صغير إذا سحبت أسرًا كثيرة من كل منطقة.
  • أثر تفاوت الأوزان: تقريبًا 1 + CV²، حيث CV معامل اختلاف الأوزان.
# Kish's approximate design effect due to unequal weights: n * sum(w^2) / sum(w)^2
kish_deff_w <- function(w) length(w) * sum(w^2) / sum(w)^2

library(survey)
data(api)                    # California schools: samples plus the full population
kish_deff_w(apistrat$pw)     # weights differ across strata, so the value exceeds 1
kish_deff_w(apiclus1$pw)     # equal weights in this design, so the value is 1

يهمك هذا عند التخطيط، لأن حساب حجم العينة بصيغة العينة البسيطة ثم سحبها عنقوديًا ينتج مسحًا أقل دقة مما وعدت به، ولهذا يضرب الحجم المحسوب في أثر التصميم المتوقع كما في مقال حساب حجم العينة. وعند التحليل تحسب الحزمة أثر التصميم الفعلي لكل تقدير.

تعريف التصميم بحزمة survey في R

حزمة survey التي طورها توماس لملي هي المرجع في R لتحليل المسوح المعقدة. فكرتها أنك تعرف كائن تصميم مرة واحدة، ثم تمرره إلى كل دوال التحليل بدل إطار البيانات. نستخدم بيانات api المدمجة في الحزمة، وهي عينات من مدارس ولاية كاليفورنيا سحبت بتصاميم مختلفة، ومعها ملف المجتمع الكامل apipop للمقارنة. والنتائج التي تظهر عند التشغيل توضيحية لهذه البيانات.

# Stratified sample: strata = school type, pw = weights, fpc = schools per stratum
dstrat <- svydesign(id = ~1, strata = ~stype, weights = ~pw, fpc = ~fpc, data = apistrat)

# One-stage cluster sample of school districts (dnum = PSU)
dclus1 <- svydesign(id = ~dnum, weights = ~pw, fpc = ~fpc, data = apiclus1)

svymean(~api00, dstrat)
svymean(~api00, dclus1, deff = TRUE)      # design effect relative to SRS
svyby(~api00, ~stype, dclus1, svymean)    # domain estimates by school type
confint(svymean(~api00, dclus1))

# Naive analysis that ignores the clustering (for comparison only)
c(mean = mean(apiclus1$api00), se = sd(apiclus1$api00) / sqrt(nrow(apiclus1)))
mean(apipop$api00)                        # the population value is known here

قارن الخطأ المعياري في التحليل الساذج بالخطأ المعياري تحت التصميم العنقودي: الفرق هو بالضبط ما يضيع حين تتجاهل العنقدة. وفي مسح أسري حقيقي تتكرر أرقام وحدات المعاينة الأولية عادةً داخل كل طبقة، وقد تبقى طبقة بوحدة أولية واحدة بعد التنظيف. هذا مثال اصطناعي يوضح الإعداد المناسب للحالتين:

# Synthetic household survey: 10 strata x 20 PSUs x 15 households
set.seed(10)
hh <- expand.grid(hh_id = 1:15, psu = 1:20, stratum = 1:10)
psu_effect <- rnorm(200)[(hh$stratum - 1) * 20 + hh$psu]   # shared within each PSU
hh$income <- 50 + 2 * hh$stratum + 5 * psu_effect + rnorm(nrow(hh), sd = 8)
hh$wgt <- 100 + 20 * hh$stratum                            # synthetic design weights

options(survey.lonely.psu = "adjust")    # rule for strata left with a single PSU
hh_design <- svydesign(ids = ~psu, strata = ~stratum, weights = ~wgt,
                       nest = TRUE,      # PSU numbers restart within each stratum
                       data = hh)
svymean(~income, hh_design, deff = TRUE)

الخيار nest = TRUE ضروري حين يتكرر رقم الوحدة الأولية في طبقات مختلفة، فيعامل الرقم 1 في الطبقة الأولى وحدة مستقلة عن الرقم 1 في الطبقة الثانية، وبدونه توقفك الحزمة برسالة خطأ. والخيار survey.lonely.psu يحدد كيف تعامل الطبقات ذات الوحدة الأولية الواحدة، إذ لا يمكن فيها حساب التباين داخل الطبقة.

الانحدار تحت التصميم: svyglm

تقدر الدالة svyglm() النماذج الخطية واللوجستية مع أخطاء معيارية تراعي التصميم. ولاختبار مجموعة من المعاملات معًا استخدم regTermTest() بدل اختبارات نسبة الأرجحية المعتادة، لأن التقدير هنا يقوم على أرجحية زائفة (Pseudo-likelihood) لا على أرجحية حقيقية.

m1 <- svyglm(api00 ~ ell + meals + mobility, design = dclus1)
summary(m1)

# Binary outcome: quasibinomial avoids warnings about non-integer weighted counts
dclus1 <- update(dclus1, high = as.numeric(api00 > 700))
m2 <- svyglm(high ~ ell + meals, design = dclus1, family = quasibinomial())
summary(m2)
regTermTest(m2, ~ ell + meals)            # joint Wald test under the design

# Subpopulation: subset the design object, never the data frame
m3 <- svyglm(api00 ~ ell + meals, design = subset(dclus1, stype == "E"))
degf(dclus1)                              # design degrees of freedom

السطر الخاص بالمجتمع الفرعي يستحق التوقف. إذا أردت تحليل المدارس الابتدائية وحدها، فلا تحذف بقية الصفوف ثم تعرف التصميم، لأنك تفقد بذلك معلومات العناقيد اللازمة لتقدير التباين، وتعامل حجم المجتمع الفرعي كأنه ثابت وهو عشوائي. استخدم subset() على كائن التصميم. ولاحظ أن درجات الحرية هنا تقارب عدد الوحدات الأولية ناقص عدد الطبقات، لا عدد المشاهدات، فقد تكون صغيرة حتى في مسح من آلاف الأسر. ولمراجعة تفسير المعاملات نفسها اقرأ مقال تحليل الانحدار.

عدم الاستجابة: تعديل الأوزان

لا يستجيب كل من اختير في العينة. وإذا كان غير المستجيبين يختلفون عن المستجيبين في المتغيرات المقاسة، فالتقديرات المحسوبة من المستجيبين وحدهم متحيزة. الأسلوبان الشائعان لتخفيف هذا التحيز:

  • خلايا الترجيح (Weighting Classes): تقسم العينة إلى خلايا متجانسة بمتغيرات متاحة للمستجيبين وغير المستجيبين معًا، من إطار المعاينة غالبًا، ثم يقسم وزن كل مستجيب على معدل الاستجابة الموزون في خليته.
  • نمذجة احتمال الاستجابة (Response Propensity): تقدر احتمال الاستجابة بانحدار لوجستي، ثم تعدل الأوزان بمقلوب هذا الاحتمال، وغالبًا بعد تجميع الاحتمالات في فئات لتجنب الأوزان المتطرفة.
# Weighting-class nonresponse adjustment (synthetic illustration)
set.seed(3)
s <- data.frame(cell = sample(c("urban", "rural"), 1000, replace = TRUE), base_w = 50)
s$resp <- rbinom(1000, 1, ifelse(s$cell == "urban", 0.6, 0.8))

# Weighted response rate in each cell
rr <- tapply(s$base_w * s$resp, s$cell, sum) / tapply(s$base_w, s$cell, sum)
s$nr_w <- ifelse(s$resp == 1, s$base_w / rr[s$cell], 0)

# Check: respondents now carry the full sample's weight in every cell
cbind(adjusted = tapply(s$nr_w, s$cell, sum), base = tapply(s$base_w, s$cell, sum))

الفحص الأخير جوهري: مجموع أوزان المستجيبين بعد التعديل يساوي مجموع الأوزان الأساسية للعينة كاملة في كل خلية. لكن التعديل يفترض أن المستجيبين وغير المستجيبين داخل الخلية متشابهون، وهو افتراض لا تختبره البيانات وحدها، فاختر متغيرات الخلايا مما يرتبط بالاستجابة وبمتغيرات المسح الأساسية معًا.

المعايرة: التقسيم اللاحق والتكرار النسبي

بعد تعديل عدم الاستجابة تعاير الأوزان عادةً لتطابق مجاميع سكانية معروفة من التعداد أو السجلات، كالتوزيع حسب المحافظة والجنس والعمر، فيقل التحيز المتبقي وتتحسن الدقة حين ترتبط متغيرات المعايرة بمتغيرات المسح. وفي حزمة survey ثلاث دوال رئيسية:

  • postStratify(): التقسيم اللاحق، ويحتاج إلى مجاميع الخلايا المتقاطعة كاملة، مثل المحافظة × الجنس.
  • rake(): التكرار النسبي (Raking)، يطابق الهوامش واحدًا بعد الآخر بالتكرار حتى التقارب، ويكفيه أن تعرف المجموع الهامشي لكل متغير منفردًا.
  • calibrate(): الإطار العام الذي يشمل مقدر الانحدار المعمم (GREG)، ويسمح بمتغيرات معايرة كمية وبحدود على نسب تعديل الأوزان.
# Known population margins, taken here from the full population file apipop
pop_stype   <- as.data.frame(table(stype = apipop$stype))
pop_schwide <- as.data.frame(table(sch.wide = apipop$sch.wide))

dclus1_r <- rake(dclus1,
                 sample.margins     = list(~stype, ~sch.wide),
                 population.margins = list(pop_stype, pop_schwide))

svytotal(~stype, dclus1_r)       # now reproduces the population counts
svymean(~api00, dclus1_r)        # compare with svymean(~api00, dclus1)
summary(weights(dclus1_r))       # look for extreme weights after raking

بعد المعايرة افحص توزيع الأوزان، فالأوزان المتطرفة ترفع التباين وتدل على خلايا بعيدة عن المجتمع. الحلول المعتادة دمج الخلايا الصغيرة، أو تقييد نسب التعديل في calibrate() بالوسيط bounds، أو تشذيب الأوزان بالدالة trimWeights() ثم إعادة المعايرة. واحرص على أن تكون المجاميع المرجعية للمجتمع نفسه وللفترة التي يغطيها المسح.

تقدير التباين: التخطيط الخطي وأوزان التكرار

لتقدير التباين عائلتان من الطرق. التخطيط الخطي بمتسلسلة تايلور (Taylor Linearization) هو الافتراضي في svydesign()، ويحتاج إلى متغيرات الطبقات والعناقيد. وطرق أوزان التكرار (Replicate Weights) تعيد حساب التقدير مرات كثيرة بأوزان معدلة ثم تقيس تشتت النتائج. وتنشر جهات إحصائية كثيرة أوزان التكرار بدل متغيرات التصميم، فتحمي سرية مواقع العناقيد وتتيح للمستخدم حساب تباين صحيح.

الطريقة الفكرة تناسب ملاحظات
التخطيط الخطي (Taylor) تقريب الإحصاءة غير الخطية بدالة خطية المتوسطات والنسب والمجاميع والانحدار سريعة، وتحتاج إلى متغيرات التصميم
جاكنايف (JK1، JKn) حذف وحدة أولية في كل تكرار التصاميم العنقودية، وJKn للطبقية ضعيفة مع الإحصاءات غير الملساء كالوسيط
التكرار المتوازن (BRR) ونسخة Fay أنصاف عينات متوازنة تصاميم بوحدتين أوليتين في كل طبقة شائعة في المسوح الرسمية
البوتستراب (Bootstrap) إعادة سحب وحدات أولية داخل الطبقات الإحصاءات المعقدة والمئينات تحتاج إلى عدد كافٍ من التكرارات
# Convert the linearization design to replicate weights
rclus1 <- as.svrepdesign(dclus1, type = "JK1")
svymean(~api00, rclus1)

bclus1 <- as.svrepdesign(dclus1, type = "bootstrap", replicates = 500)
svymean(~api00, bclus1)
svyquantile(~api00, bclus1, quantiles = 0.5)   # median with a replicate-based SE

إذا وصلك ملف فيه أوزان تكرار جاهزة فعرف التصميم بالدالة svrepdesign()، مع تحديد نوع التكرار ومعاملاته كما يذكرها التوثيق الفني للمسح، لأن الخطأ في نوع التكرار ينتج أخطاء معيارية خاطئة دون أي رسالة تحذير.

ملاحظة عن Python وبقية البرامج

بيئة Python أقل نضجًا هنا من R وStata. توفر statsmodels أوزانًا وأخطاء معيارية عنقودية في بعض النماذج، لكنها لا تعالج الطبقات وتصحيح المجتمع المحدود وأوزان التكرار كما تفعل حزمة survey. ومكتبة samplics مخصصة للمسوح وتقدم التخطيط الخطي وأوزان التكرار، لكن واجهتها تطورت بين الإصدارات، فاتبع توثيق إصدارك وطابق نتائجها مع R أو Stata على مثال معروف قبل أي تقرير رسمي. وفي SPSS يلزم لذلك وحدة Complex Samples، وفي Stata الأمر svyset ثم البادئة svy:.

تقدير المناطق الصغيرة: مدخل مفاهيمي

يصمم المسح الوطني ليعطي تقديرات دقيقة على المستوى الوطني وربما مستوى المحافظة. وحين يطلب تقدير لكل بلدية، تصبح العينة في كثير من الوحدات صغيرة جدًا، فيرتفع معامل الاختلاف للتقدير المباشر إلى حد يمنع نشره، وقد لا توجد عينة أصلًا في بعضها. تقدير المناطق الصغيرة (Small Area Estimation) يعالج ذلك «باستعارة القوة»، أي بنموذج يربط مؤشر المسح بمتغيرات مساعدة متاحة لكل المناطق من التعداد أو السجلات الإدارية. وتستخدمه مكاتب إحصائية ومنظمات دولية لإنتاج تقديرات محلية لمؤشرات مثل الفقر.

نموذج فاي وهيريوت

نموذج فاي وهيريوت (Fay–Herriot) هو النموذج الأساسي على مستوى المنطقة، ويتكون من طبقتين:

  • نموذج المعاينة: direct_i = θ_i + e_i، أي أن التقدير المباشر للمنطقة i يساوي القيمة الحقيقية مضافًا إليها خطأ معاينة تباينه ψ_i، ويعامل هذا التباين كأنه معلوم، فيقدر من المسح ويمهد عادةً قبل استخدامه.
  • نموذج الربط: θ_i = x_i'β + u_i، أي أن القيمة الحقيقية تتبع انحدارًا على المتغيرات المساعدة مع أثر عشوائي للمنطقة تباينه σ²_u.

يجمع المقدر الناتج (EBLUP) بين التقدير المباشر والتقدير التركيبي من الانحدار بوزن γ_i = σ²_u / (σ²_u + ψ_i). المنطقة ذات العينة الكبيرة وتباين المعاينة الصغير يقترب تقديرها من التقدير المباشر، والمنطقة ذات العينة الصغيرة يقترب تقديرها من التوقع التركيبي. يوضح المثال التالي الفكرة بأرقام اصطناعية، مع افتراض σ²_u معلومًا، بينما يقدر في التطبيق الفعلي من البيانات مع تقدير متوسط مربع الخطأ لكل منطقة:

# Toy illustration of Fay-Herriot shrinkage (all numbers synthetic, sigma2_u assumed known)
direct   <- c(12.1, 8.4, 15.0, 10.2)   # direct survey estimates by area
psi      <- c(1.0, 6.0, 9.0, 0.5)      # their sampling variances
synth    <- c(11.0, 10.0, 12.0, 10.5)  # regression-synthetic predictions x'beta
sigma2_u <- 2

gamma <- sigma2_u / (sigma2_u + psi)
eblup <- gamma * direct + (1 - gamma) * synth
round(data.frame(direct, psi, gamma, synth, eblup), 2)

جودة التقديرات هنا تحددها المتغيرات المساعدة قبل الصيغة: يجب أن تكون متاحة لكل المناطق، ومعرفة بالطريقة نفسها، وقريبة زمنيًا من المسح، ومرتبطة فعلًا بالمؤشر. ويرافق أي تطبيق جاد تقدير لمتوسط مربع الخطأ (MSE) لكل منطقة، وفحص لافتراضات النموذج، ومعايرة (Benchmarking) تجعل التقديرات المحلية متسقة مع التقدير الوطني المنشور. وحين تتوفر متغيرات مساعدة على مستوى الأسرة في التعداد، تستخدم نماذج على مستوى الوحدة، مثل نموذج باتيس وهارتر وفولر.

أخطاء شائعة

  • حساب نسب ومتوسطات دون أوزان، أو إدخال الأوزان كأوزان تكرار في برنامج لا يعرف التصميم.
  • تجاهل العنقدة، فتظهر أخطاء معيارية صغيرة ونتائج دالة زائفة.
  • تصفية البيانات قبل تعريف التصميم بدل استخدام subset() على كائن التصميم.
  • نسيان nest = TRUE حين تتكرر أرقام الوحدات الأولية بين الطبقات.
  • عرض حجم العينة غير الموزون بجانب نسب موزونة دون توضيح، أو عرض النسب دون فترات ثقة أو معاملات اختلاف.
  • معايرة الأوزان إلى مجاميع مرجعية من فترة أو تعريف مختلف عن المسح.
  • نشر تقديرات مباشرة لمناطق صغيرة بمعاملات اختلاف مرتفعة دون تنبيه القارئ.

أسئلة شائعة

هل أحتاج إلى الأوزان في نماذج الانحدار أيضًا؟

في التقديرات الوصفية على مستوى المجتمع، كالنسب والمتوسطات والمجاميع، الأوزان ضرورية. أما في النماذج فالمسألة محل نقاش معروف: إذا كان النموذج صحيح التحديد ويتضمن المتغيرات التي بني عليها التصميم، فقد تكون التقديرات غير الموزونة أدق. الممارسة الآمنة أن تقدر النموذج بالتصميم الكامل ثم تقارنه بالتقدير غير الموزون، والفرق الكبير بينهما إشارة إلى أن النموذج يحتاج إلى مراجعة.

ماذا أفعل إذا لم يتضمن الملف متغيرات الطبقات والعناقيد؟

ابحث في التوثيق الفني عن أوزان تكرار أو متغيرات تصميم مموهة تنشرها بعض الجهات حماية للسرية، وإلا فاطلبها من الجهة المصدرة. والحل الأخير أن تستخدم الأوزان وحدها مع التصريح بأن الأخطاء المعيارية قد تكون أقل من الحقيقية، أو أن تعدلها بأثر تصميم منشور في تقرير المسح.

ما الفرق بين التقسيم اللاحق والتكرار النسبي؟

التقسيم اللاحق يطابق مجاميع الخلايا المتقاطعة كلها، فيحتاج إلى جدول كامل مثل المحافظة × الجنس × الفئة العمرية، وقد تصبح بعض خلاياه صغيرة جدًا في العينة. أما التكرار النسبي فيطابق كل هامش على حدة بالتكرار، فيكفيه توزيع كل متغير منفردًا، وهو الخيار الشائع حين لا تتوفر الجداول المتقاطعة.

في الملف وزنان للأسرة وللفرد، فأيهما أستخدم؟

الوزن يتبع وحدة التحليل: وزن الأسرة لأسئلة الأسر، كنسبة الأسر التي تملك مسكنها، ووزن الفرد لأسئلة الأفراد، كنسبة المتعطلين عن العمل. والتوثيق الفني للمسح هو المرجع في الوزن المناسب لكل وحدة ولكل قسم من الاستبانة.

المسح المعقد يحمل تصميمه في أعمدة قليلة، وتجاهلها يغير الأرقام ودلالتها معًا. عرف التصميم مرة واحدة، وحلل من خلاله، وافحص الأوزان بعد كل تعديل، وعامل التقديرات المحلية بالحذر الذي تستحقه. وإذا كان لدى مؤسستك مسح كبير يحتاج إلى بناء أوزان أو معايرة أو تقديرات تباين صحيحة، فيمكن لفريق مركز المستشار تنفيذ ذلك بلغتي R وPython ضمن خدمة تحليل البيانات المتقدم، والاستشارة الأولى مجانية.

آخر تحديث:
ESC
اكتب كلمة مفتاحية ثم اضغط Enter — مثل: «منهجية»، «إحصاء»، «اقتباس»، «نشر».