تخيل بياناتك قبل أن تجمعها.


تم إعداد الترجمة لطلاب الدورة "التحليلات التطبيقية على البحث" .




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


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


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


تقدم هذه المقالة حزمة fabricatr (من مجموعة DeclareDesign من الحزم) ، والتي يتمثل دورها في تصميم هيكل البيانات والميزات. راجع مراجعة DeclareDesign على RViews تصف فلسفتها. يساعدك Fabricatr على التفكير في بياناتك قبل البدء في التحليل أو حتى التجميع. أي نوع من البيانات؟ كيف يتم تنظيمها؟ ما القياسات التي سوف تتخذها؟ ما هي نطاقاتها وكيف ترتبط؟ يمكن أن يساعدك fabricatr في محاكاة بيانات وهمية قبل جمع بيانات حقيقية واختبار استراتيجيات تقييم مختلفة دون الحاجة إلى القلق بشأن تغيير افتراضاتك.


تخيل بنية البيانات الخاصة بك


في أبسط الحالات ، ستقوم fabricatr بإنشاء بنية بيانات أحادية المستوى بكمية معينة.


library(fabricatr) fabricate(N = 100, temp_fahrenheit = rnorm(N, mean = 80, sd = 20)) ## Warning: `is_lang()` is deprecated as of rlang 0.2.0. ## Please use `is_call()` instead. ## This warning is displayed once per session. ## Warning: `lang_name()` is deprecated as of rlang 0.2.0. ## Please use `call_name()` instead. ## This warning is displayed once per session. 

الهويةTEMP_FAHRENHEIT
00156.6
00246.3
00390.5
00475.1
00585.1
006102.8

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


 library(fabricatr) fabricate( # five schools school = add_level(N = 5, n_classrooms = sample(10:15, N, replace = TRUE)), # 10 to 15 classrooms per school classroom = add_level(N = n_classrooms), # 15 students per classroom student = add_level(N = 15) ) ## Warning: `lang_modify()` is deprecated as of rlang 0.2.0. ## Please use `call_modify()` instead. ## This warning is displayed once per session. 

SCHOOLN_CLASSROOMSCLASSROOMSTUDENT
11201001
11201002
11201003
11201004
11201005
11201006

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


 dat <- fabricate( primary_schools = add_level(N = 5, primary_rank = 1:N), secondary_schools = add_level(N = 6, secondary_rank = 1:N, nest = FALSE), students = link_levels(N = 15, by = join(primary_rank, secondary_rank, rho = 0.9)) ) ## `link_levels()` calls are faster if the `mvnfast` package is installed. ggplot(dat, aes(primary_rank, secondary_rank)) + geom_point(position = position_jitter(width = 0.1, height = 0.1), alpha = 0.5) + theme_bw() 


وبالمثل ، يمكنك إنشاء بيانات طولية عبر مستويات متقاطعة :


 fabricate( students = add_level(N = 2), years = add_level(N = 20, year = 1981:2000, nest = FALSE), student_year = cross_levels(by = join(students, years)) ) 

STUDENTSYEARSYEARSTUDENT_YEAR
101198101
201198102
102198203
202198204
103198305
203198306

تخيل علاماتك


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


سمات مع Intraclass العلاقة


باستخدام الأدوات الموضحة أعلاه ، يمكنك إنشاء بيانات تحتوي على اختلافات بين الكتل وبين الكتل ، على سبيل المثال ، الاختلافات في الفصول الدراسية والتغيرات بين الفصول الدراسية. في كثير من الحالات ، من الضروري تحديد مستوى الارتباط داخل الطبقة (ICC) بشكل أكثر دقة. هنا سوف يساعدك draw_normal_icc و draw_binary_icc .


 dat <- fabricate( N = 1000, clusters = sample(LETTERS, N, replace = TRUE), Y1 = draw_normal_icc(clusters = clusters, ICC = .2), Y2 = draw_binary_icc(clusters = clusters, ICC = .2) ) ICC::ICCbare(clusters, Y1, dat) ## [1] 0.09726701 ICC::ICCbare(clusters, Y2, dat) ## [1] 0.176036 

النتائج المطلوبة


لدينا أيضًا أدوات للمتغيرات العشوائية المنفصلة (بما في ذلك النتائج المطلوبة). نحن نأخذ متغيرًا كامنًا (مثل test_ability ) ونحوله إلى سمة مرتبة ( test_score ).


 dat <- fabricate( N = 100, test_ability = rnorm(N), test_score = draw_ordered(test_ability, breaks = c(-.5, 0, .5)) ) ggplot(dat, aes(test_ability, test_score)) + geom_point() + theme_bw() 


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


إلى أين أذهب بعد ذلك


هذه المقالة هي نظرة عامة على مستوى عال من وظائف fabricatr . لإلقاء نظرة أعمق ، راجع المقال " البدء مع فابريكات" .


يمكنك تثبيت fabricatr عبر CRAN:


 install.packages("fabricatr") library(fabricatr) 



لديك سؤال؟ اكتب في التعليقات!

Source: https://habr.com/ru/post/ar460187/


All Articles