لوحة المتصدرين
المحتوى الأكثر حصولًا على سمعة جيدة
المحتوى الأعلى تقييمًا في 06/29/16 في كل الموقع
-
1- علوم الحاسب Computer Science يهتم هذا التخصص في كيفية بناء أنظمة تتناسب مع مختلف المجالات في الحياة وأيضاً يهتم بكيفية التراسل داخل الشبكات وحماية المعلومات وحماية التراسل بين الشبكات. تخصص علوم الحاسب دائما يركز على الأنظمة Software و البيانات Data والأمن Security سواء للشبكات أو للمعلومات و كيفية إنشاء Algorithms لحل مشاكل معينة. يركز هذا التخصص على الرياضيات بشكل كبير فطلاب علوم الحاسب غالبا يدرسون 6 إلى 8 كورسات في الرياضيات. علوم الحاسب يقوم بحل المشاكل المعقدة بوضع حلول رائعة مناسبة باستخدام التحليل الرياضي والخوارزميات باستخدام لغات برمجة وأيضا يركّز على كيفية حماية برنامج معين أو شبكه معينة. علوم الحاسب يشكل القاعدة الأساسية لهندسة البرامج، كما الفيزياء تشكل القاعدة الأساسية للهندسة الكهربائية وهو تخصص لا غنى عنه في جميع المجالات فهو غير مقتصر على بناء البرامج البسيطة بل له دخول في جميع العلوم الموجودة وله تواجد في جميع التخصصات مثل الإدارة والطب والأحياء والهندسة وعلم الفلك والجيولوجيا واللغة وجميع التخصصات ويوجد مسارات tracks |or| Concentrations داخل تخصص علوم الحاسب بمعنى يتخصص الطالب بأحد المسارات في دراسته وعادة تكون في مرحلة الماجستير اكثر من البكالوريوس أمثله على المسارات Artificial Intelligence Communication Networks Computer Architecture and Compilers Cryptography and Security web development 2- هندسة الحاسب Computer Engineering يهتم هذا التخصص في تجميع الأجهزة ومكونات البرامج لنصب استعمال الحاسبات بأفضل خصائص يركز هذا التخصص على تكوين الهاردوير Hardware وكيفية عملة داخل الجهاز وكيفية التعامل مع المعالج Processor و الذاكرة Memory و الدائرة الكهربائية Electric circuit طلاب هندسة الحاسب يأخذون بعض الكورسات من تخصص Computer Science مثل البرمجة و قواعد البيانات وغيرها في بعض الجامعات هندسة الحاسب تدخل ضمن أنظمة كلية الهندسة ويوجد مسارات tracks |or| Concentrations داخل تخصص هندسة الحاسب بمعنى يتخصص الطالب بأحد المسارات في دراستة وعادة تكون في مرحلة الماجستير اكثر من البكالوريوس أمثله على المسارات Computer Architecture & Embedded Systems Computer Aided Design Computer Networks & Communication Systems ويوجد مسارات أخرى كثيرة الآن نأتي إلى الفرق: الفرق بين تخصص الحاسب التربوي والهندسي؟ - التربوي يركز على كيفية استخدام الحاسب : استخدام ويندوز - اوفيس Word Excel Access - فوتوشوب - وتعريف طابعات وغيرها من كيفية استخدام البرامج الجاهزة - الهندسي يركز على كيفية بناء الحاسب وبناء انظمة له : من برمجة وتحليل وبناء شبكات وأمن برامج وغيرها. علوم الحاسب يهتم في دراسة أساسيات علم الحاسب والبرمجة لذلك يركز هذا التخصص على كورسات البرمجة والخورازميات والتحليل الرقمي والنظريات في علم الحاسب - هندسة الحاسب تعمل على بناء الهاردوير. لكن لا تقتصر على الهاردوير فقط بل تشارك في بناء الأنظمة الأساسية داخل معظم الأجهزة مثل أنظمة الحاسب الداخلة في السيارات والطيارات والإلكترونيات والهواتف والشبكات وغيرها . وفي كثير من الأحيان يعمل مهندس الحاسب كمبرمج. أما القسم الذي يهتم بالبرمجة بشكل كبير هو علوم الحاسب ننصحك بالرجوع إلى مقال المدخل الشامل لتعلم علوم الحاسوب تحديدًا قسم ما الفرق بين علوم الحاسوب وهندسة الحاسوب؟ ففيه تفاصيل أوسع ويتحدث المقال بعمق عم مجال علوم الحاسوب. وبالتوفيــــــــــــــــــــــق3 نقاط
-
تعد لغة R من اللغات التي صعد نجمها حديثا وبشكل سريع بمجال البرمجة العلمية في قطاعي الإحصاء والمعلوماتية الحيوية (bioinformatics) حيث باتت معتمدة على نطاق واسع في كثير من الجامعات ومراكز البحث العلمية، وأصبحنا نرى استخدامها والإشارة إليها في المقالات المنشورة بالمجلات العلمية المحكّمة يزداد بشكل طردي ومتسارع، هذا عدى عن حقيقة كونها لغة حرة مفتوحة المصدر يخضع توزيعها لترخيص GPL الشهير. كل ذلك أدى إلى تزايد ما هو متوفر ومتاح على الشابكة (الإنترنت) من مصادر لها على توزع طيف تلك المصادر، فهناك الكتب الإلكترونية والدروس التعليمية وحتى المناهج الأكاديمية والدورات التدريبية إضافة إلى البرامج الجاهزة والمكتوبة بلغة R لتنفيذ هذه المهمة أو تلك، حتى أنها باتت تحظى ببعض الامتياز مقارنة بالعديد من العمالقة في قطاع البرمجة الرياضياتية العلمية والإحصائية مثل SAS و SPSS خصوصا في مجال توافر الجديد من الطرق والخوارزميات الحديثة، حيث يقاد هذا التوجه في معظمه من طرف الجامعات ممثلة بطلاب الدراسات العليا يحفّزهم على ذلك سهولة بناء الإضافات لهذه اللغة، ويعتبر هذا الأسلوب رغم ما قد يشوبه من نقاط ضعف تتعلق بموثوقية وجودة وغزارة تلك الإضافات الجديدة، والتي تتبع خبرة ومهارة مطوريها وناشريها، لكنها تبقى في القطاع العلمي والأكاديمي أفضل كثيرا من البدائل التجارية التي يعيبها ارتفاع ثمنها من جهة، ومن جهة أخرى بطئ إضافة التحديثات التي تعكس تطور القطاعات العلمية المختلفة، حيث أنها عادة ما تتبع دورة تجارية تتحكم بها الشركات المنتجة. سنحاول في هذه المقالة أن نقدم مدخلا مبسطا ومختصرا لأساسيات هذه اللغة ونستكشف بعضا من إمكانياتها واستخداماتها، والتي أتمنى أن أراها تدرّس في جامعاتنا يوما ما، بحيث تستخدم كأداة للاختبار والتجربة والتطوير ضمن الجلسات العملية لبعض المقررات العلمية في الكليات ذات الاختصاص. هذا هو الجزء الأول في سلسة مؤلفة من أربع مقالات تهدف إلى التعريف بلغة R حيث سيتناول الجزء الثاني منها موضوع المخططات البيانية الإحصائية، أما الجزء الثالث فسيتحدث عن كيفية إجراء بعض الاختبارات الإحصائية بلغة R، فيما نختم السلسلة بجزء رابع يتحدث عن بعض التقنيات المتقدمة في هذه اللغة. يمكنك تحميل لغة R من الموقع الرسمي لها على الشابكة والموجود على العنوان http://www.r-project.org حيث توجد إصدارات منها لمعظم أنظمة التشغيل الشائعة ومنها Windows و Linux وحتى Apple. إن عملية التنصيب سهلة وتخلو من التعقيدات، وعند الانتهاء منها يمكنك تشغيل بيئة عمل لغة R بالنقر على الأيقونة الخاصة بالبرنامج سواء تلك الموجودة على سطح المكتب أو من خلال قائمة البرامج، وحينها ستظهر لك شاشة سطر الأوامر الخاصة بلغة R وهو المكان المعتاد لكتابة الأوامر الخاصة بهذه اللغة كما هو ملاحظ في الشكل التالي: وبما أننا ذكرنا أن هذه اللغة واسعة الانتشار في مجال النشر العلمي، لذا دعونا نطلع على تعليمتنا الأولى وهي تعليمة ()citation والتي تعرض الطريقة الرسمية للإشارة إلى لغة R كمرجع ضمن لائحة المراجع المستخدمة في أي ورقة علمية كما هو موضح بالشكل التالي: في لغة R تستخدم الفاصلة المنقوطة للفصل فيما بين كل أمر من أوامر اللغة الموجودة على سطر واحد (فيما لاحاجة لتلك الفواصل المنقوطة إن كانت كل تعليمة ترد ضمن سطر مستقل بها)، كما ترى فإن خرج تنفيذ أي أمر أو دالة بلغة R يظهر بعدها مباشرة، وهكذا تتكون جلسة العمل الاعتيادية من تنفيذ لتتالي من الأوامر والتعليمات وصولا إلى إنجاز العمل أو التحليل المطلوب، ويمكنك باستخدام أزرار الأسهم إلى الأعلى وإلى الأسفل من التنقل عبر مجموعة الأوامر التي تم تنفيذها خلال جلسة العمل الحالية جيئة وذهابا، كذلك يمكنك استعراض آخر 15 أمر على سبيل المثال من خلال الدالة (history(15، هذا عدى عن إمكانية حفظ وتخزين أرشيف أوامر الجلسة الحالية في ملف باستخدام الدالة ("savehistory("myfile ومن ثم استعادة ذلك الأرشيف في جلسة عمل جديدة منفصلة باستخدام الدالة "("loadhistory("myfile، هناك اختصار آخر مفيد حينما ترى أن نافذة سطر الأوامر لديك أصبحت مزدحمة بالنتائج وتريد تنظيفها، فكل ما عليك القيام به هو النقر على الاختصار Ctrl+L (مع ملاحظة أن ذلك لن يحذف أي من البيانات التي تم تحميلها إلى البرنامج والمحفوظة بالتالي في الذاكرة، بل يقوم فقط بتنظيف الشاشة المعروضة أمامك). قبل الانطلاق قدما في استعراض ما في هذه اللغة من دوال وكيفية استخدام كل منها، دعونا بداية نتعرف على طريقة الحصول على المساعدة فيها، إذ يتدرج الأمر من طلب الحصول على المساعدة الخاصة بأمر محدد أو دالة بعينها، وذلك بذكر اسم الأمر أو الدالة عقب علامة الاستفهام ومن ثم النقر على زر الإدخال، فمثلا يقوم الأمر read.table? بعرض الصفحة الخاصة بتوثيق التعليمة read.table ضمن ملفات المساعدة الخاصة بلغة R. أما إن أردت البحث عن مفهوم معين أو كلمة مفتاحية ما دون أن تعلم تماما أي الدوال هي التي تتعامل معها في لغة R، فيمكنك استخدام الأمر ("help.search("data input لتعرض عليك بعدها مجموعة من الأوامر ذات الصلة بهذا المفهوم، وتستطيع حينها الحصول على شرح أو مساعدة تفصيلية لأي من تلك الدوال بالطريقة التي أشرنا إليها سابقا. هناك وسيلة مساعدة أخرى متوفرة في لغة R موجهة إلى فئة المبرمجين الذين يفضلون رؤية الأمثلة وهي تعمل على أن يقرؤوا العشرات من أسطر ملفات المساعدة، وهؤلاء يمكنهم استخدام الأمر example بعد أن تمرر له اسم الدالة المراد الحصول على أمثلة عملية عن طريق استخدامها، فعلى سبيل المثال يمكنك تجربة الأمر (example(mean. وطالما أننا نتحدث عن وسائل وأساليب الحصول على المساعدة، أجد أنه من المفيد ذكر طريقة إضافة التعليقات في لغة R، وهو أسلوب لا تخفى ضرورته على أي مبرمج محترف، ففي لغة R التعليقات هي كل نص يتلو الرمز # سواء ظهر من بداية السطر أو جاء بعد تعليمة ما، لكن الغريب أن لغة R تفتقر إلى طريقة لجعل مقطع كامل يعامل معاملة التعليقات (كما هو حال استخدام أسلوب التأطير /* ... */ في العديد من لغات البرمجة الأخرى). الخطوة التالية التي يجب تعلمها الآن هي آلية استيراد البيانات وقراءتها من مصادرها وإن تعددت تنسيقات وصيغ تلك المصادر، فعلى سبيل المثال يمكنك القراءة من جداول البيانات المحفوظة بتنسيق csv باستخدام الأمر التالي: data <- read.csv("d:/mydir/myfile.csv", header=TRUE, sep=”;”)كما هو واضح فقد أشرنا إلى أن السطر الأول من محتويات الملف المستورد هو عبارة عن تسميات الأعمدة من خلال الخاصية header=TRUE، كذلك تم تحديد الفاصل ما بين عمود وآخر من البيانات على أنه الفاصلة المنقوطة من خلال الخاصية ";"=sep. وقد استخدمنا في هذا المثال الاسم الكامل للملف بما فيه المسار، أما إن ذكرت اسم الملف دون تحديد المسار فسيتم البحث عنه ضمن ما يدعى بمجلد العمل، ولمعرفة أين يشير مجلد العمل الحالي لديك يمكنك استخدام الأمر ()getwd، أو يمكنك تحديد مجلد عمل مختلف باستخدام الأمر ("setwd("d:/mydir ، من جهة أخرى يمكنك الاستعاضة عن كل ذلك باستخدام الأمر ()file.choose عوضا عن ذكر اسم الملف ومساره، حيث ستحصل عند التنفيذ على صندوق حوار يتيح للمستخدم استعراض ما على حاسوبه من مجلدات وملفات وصولا إلى اختيار الملف المطلوب. كما سبق وأن رأينا فإن عملية الإسناد في لغة R يشار إليها بالرمز <- وهي الطريقة الأكثر شيوعا مقارنة برمز المساواة = والذي يصح استخدامه على الرغم من عدم شيوعه بين معشر المبرمجين بلغة R، إن البيانات المقروءة سيتم حفظها ضمن إطار بيانات (dataframe) أسميناه في حالة مثالنا السابق data، ويمكنك استعراض محتويات إطار البيانات ذلك بمجرد كتابة اسمه ومن ثم النقر على زر الإدخال ضمن سطر الأوامر، أما إن كانت كمية البيانات ضخمة فمن المفيد استخدام أي من الأمرين (head(data والذي يعرض مجموعة من الأسطر مقتطعة من بداية كتلة البيانات، أو الأمر (tail(data والذي يعرض مجموعة أخرى من الأسطر مقتطعة من نهاية كتلة البيانات ذاتها. كذلك تستطيع استخدام الأمر التالي: data <- edit(data)لعرض تلك البيانات ضمن نافذة جدول بسيط يتيح للمستخدم تنقيحها ومن ثم إعادتها إلى ذات إطار البيانات الأصلي كما هو موضح من الأمر السابق. إن كانت البيانات مخزنة في ملف نصي يستخدم رمز الجدولة للفصل ما بين أعمدته (أي text tab delimated)، فعليك حينها استخدام الأمر read.data عوضا عن الأمر read.csv الموضح في المثال السابق، وهناك حالة خاصة عندما تكون البيانات المراد استيرادها موجودة فعليا ضمن الحافظة، وحينها عليك الاستعاضة عن ذكر اسم الملف بالعبارة “clipboard”. لدى لغة R أيضا المزيد من تعليمات الاستيراد التي تختص كل منها بتنسيق مختلف، فعلى سبيل المثال لا الحصر نذكر الأوامر التالية: read.spss و read.systat و read.mtp و read.xport. نستطيع الوصول بكل سهولة إلى أي جزئية في إطار البيانات الحالي من خلال المرونة التي تتيحها لنا لغة R، فلو كان لدينا إطار عمل يدعى data على سبيل المثال، فإن التعبير [data[i,j سيشير إلى العنصر أو القيمة الموجودة في السطر i والعمود j، أما التعبير [,data[i فيشير إلى كامل السطر i في حين أن التعبير [data[,n:m فيشير بدوره إلى مجموعة الأعمدة بدءا من n حتى m، من جهة أخرى فإن التعبير [,data[-i فيشير إلى كامل البيانات ضمن data فيما عدى السطر i، وأخيرا فإن التعبير [,(data[c(n,m فهو يشير إلى السطرين n و m تحديدا دون غيرهما من أسطر البيانات في data. تأتي لغة R محزومة مع إطار بيانات افتراضي يدعى mtcars يتضمن بيانات مأخوذة من مجلة Motor Trend لعام 1974 تقارن فيها عشر من مواصفات التصميم والأداء لأكثر من ثلاثين سيارة منتجة في العام 1973، وسنستخدم من بيانات تلك المواصفات في مقالتنا هذه كل من mpg ويقصد بها عدد الأميال المقطوعة بغالون البنزين الواحد، و cyl الذي يمثل عدد الإسطوانات في محرك السيارة، و wt وهو الوزن بآلاف الليبرات (الليبرة تقريبا نصف كيلوغرام)، وكذلك qsec وهو التسارع مقاسا بالزمن اللازم لقطع مسافة ربع ميل (لمزيد من المعلومات والتفاصيل يمكنك طلب المساعدة باستخدام التعليمة ?mtcars). سنستخدم هذه البيانات في استعراض مجموعة من الأمثلة حول ما سيتلو ذكره من دوال وتقنيات إحصائية. بمجرد استيراد بياناتك يمكنك الوصول إلى القيم الموجودة في أي من أعمدة جدولك باستخدام الصيغة mtcars$mpg على سبيل المثال حيث mpg يشير إلى اسم العمود، أما إن أردت أسلوبا أكثر سهولة واختصارا يقتصر على ذكر اسم العمود فقط دون الحاجة إلى ذكر اسم إطار البيانات المأخوذ منه في كل مرة، فعليك بداية استخدام الأمر (attach(mtcars عقب استيرادك للبيانات، وحينها يكفي ذكر الاسم mpg للدلالة على ذات العمود من البيانات. وتستطيع استعراض ما تحويه ذاكرة الجلسة الحالية من بيانات في لغة R باستخدام الأمر ()ls ، إضافة إلى ذلك يمكنك حذف أي من كتل البيانات تلك من ذاكرة الجلسة الحالية باستخدام الأمر (rm(x حيث يشير الرمز x إلى اسم كتلة البيانات سواء كانت عمود (أي شعاع من القيم) أو مصفوفة أو إطار بيانات كامل، حتى أنك تستطيع حذف كل ما يوجد الآن في ذاكرة الجلسة الحالية من بيانات سبق وأن تم تحميلها وذلك باستخدام الأمر (()rm(list=ls. عند قيامك بتحميل بياناتك إلى ذاكرة الجلسة الحالية، تصبح مستعدا للبدء في العمل عليها لتطبيق تحليلاتك المختلفة. ومن الأوامر الأساسية المتاحة نذكر على سبيل المثال الدالة (max(mpg والتي تعيد القيمة العظمى ضمن العمود mpg (أي شعاع القيم mpg)، أما الدالة (min(mpg فهي على عكس سابقتها تعيد القيمة الصغرى، في حين أن الدالة (mean(mpg تعيد المتوسط الحسابي للقيم الواردة في mpg، والدالة (median(mpg تعيد قيمة الوسيط (الوسيط هو القيمة التي تقع في المنتصف عند ترتيب قيم mpg تصاعديا، وبالتالي تكون نصف قيم mpg تزيد عن قيمة هذا الوسيط فيما النصف الآخر يقل عنها، وعادة ما يستخدم الوسيط للدلالة على مركز المجموعة حينما تكون هناك قيم متطرفة زيادة أو نقصانا بحيث تؤثر على المتوسط الحسابي وتؤدي إلى انحيازه). من جهة أخرى هناك دوال تستخدم لوصف مدى تشتت قراءات وقيم mpg حول النقطة المركزية الممثلة بالمتوسط، ومنها الدالة (var(mpg والتي تحسب مقدار التباين، والدالة (sd(mpg والتي تعيد قيمة الانحراف المعياري. يحسب التباين من خلال العلاقة التالية أي أننا نراكم مجموع فروقات كل واحدة من قراءاتنا عن قيمة المتوسط بعد أن نربّع هذا الفرق، حيث تخدم عملية التربيع في جعل الناتج موجبا دوما (كون الأخطاء أو الفروقات موجودة سواء كانت بالزيادة أو النقصان، وإن لم نفعل ذلك لحصلنا دوما على الناتج 0 كمحصلة لعملية الجمع تلك)، الخدمة الثانية التي نحصل عليها من هذا التربيع هي تقليل أثر الفروقات الصغيرة على حساب تعظيم ومضاعفة تأثير الفروقات الكبيرة (فتربيع الأرقام الصغيرة لايضاعفها بقدر ما يفعل مع الأرقام الكبيرة، ولولا ذلك لاكتفينا بالقيمة المطلقة للفروقات المحسوبة عن المتوسط عند حساب مقدار التباين). من جهة ثانية فإن الانحراف المعياري يقوم بتقييس معيار التباين وذلك للتعبير عن التشتت بصيغة مستقلة عن عدد العينات أو القراءات التي لدينا (والتي تؤثر على قيمة التباين كونه حساب تراكمي يزداد بازدياد عدد القراءات)، وتتم عملية التقييس تلك من خلال تقسيم مقدار التباين الناتج على (n-1) وهو عدد العينات منقوصا منه واحد، وبعد عملية القسمة تلك نحسب الجذر التربيعي الناتج وذلك حتى يعود المقدار المحسوب إلى ذات فضاء القيم الموجودة لدينا بدلا من كونه في حالة التباين من مرتبة مربّع تلك الأرقام، فيعود من السهل علينا مقارنته مباشرة مع قيمنا أو المتوسط الخاص بتلك القيم. أما الدالة (summary(mpg فهي عامة الاستخدام ويختلف سلوكها وخرجها بحسب الكائن الممرر إليها، ففي حالة تمرير شعاع من القيم العددية فسيكون ناتج تنفيذها هو ملخص لتلك القيم والذي يشمل كل من المتوسط والوسيط إضافة إلى القيمتين العظمى والصغرى والربعين الأول والثالث (ويعرفان بشكل مشابه للوسيط، إذ يشير الربع الأول إلى القيمة التي تقل عنها ربع قراءاتك بعد ترتيبها تصاعديا، فيما الربع الثالث كما هو واضح من اسمه فهو القيمة التي تقل عنها ثلاثة أرباع قيم mpg المرتبة تصاعديا، وهما قيمتان تساعدان في فهم كيفية توزع بياناتك). كذلك تمتلك لغة R مجموعة واسعة من الدوال الرياضياتية مثل (abs(x والتي تعيد القيمة المطلقة (الإيجابية الإشارة دوما) للقيمة أو شعاع القيم المدخل لها، والدالة (sqrt(x التي تحسب الجذر التربيعي والتي نستطيع الحصول على نفس وظيفتها من خلال عملية الرفع إلى أس مقداره نصف أي x^0.5 ، كذلك لدينا الدوال المثلثية المختلفة مثل (sin(x و (cos(x وغيرهما، هذا بالإضافة إلى طيف من دوال التقريب المختلفة مثل (floor(2.718 والتي ستعيد القيمة 2 كأكبر عدد صحيح أصغر من القيمة المعطاة، وكذلك الدالة (ceiling(3.142 والتي ستعيد القيمة 4 كأصغر عدد صحيح أكبر من القيمة المعطاة، أما الدالة (round(2.718, digits=2 فستعيد القيمة 2.72 حيث تقوم هذه الدالة بعملية التقريب الحسابية المعتادة مع إمكانية تحديد عدد الخانات العشرية بعد الفاصلة والتي تريد الاحتفاظ بها. لدينا أيضا دوال التحويل مثل (log(x التي تحسب اللوغاريتم الطبيعي للمقدار x، فيما تحسب الدالة (log10(x اللوغاريتم العشري لذات المقدار x، مع هذا يمكنك استخدام الصيغة الأكثر مرونة وهي (log(x,n والتي تحسب اللوغاريتم لأي أساس يحدده المبرمج من خلال المقدار n، فمثلا يمكنك حساب اللوغاريتم الثنائي للمقدار x باستخدام التعليمة (log(x,2. هذه هي نهاية الجزء الأول من سلسلة المقالات التي تتحدث عن لغة R، سنتحدث في الجزء الثاني عن المخططات البيانية الإحصائية. لائحة المراجع: http://www.r-project.orghttp://www.statmethods.nethttp://www.r-tutor.com1 نقطة
-
غالبًا ما لا يلقي أصحاب المنتجات بالًا للرسائل الإلكترونية الخاصة بتحديثات المنتج Product updates الذي يقدّمونه للمستخدمين، ولكن يجدر بهم أن لا يفعلوا ذلك، وسنتعرف إلى السبب في هذا المقال. قبل بضعة أسابيع، أطلقنا ميزة جديدة في منتجنا، وهي "تاريخ تذاكر الدعم" Support ticket history، وقد حصلت هذه الميزة على الكثير من الثناء، ونالت استحسان العملاء بشكل كبير، ولكن لم تكن الميزة بحد ذاتها سببًا في كلّ ذلك. السبب هو الخطّة التي نتّبعها في إطلاق الميزات الجديدة، وهي خطّة بسيطة قد بدأنا العمل بها منذ عدة سنوات، ويمكن لأي شركة أن تتّبعها بحذافيرها باستخدام بعض الأدوات المجّانية وقليل من التنظيم. يعدّ إطلاق الميّزات الجديدة للمنتجات التي تقدّمها الشركة فرصة كبيرة تبيّن الشركة من خلالها أنّها تستمع إلى عملائها وتصغي إليهم، ولكن مع الأسف الشديد فإنّ الكثير من المشاريع التجارية تغفل عن هذا الأمر ولا تلقي له بالًا. إن إرسال الرسائل الإلكترونية المتعلّقة بتحديثات المنتج بشكل فعّال هي مهمّة سهلة لو قارنا ذلك بالجهد المبذول في بناء الميّزات الجديدة في حد ذاتها. خطتنا السابقة في الإعلان عن الميزات الجديدة قبل عدّة سنوات، لم يكن الأسلوب الذي نتّبعه في الإعلان عن الميّزات الجديدة لمنتجاتنا فعّالًا، حتى أنّه لا يستحقّ أن نطلق عليه اسم "خطّة". كنا نباشر بإطلاق الميزة الجديدة، ثم نرسل إلى جميع العملاء رسالة إلكترونية نعلمهم فيها بإطلاق تلك الميزة، هذا إن كنا نعتقد بأنّها مهمّة بالنسبة لهم. فيما يلي ترجمة الرسالة: بعد مدة من الزمن، بدأنا بتجربة التنبيهات داخل التطبيق In-app notification باستخدام Intercom، وهو ما نال قدرًا من الاستحسان لدى العملاء، ولكنّ لم يكن لاستخدامه أثر كبير أو ملموس. كان العملاء يتجاهلون هذه الرسائل الإلكترونية بشكل كبير، وكان معدل فتح هذه الرسائل يتراوح بين 10 و 20%. بعد عدة سنوات أجرينا عددًا من التحديثات على خصائص قاعدة المعرفة الخاصّة بنا، وحينها أدركنا أنّنا لم نمنح هذه الرسائل الكثير من الاهتمام، وأنّه قد يكون بالإمكان تحقيق الفائدة منها، بدلًا من التعامل معها على أنّها من الأمور غير المهمّة والجانبية. اختبار خطة بسيطة بعد إجراء الكثير من التجارب (تغيير أسلوب كتابة الرسائل، تغيير عنوان الرسالة، اختبار الوقت الأمثل لإرسال الرسائل، نشر المقالات في المدونة) تبيّن لنا أنّ هناك أسلوبًا واحدًا فقط يعطي نتائج تختلف عن بقية الأساليب إلى حدّ بعيد. ويتلخّص هذا الأسلوب في جعل تجربة المستخدم أكثر خصوصية. نحن نقدّر كثيرًا أهمية التواصل الشخصي مع عملائنا، وهذا هو السبب الذي يدفعني إلى قضاء العشرات بل وربما المئات من الساعات في الحديث مع مستخدمي Groove والتفاعل معهم. وليس هدفي من ذلك كله هو جمع المعلومات المهمّة من أجل مشروعنا التجاري، بل هدفي هو بناء علاقة وطيدة مع العملاء، وأن يشعروا بأنّ أفكارهم وآرائهم تلقى آذانًا صاغية. وقد تبيّن لنا فيما بعد أن هذا الأسلوب يعمل بشكل ممتاز أيضًا عندما نعلن عن إطلاق ميزة جديدة في منتجاتنا. ويمكن تلخيص الأسلوب الذي اتّبعناه بما يلي: عادة ما نتلقى الكثير من الطلبات بخصوص إضافة مزايا وخصائص متعددة إلى منتجاتنا. وبعد أن نردّ على صاحب الطلب، نبدأ بتسجيل كل ميزة مطلوبة في بطاقة من بطاقات Trello: وعندما يرسل إلينا أحد الأشخاص طلبًا لميزة كان قد طلبها قبله أشخاص آخرون، فإننا نضيف رابطًا إلى تذكرة الدعم الفني الخاصّة بذلك العميل إلى بطاقة Trello التي تتضمّن تلك الميزة. يتيح لنا هذا النظام البسيط تتبّع طلبات الخصائص والميزات الجديدة في مكان واحد، ويقدّم إلينا قائمة بالعملاء الذين طلبوا إضافة ميزات جديدة. وهكذا، بعد أن نطلق ميزة جديدة في تطبيقنا، نرسل رسالة ضمن التطبيق نفسه إلى العملاء، ونكتب مقالًا حول تلك الميزة على مدوّنة الموقع، ونرسل كذلك رسالة إلى كل عميل كان قد طلب هذه الميزة في السابق. وقد كان العملاء سعداء جدًّا عند الاطلاع على هذه الرسائل. النتائج تظهر الصور السابقة تجربتنا الأولى للخطّة الجديدة، ومنذ ذلك الحين فإنّا نستخدم هذا الأسلوب كلّما أطلقنا ميزة جديدة في منتجنا، وفي كل مرّة تكون النتائج مبهرة. وعندما أطلقنا مؤخّرًا ميزة تاريخ التذاكر استخدمنا هذه الطريقة للإعلان عنها، فذكّرتني النتائج بالقوة التي تتمتع بها هذه الرسائل الإلكترونية التي يتم إرسالها بعد إطلاق الميزة الجديدة. إليك بعض الأمثلة من بين عشرات الردود التي وردتنا عند إطلاق الميزة الجديدة: لقد كانت هذه الرسائل الإلكترونية سببًا في عودة عدد من العملاء السابقين الذي توقفوا عن استخدام Groove لعدم توفّر الميزة التي كانت يبحثون عنها. أما معدّل فتح الرسائل السابق (10%) فقد تغيّر وبشكل كبير، ومع أننا نعلم جيّدًا بأن الرسائل الشخصية تحصل على معدّل استجابة مرتفع، إلا أن مدى ارتفاع معدّل الاستجابة هذا كان مفاجئًا بالنسبة لنا، فعند إطلاق الميزة الأخيرة، وصل معدّل الاستجابة إلى 68%. نعم، معدّل الاستجابة، وليس معدّل الفتح. أي أن 68% من الأشخاص الذي وردتهم تلك الرسائل الإلكترونية، قضوا بعض الوقت في الإجابة عليها، مع أنّها لم تتضمن أي دعوة إلى الإجراء. وهنا تكمن قوّة هذه الرسائل الشخصية. كيف تطبق هذه الخطة في مشروعك التجاري في الواقع، يتطلّب تطبيق هذه الخطّة البسيطة شيئًا واحدًا فقط، وهو مكان يمكنك أن تجمع فيه تذاكر الدعم أو الرسائل الإلكترونية الخاصّة بطلبات الميزات الجديدة. نحن نستخدم Trello للقيام بذلك، ولكن يمكن استخدام أي برنامج لإدارة المشاريع، بل يمكن لأي أداة بسيطة لتسجيل الملاحظات مثل SimpleNote أن تكون كافية للقيام بذلك. والآن، بعد أن تطلق ميزة جديدة أو تجري تحديثًا كبيرًا للمنتج الذي تقدّمه، يمكنك الرجوع إلى قائمة التذاكر أو الرسائل الإلكترونية التي قمت بإنشائها ومراسلة الأشخاص الذين طلبوا تلك الميزة وإعلامهم بها. ولتسهيل عملية إرسال الرسائل إلى العملاء فإنّنا نستخدم ردودًا مشتركة Common replies، ندرجها في كل رسالة إلكترونية، ثم نقوم بتعديل ما يلزم وإضافة المعلومات الشخصية الخاصّة بكل مستخدم. ولا تستغرق هذه العملية الكثير من الوقت، فقد يستغرق الرد على مئات الطلبات على ميزة معيّنة بضع ساعات من العمل فقط. وفي الواقع، فإنّ النتيجة تستحقّ كل هذا العناء، فقد ساهم جعل الأمور أكثر خصوصيّة بالنسبة للعملاء في حصول منتجنا على تغذية راجعة لا تقدّر بثمن، إضافة إلى بناء علاقة وطيدة مع العملاء، بل وحتى استعادة عدد من الأشخاص الذين كانوا قد تركوا Groove في السابق. آمل أن يكون ما سبق كافيًا لإقناعك بتجربة هذه الخطّة في مشروعك التجاري، فقد كانت مفيدة جدًّا بالنسبة إلينا، وأعتقد بأنّها ستكون كذلك بالنسبة إليك أنت أيضًا. ترجمة -وبتصرّف- للمقال How Our Product Update Emails Get a 68% Response Rate لصاحبه Alex Turnbull.1 نقطة
-
قسم النظم و الحاسبات يُركّز على استخدام الحاسبات الآلية في المجالات المختلفة سواء التحكم الآلي أو التطبيقات المختلفة، ويتضمن دراسة للصيانة والبرمجة والشبكات والاتصالات إلخ وتُعتبر الرياضايات مادّة أساسية فيه، ويشبه بذلك قسم الكرباء شعبة الإتصالات، إلا أن مهندس النظم يهتم بالسوفتير أكثر من مهندس الإتصالات. هندسة البرمجيات هي فرع من علوم الحاسب. للمزيد انظر هنا1 نقطة
-
إتفضل .. https://play.google.com/store/apps/details?id=com.hundred.qibla&hl=ar1 نقطة
-
جزاك الله خير ، اخوي سعيد وبيض الله وجهك ماقصرت اخوي ، والمعذره على التأخير شكرآ لك من القلب ،1 نقطة
-
لما الاحراج يا أخي الشيء الذي نقدر عليه دائما لا نبخل به والحمد لله هلى حل المشكل1 نقطة
-
أصدقائي:@alilodzو @أسامة عرب، الحمدلله تم حل المشكلة بالدخول للسيف مود وحذف الدرايفر ثم تنزيله تثبيته من خلال موقع لينوفو (موقع الشركة المُصنِّعة للجهاز)، وذلك بعد تكرار الأمر حوالي 5 أو 6 مرات. شكراً لكم كثيراً لإهتمامكم، وأعتذر إن تسببت بأي إحراج/إزعاج. تحياتي.1 نقطة
-
لكل فن وعلم بدايات، وخير البدايات الأصول، وهي القواعد الأساسية التي تبنى عليها بقية المفاهيم. أولا وقبل البدء أقترح عليك كتاب رائع في هذا المجال 1- هو Digital Image Processing يعطي هذا الكتاب أغلب المواضيع الأساسية المتعلقة بمعالجة الصور 2- أفضل وسيلة لترسيخ الفهم هي التطبيق، وهي في هذا المقام البرمجة وسأذكر لك أفضل لغتين برمجة في هذا المجال هما ماتلاب MATLAB وبايثون Python ما يميز هاتين اللغتين البساطة وسرعة التعلم وكتابة الأكواد لكن اذا كنت تريد ان تجرب بعض الخوارزميات المعروفة في معالجة الصور بدون أي برمجة تستطيع أن تنزل البرنامج التالي "مفتوح المصدر" http://imagej.net/Welcome ومن أفضل البرامج في هذا المجال matlab , imagemagick أما تطبيقات الاندرويد opencv بدون منازع1 نقطة
-
هناك قاعدة في علم قواعد البيانات تقول : لا تخزن أي بيانات يمكن حسابها ولكنها ليست شرطاً في حالة برنامجك فليس معنى أن لديك 3 مليون سجل أنك ستقوم بقرائتها كلها بأمر واحد بالتأكيد هناك حدود للعمليات التي ستقوم بها على البيانات1 نقطة
-
يبدو العملاء السلبيون -على أقل تقدير- مجرد أشخاص مزعجين، أما على أسوأ تقدير فقد يجعلوك ترغب في الصراخ. وعليه فإن معرفة كيفية التعامل معهم (على أمل تجنبهم) هو جزء من نموك كمستقل. وعلى الرّغم من أن مواجهة هذه الشّريحة من العُملاء يدخل في إطار عملنا كمستقلين إلا أننا لا نمنح أنفسنا الوقت الكافي للتعمق في هذه الظاهرة. من هم العملاء السلبيون وما هي العلامات التي تميزهم؟ هل تكون قوى الظلام في الكون قد أرسلتهم سرًا لتنغيص حياتنا وتخريب خططنا كمستقلين؟ وهل من الضروري التعامل معهم خلال رحلتنا لجذب العملاء؟ دعنا نعرف المزيد عن هذا الموضوع وكيف يمكنك التعامل معهم دون أن تشعر أنه تتم معاملتك بطريقة سيئة. من هم العملاء السلبيون؟ إن الزبون الذي يستحق لقب العميل السّلبي (أو العميل غير الفعال) هو الذي يبدي اهتمامًا كبيرًا بشراء المنتج أو الخدمة، ولكن دائمًا لديه سبب لعدم اتخاذ قرار الشراء. على سبيل المثال أنا أطلق هذا اللقب على العملاء المحتملين الذين يطاردوني على الإنترنت، يمكنني تقريبا سماع أنفاسهم اللاهثة من خلال شاشة حاسبي وهم يتوسلون لي حتى أبدأ في محادثتهم، لكن عندما يحين الوقت للتفاوض على أجري فإنهم إما: يختفون فجأة. ينتحبون من أجل تخفيض السعر. يدخلون في عملية تأمل وتفكير لا تنتهي. لا شيء مما سبق سيقودني إلى تحقيق دخل أو الحصول على عمل فعلي، يهدر هؤلاء العملاء السلبيون وقتي وطاقتي الشخصية ومصادري الاحترافية إضافة إلى أنه يمكنني استثمار هذا الوقت المهدور في متابعة عملاء محتملين أو مشاريع بديلة. هل حدث معك شيء من هذا سابقًا؟ هل شعرت من قبل أنك مغفل لاعتقادك بأن هذا العميل السلبي كان يفكرّ في توظيفك بشكل جدي. هل شعرت من قبل بأن البساط سُحِبَ من تحت قدميك؟ وهل ترغب في معرفة كيفية تجنب مواجهة هذه المشاعر مرة أخرى؟ لماذا يعذبنا هؤلاء؟ حسنًا، هناك سر صغير: هذا صحيح، فعلى الأرجح لا يفكر العملاء غير الفعالين في البائع مطلقًا، فهم لديهم جداول أعمالهم الخاصة، وهناك العديد من الصفات المميزة لتصرفات العملاء غير الفعالين، فهم إما.. مشترون حسب السعر: يبحث هؤلاء ببساطة عن أرخص سعر ممكن، وذلك إما لأنهم بخلاء أو ميزانيتهم محدودة جدًا. مشترون لا يقدّرون قيمة الخدمة: انهم مستاؤون لاضطرارهم دفع المال مقابل منتجاتنا وخدماتنا، ويفضلون القيام بالعمل بأنفسهم بدلًا منا، لكنهم أذكياء كفاية لمعرفة أنهم غير مؤهلين للقيام بالعمل بأنفسهم (أو ليس لديهم الوقت لذلك). مشترون جاهلون: إنهم في الحقيقية لا يعرفون كم يجب أن ينفقوا عندما يطلبون منا تحديد السعر، أو أنهم بصراحة متخبطون في قراراتهم، إنهم لا يعرفون ماذا يريدون وخائفون للغاية من اتخاذ القرار الخاطئ لذا يصبحون عاجزين عن الاختيار. لكن أسوأ ما في النوع الأخير أنهم يميلون إلى إلقاء اللوم علينا بسبب افتقارهم القدرة على اتخاذ القرار. كم مرة بذلت كل ما في وسعك وأنت تحاول إثبات أنك الشخص المناسب لاحتياجاتهم ولكن دون جدوى؟ ما هو تأثيرهم على أعمالنا كمستقلين؟ هل بذلنا جهدًا كبيرًا في محاولة عقد صفقة مع هؤلاء العملاء غير الفعالين؟ حسنًا لكننا في نهاية المطاف لم ننفق أموالًا (غالبًا) للاستمتاع بطلباتهم عديمة المعنى، صحيح؟ في الحقيقة على الرغم من أننا لم نخسر أموالًا (إلا إذا كنت قد استثمرت في حملة بريدية)، ولكننا أيضًا لم نحقق مداخيل ويمكن أن نكون قد خسرنا المال بطرق أخرى منها: إعطائهم وقت استشارة مجاني يسمح لهم بسرقة أفكارنا. الفشل في وضع قيمة مالية لوقت الاستشارة، فهناك العديد من الناس المستعدون لدفع أجر مُقابل الاستشارة، حيث يمكن أن يشكل الدفع مقابل الساعة مصدر دخل متجدد لنشاطك كمُستقل. عدم استثمار الوقت في أشياء أخرى تؤدي إلى توليد الدخل. إرسال وسائط تسويق رقمية أو مادية إلى عملاء غير مهتمين. بالإضافة إلى أن الوقت المهدور له تأثير سلبي (وتأثير سام أحيانًا) على تقديرنا لأنفسنا كمستقلين ومقدمي خدمات. إن التخلص من هؤلاء العملاء يتطلب الكثير من الثقة والشجاعة، وفي حال كان لديك موظفون ومتعاقدون عندئذٍ يجب أن يكون لديك قدر أكبر من الثقة والقوة. هل نحتاج حقا إلى مسايرتهم؟ دعنا نتحدث عن فكرة سائدة في عالم الأعمال التجارية، لا سيما في البلدان التي تولي أهمية كبيرة لتقديم خدمة عملاء ممتازة بغض النظر عن التكاليف (مثل الولايات المتحدة). الفكرة السائدة هي أنه يجب أن يرحب البائع بكل الأسئلة، حتى بعد أن يظهر جليًا أن العميل غير مهتم بما نقدمه له. سيتساءل بعض القراء فيما إذا كانوا سيخلقون سمعة سيئة لأنفسهم (أو لعلامتهم التجارية) في حال تبنوا سياسة صارمة وتوقفوا عن التعامل مع العملاء غير الفعالين. الإجابة هي: يصبر العديد من البائعين على العملاء المحتملين السيئين بسبب الخوف، في حين أنهم يجب أن يخافوا على الفرص والوقت المهدور. إنه ليس خطأك إذا كان العميل المحتمل السيئ لا يلائمك، وليس ذنبك بالتأكيد إذا كان مفلسًا أو متردّدًا. لذا توقف عن تحميل نفسك المسؤولية حيال العملاء المحتملين السيئين الذين لا يتحوّلون إلى زبائن في نهاية المطاف. ولا تقلق ﻷنهم سيجدون بائع آخر يتعلقون به ويهدرون وقته بينما تكون أنت قد انتقلت للتعامل مع عملاء محتملين يقدرون وقتك وما تعرضه عليهم. كيف تخرجهم من قمع مبيعاتك (أو تجنب السماح لهم بدخوله) اقتبس Perry Marshal مقالة من كتابه "قاعدة 20/80 في المبيعات والتسويق" والتي نشرت مؤخرًا في مجلة Entrepreneur. تعدد هذه المقالة 5 طرق لتشخيص الصفات التي يجب أن تكون موجودة في العميل قبل إجراء عملية البيع. من خلال تعلم كيفية تشخيص العملاء ستصبح معتادًا غالبًا على الانتباه إلى الإشارات التي تخبرك فيما إذا كان العميل جاهزًا أو غير مستعد بعد لعملية الشراء. لكن في حال إذا لم تستطع التقاط أي إشارات مهمة لتشخيص العميل ووجدت نفسك متورطًا مع أحد مهدري الوقت يمكنك حينها اتباع نموذج رجل المبيعات Dennis Kucinski الذي وجد طريقة للتّخلص من أحد العملاء الذي أهدر وقته. حيث سأل هذا العميل الذي ظل يُحاول إقناعه لمدة 5 سنوات كاملة: حيث أنه -وبعد مُضي خمس سنوات كاملة- قرّر ‘دنيس’ أن الزّبون إما هو جاهز للشراء أو أنه لن يقرر الشّراء أبدًا بطبيعية الحال، لا يُفترض بك الانتظار ومُحاولة إقناع الزّبون المُحتمل طيلة 5 سنوات وبرأيي الشخصي لا يجب أن تسمح لفترة النّقاش مع العميل المُحتمل أن تتجاوز 5 أسابيع. لكن بغض النظر عن المدة التي ستحاول فيها إرضاء العميل المُحتمل، عليك أن تعرف بأنك مدين لنفسك ولنشاطك التجاري (وكذلك لموظفيك والمتعهدين) بالتوقف عن التعامل مع العملاء السلبيين. عليك معرفة أن ما يفعله العملاء السلبيون هو معاملة البائع بشكل سيء، لا تأخذ الأمر بشكل شخصي ولكن أيضًا لا تدعهم يتلاعبون بك. ترجمة وبتصرف للمقال Tire Kickers: How To Diagnose These Time And Soul Suckers لصاحبته Terri Scott.1 نقطة
-
تعد لغة R من اللغات التي صعد نجمها حديثا وبشكل سريع بمجال البرمجة العلمية في قطاعي الإحصاء والمعلوماتية الحيوية (bioinformatics) حيث باتت معتمدة على نطاق واسع في كثير من الجامعات ومراكز البحث العلمية، وأصبحنا نرى استخدامها والإشارة إليها في المقالات المنشورة بالمجلات العلمية المحكّمة يزداد بشكل طردي ومتسارع، هذا عدى عن حقيقة كونها لغة حرة مفتوحة المصدر يخضع توزيعها لترخيص GPL الشهير. كل ذلك أدى إلى تزايد ما هو متوفر ومتاح على الشابكة (الإنترنت) من مصادر لها على توزع طيف تلك المصادر، فهناك الكتب الإلكترونية والدروس التعليمية وحتى المناهج الأكاديمية والدورات التدريبية إضافة إلى البرامج الجاهزة والمكتوبة بلغة R لتنفيذ هذه المهمة أو تلك، حتى أنها باتت تحظى ببعض الامتياز مقارنة بالعديد من العمالقة في قطاع البرمجة الرياضياتية العلمية والإحصائية مثل SAS و SPSS خصوصا في مجال توافر الجديد من الطرق والخوارزميات الحديثة، حيث يقاد هذا التوجه في معظمه من طرف الجامعات ممثلة بطلاب الدراسات العليا يحفّزهم على ذلك سهولة بناء الإضافات لهذه اللغة، ويعتبر هذا الأسلوب رغم ما قد يشوبه من نقاط ضعف تتعلق بموثوقية وجودة وغزارة تلك الإضافات الجديدة، والتي تتبع خبرة ومهارة مطوريها وناشريها، لكنها تبقى في القطاع العلمي والأكاديمي أفضل كثيرا من البدائل التجارية التي يعيبها ارتفاع ثمنها من جهة، ومن جهة أخرى بطئ إضافة التحديثات التي تعكس تطور القطاعات العلمية المختلفة، حيث أنها عادة ما تتبع دورة تجارية تتحكم بها الشركات المنتجة. سنحاول في هذه المقالة أن نقدم مدخلا مبسطا ومختصرا لأساسيات هذه اللغة ونستكشف بعضا من إمكانياتها واستخداماتها، والتي أتمنى أن أراها تدرّس في جامعاتنا يوما ما، بحيث تستخدم كأداة للاختبار والتجربة والتطوير ضمن الجلسات العملية لبعض المقررات العلمية في الكليات ذات الاختصاص. هذا هو الجزء الثاني في سلسة مؤلفة من أربع مقالات تهدف إلى التعريف بلغة R حيث قدم الجزء الأول مدخل عام إلى هذه اللغة بما فيها الإحصائيات الوصفية، أما الجزء الثالث فسيتحدث عن كيفية إجراء بعض الاختبارات الإحصائية بلغة R، فيما نختم السلسلة بجزء رابع يتحدث عن بعض التقنيات المتقدمة في هذه اللغة. للتذكير فقط، تستطيع أن تقوم بتحميل لغة R من الموقع الرسمي لها على الرابط http://www.r-project.org، وعملية تنصيب هذه اللغة تخلو من التعقيدات وبانتهاءها يمكنك تشغيل سطر الأوامر الخاص بها من خلال النقر على أيقونة اللغة على سطح المكتبة، وكل مانكتبه تاليا يكون داخل سطر الأوامر هذا، علما أننا نستخدم في كل أمثلتنا إطار البيانات المدعو mtcars والذي يأتي محزوما مع اللغة بشكل إفتراضي، وللحصول على معلومات إضافية عن طبيعة محتوى هذه البيانات يمكنك كتابة الأمر التالي في سطر الأوامر mtcars? ولاختصار طريقة الوصول إلى المعلومات ضمن إطار البيانات ننفذ الأمر (attach(mtcars فنصبح قادرين على استخدام التسمية mpg بدلا من استخدام الطريقة المفصلة mtcars$mpg للدلالة على عدد الأميال المقطوعة بغالون البنزين الواحد. تبدأ أول خطوة من أي تحليل إحصائي باستكشاف ما لدينا من بيانات وذلك من خلال إلقاء نظرة سريعة على بعض المخططات البيانية والرسوم التوضيحية ذات الصبغة الإحصائية والتي عليها أن تقوم بتنفيذ تلك المهمة على أتم وجه، وسنمر في مقالتنا هذه على مجموعة من أهم وأشهر تلك المخططات البيانية الإحصائية محاولين تقديم شرح مختصر عن كل منها يصف طريقة توليده ويوضح ما يتم عرضه وطبيعة الفائدة منه. لدى لغة R تعليمة بسيطة بالصيغة لكنها في ذات الوقت تقدم خدمة عظيمة في إطار عرض ما لدينا من بيانات وتوضيح ما فيها من علاقات محتملة، تدعى هذه التعليمة pairs وتقبل كدخل لها إسم إطار البيانات الذي لدينا كاملا، لتقوم بعدها برسم مصفوفة من المخططات البيانية لكل زوج ممكن من هذه البيانات على شكل مخطط مبعثر (scatter plot) بحيث يظهر كل زوج في مخططين بيانيين يتبادلان فيه مكان التمثيل على المحورين x و y، يظهر الشكل التالي مثالا عن ناتج تنفيذ هذه التعليمة عند تطبيقها على إطار mtcars للبيانات: pairs(mtcars); هنالك ملاحظة أود ذكرها طالما أننا نتحدث عن الرسوم البيانية، فمعشر الإحصائيين لا يفضلون استخدام مخطط القطاعات الدائرية على عكس ما هو شائع في عالم المال والأعمال، ويفضلون بديلا عنها الخطوط البيانية أو حتى التمثيل بالأعمدة وذلك لأن الناس يستطيعون الحكم على الأطوال بشكل أكثر دقة من الأحجام، خصوصا عندما تكون القيم متقاربة. أما لرسم مخطط مبعثر (scatter) بين أي عمودين من البيانات نستطيع استخدام الدالة plot العامة الأغراض، فمثلا (plot(wt, mpg والتي يمكن كتابتها أيضا بالصيغة (plot(mpg~wt حيث سيمثل وزن السيارات بقيم wt على محور x فيما المسافة المقطوعة بغالون البنزين الواحد والتي تعطى بقيم mpg ستمثل على المحور y ليظهر لدينا المخطط البياني كما هو موضح في الشكل التالي: في بعض الأحيان قد لا يكون هذا النوع من المخططات البيانية هو الطريقة الأمثل لعرض ما لدينا من معلومات، خصوصا عندما تكون بيانات أحد طرفي العلاقة عبارة عن قيم محددة بعينها وليست قراءات تتوزع على طيف المحور المسندة إليه كما في حالة المخطط البياني الذي تولده التعليمة (plot(cyl, mpg حيث cyl تمثل عدد إسطوانات المحرك، حينها سيكون الشكل الناتج غريبا قليلا وأقل فائدة في التعبير عن ما يربط بين المقادير المرسومة كما هو موضح أدناه: لحسن الحظ فإن سلوك الدالة plot يتعدل بشكل آلي تبعا لطبيعة ونوع البيانات التي تمرر إليها، وما سنقوم به الآن هو تحويل نوع cyl إلى معاملة وذلك باستخدام الأمر (cyl <- factor(cyl، بمعنى أن لهذا المقدار قيم محددة لايستطيع أن يأخذ غيرها، وسنلاحظ طبيعة هذا التغير في طريقة تعامل توابع لغة R المختلفة مع هذا المقدار الجديد بعد تغيير توصيفه (يمكن لك أن تجرب معه الدالة summary لترى أن ماتحصل عليه من ناتج يختلف عما سبق وأن رأيت، فعوضا عن القيمة الصغرى والعظمى والمتوسط والوسيط الخ... وهي المقادير التي توصف بها عادة أي مجموعة قيم عددية، أصبحنا نرى الآن عدد القيم المحددة التي يمتلكها هذا المعامل مقدار تكرار ظهور كل من تلك القيم). ليس هذا فحسب بل إن سلوك الدالة plot سوف يتغير كذلك، فإن حاولت الآن إعادة تنفيذ ذات الأمر السابق (plot(cyl, mpg فسوف تحصل على المخطط البياني التالي: وما يظهر لنا في هذا الشكل هو مجموعة من المخططات الصندوقية لكل قيمة أو مستوى من عدد إسطوانات المحرك في cyl (سنأتي بعد قليل على شرح هذا النوع من المخططات الصندوقية بشيء من التفصيل، فقليلا من الصبر إن كنت غير عارف بها). هناك مخطط بياني آخر ذي طبيعة استخدام إحصائية موجود في جعبتنا ألا وهو المدرج التكراري (Histogram)، وهو يبين طبيعة توزع ما لدينا من قيم على المجال المحصور ما بين الحد الأدنى والأقصى، ففي بعض الأحيان لا يكون تلخيص البيانات بمساعدة الحد الأدنى والأقصى والمتوسط كافيا، حينها نلجأ إلى هذا المخطط البياني والذي يقسم فيه المجال الكلي ما بين الحد الأدنى والحد الأقصى إلى فئات أو مجموعات، ومن ثم نرسم أعمدة بيانية توضح عدد مرات تكرار ظهور القيم ضمن كل واحدة من هذه الفئات أو المجموعات. فعلى سبيل المثال تستطيع تجربة الأمر التالي ("hist(qsec, col="gray لتوضيح توزع معدل التسارع بين السيارات المدروسة حيث تشير القيم في qsec إلى الزمن اللازم لقطع مسافة ربع ميل مقاسا بالثواني، لاحظ أننا اخترنا اللون الرمادي الذي سترسم به الأعمدة وذلك من خلال تحديد قيمة الوسيط col. لدينا نوع آخر من المخططات البيانية ذات الصبغة الإحصائية متاح لنا وهو المخطط الصندوقي آنف الذكر، ويمكن طلب عرض بياناتنا من خلاله باستخدام الدالة ("boxplot(qsec, col="gray حيث سنحصل بالنتيجة على الشكل التالي: حيث يوضح الخطين الأفقيين على طرفي الرسم في الأعلى والأسفل كل من القيمة الصغرى (في الأسفل) والعظمى (في الأعلى)، أما الصندوق الموجود بينهما فتوضح بدايته من الأسفل ما ندعوه بحد الربع الأول (وهو ما كان يظهر ضمن خرج الدالة summary تحت التسمية Q1)، وبالتالي يكون المجال المحدد ما بين القيمة الصغرى وطرف هذا الصندوق يتضمن ربع ما لدينا من قيم، أما المجال المحدد ما بين طرفي الصندوق الأسفل والأعلى فيتضمن بالضبط نصف ما لدينا من قيم حيث أن الحد الأعلى للصندوق هو الربع الثالث أي Q3، أما الخط الذي يقطع ذلك الصندوق بالعرض فهو الوسيط (وليس المتوسط الحسابي)، وهو يدل على الحد الذي يقسم كتلة البيانات التي لدينا إلى مجموعتين متساويتين في العدد إحداهما تتضمن القيم التي تعلو خط الوسيط والأخرى فيها القيم التي تقع أسفل خط هذا الوسيط. في بعض الأحيان قد نرى دوائر أو نقاط تتجاوز حد القيمة العظمى أو تقل عن حد القيمة الصغرى، وهي في واقع الأمر من بياناتنا أيضا لكنها تعامل معاملة القيم الشاذة أو الغريبة وذلك حينما يتجاوز بعدها عن المتوسط ضعفي الإنحراف المعياري (standard deviation) لمجموعة البيانات التي لدينا. إن حجر الزاوية في تصميم أي تجربة علمية على أساس إحصائي سليم يبدأ من توليد التوزيع العشوائي لمعاملاتها حتى لايكون هناك أي تفضيل أو إنحياز لأي منها، كذلك علينا تكرار كل واحدة من تلك المعاملات لأكثر من مرة حتى تكون الاستجابة المدروسة ليست مجرد مصادفة بل تمت المصادقة عليها من خلال إعادتها وتكرارها، إن مجموعة الأوامر التالية تعطي مثالا على طريقة تصميم تجربة بمعاملة لها 12 قيمة مختلفة في 3 مكررات (وهو ما يطلق عليه عادة في التجارب العلمية بتصميم القطاعات العشوائية الكاملة RCBD أي Randomised Complete Block Design): x <- 1:12; RCBD <- replicate(3, sample(x));حيث يشير التركيب 1:12 إلى تسلسل الأرقام من 1 وحتى 12 على التوالي، فيما تقوم الدالة sample ببعثرة عناصر الشعاع x بشكل عشوائي، في حين أن دور الدالة replicate في هذا التركيب هو تكرار ناتج تنفيذ الدالة sample لثلاث مرات، لعرض محتويات التصميم الناتج أكتب RCBD ضمن سطر الأوامر في لغة R ومن ثم إنقر على زر الإدخال (إنتبه إلى أن الأسماء في لغة R حساسة لحالة الأحرف). تجدر الإشارة إلى أنه بإمكانك حفظ مجموعة التعليمات التي تود تنفيذها ضمن ملف نصي، وعادة ما تستخدم اللاحقة R لمثل تلك الملفات (على سبيل المثال script.R)، ومن ثم تستطيع استدعاء ذلك الملف ليتم تنفيذ محتواه من تعليمات وأوامر دفعة واحدة وذلك باستخدام التعليمة ("source("script.R أو حتى من خلال الخيار Source R code في قائمة File. هذه هي نهاية الجزء الثاني من سلسلة المقالات التي تتحدث عن لغة R، في الجزء الثالث سنتناول موضوع الاختبارات الإحصائية. لائحة المراجع: http://www.r-project.orghttp://www.statmethods.nethttp://www.r-tutor.com1 نقطة
-
R هي لغة المتخصصين , تدرس ضمن مواد الدراسات العليا لأهميتها في مجال البحوث الأكاديمية , قد أفادني المقال في تحديث معرفتي و تجديدها . شكرا1 نقطة