برای مشاهده یافته ها از کلید Enter و برای خروج از کلید Esc استفاده کنید.

محاسبات آماری در R : بررسی اولیه دیتاست

برای بررسی روش های محاسبات آماری در R، ابتدا کار را با معرفی دیتاست mtcars شروع می کنیم. به عنوان یک مجموعه جمع و جور! این دیتاست اطلاعات مربوط به 32 خودرو (در قابل 11 ویژگی) مربوط به سال 1974 را از مجله Motor Trend US magazine در خود جای داده است.

با اجرای دستور mtcars می توانید داده های این دیتاست را مشاهده کنید. اگرچه با این روش می توان داده های هر دیتاست موردنظری را بررسی کرد ولی با توجه به اینکه ممکن است تعداد سطرهای دیتاست ها بسیار بیشتر از 32 باشند، راه منطقی، کنترل نمایش تعداد سطرهای دیتاست است و برای این منظور می توان از از دستور head به شیوه زیر استفاده کرد. لازم به ذکر است که بدون تعیین پارامتر مربوط به تعداد سطرهای موردنظر برای نمایش، تابع head به صورت پیش فرض تنها 5 سطر نخست از هر مجموعه داده ای (شامل لیست یا دیتاست) را نمایش می دهد.

برای اطلاع از جزئیات این دیتاست (و البته هر پکیج، تابع و دیتاست دیگری در R) می توانید از دستور help به این صورت استفاده کنید:

mtcars?

نکته مهمی که در کار با دیتاست ها و به صورت کلی در هر پروژه تحلیل داده ای باید به آن توجه داشته باشیم، کسب آگاهی کافی از داده ها و ویژگی های آن هاست. به عبارت دیگر داشتن دانش زمینه ای (Domain Knowledge) در مورد هر مجموعه داده ای نقش بسیار مهمی در فرایند تحلیل داده ها ایفا می کند. در واقع، تا زمانیکه که از ماهیت داده ها اطلاعات کافی در اختیار نداشته باشیم، انتخاب روش های مناسب برای تحلیل آن داده ها اگر غیرممکن نباشد، بسیار دشوار خواهد بود. به همین دلیل، در پروژه های واقعی، به عنوان مثال هنگامی که قرار است بر روی داده های مربوط به ساخت وساز های شهری کار شود، می بایست یک کارشناس مسلط به آن داده ها در کنار تیم تحلیل داده و برنامه نویسی حضور داشته باشد تا علاوه بر تشریح ویژگی های داده ها و میزان اهمیت هر یک از آن ها، الزامات فرایند تحلیل داده و اهداف موردنظر نهایی را نیز مشخص کند. به همین منظور، راهکار منطقی و البته موثر پیش از ورود به هر فرایند تحلیل داده ای، صرف زمان برای آشنایی با داده ها و بررسی ارتباط میان ویژگی ها و اهمیت هر یک از آن هاست. به همین دلیل، توصیه می شود پیش از ادامه آموزش ها، نگاهی هر چند گذرا به جزئیات دیتاست mtcars داشته باشید.

از سوی دیگر، برای بدست آوردن شناخت اولیه از داده ها، چگونگی توزیع آن ها و مواردی از این دست، رویکرد تحلیل داده اکتشافی (Exploratory Data Analysis) مورد استفاده قرار می گیرد که در بخش های آتی به آن هم خواهیم پرداخت.

بررسی دیتاست

نخستین گام برای هر نوع تحلیل داده، کسب اطلاعات اولیه از دیتاست مورد نظر است. برای این منظور، ابتدا ابعاد دیتاست و سپس نام متغیرها را بررسی می کنیم.

cars <- mtcars

dim(cars)
# [1] 32 11

names(cars)
# [1] "mpg" "cyl" "disp" "hp" "drat" "wt" "qsec" "vs" "am" "gear"
# [11] "carb"

همانطور که مشاهده می کنید، دیتاست mtcars دارای 32 سطر (اطلاعات مربوط به 32 خودرو) و 11 ستون (ویژگی) می باشد. نام های متغیرها نیز به صورت اختصاری ارائه شده اند که عنوان کامل هر کدام را می توانید در مستندات دیتاست مشاهده کنید. به عنوان مثال mpg میزان مصرف سوخت (در قالب گالن) در هر مایل را نشان می دهد و cyl هم اطلاعات مربوط به تعداد سیلندر هر خودرو را در خود ذخیره کرده است.

برای دسترسی به نام سطرها یا همان نام خودروهای موجود در دیتاست هم می توان از دستور rownames به شیوه زیر عمل کرد.

به منظور مشاهده و دسترسی به مقادیر یک متغیر مشخص (یک ستون) در دیتاست می توان به شیوه ای که پیشتر برای دیتافریم ها و بردارها استفاده کردیم، عمل کنیم. به عنوان مثال، دستور زیر، تعداد سیلندرهای تمامی 32 خودرو را به ترتیب نمایش می دهد.

cars$cyl
# [1] 6 6 4 6 8 6 8 4 4 6 6 8 8 8 8 8 8 4 4 4 4 8 8 8 8 4 4 4 8 6 8 4

در مواردی ممکن است نیاز بشود که نتایج اینچنینی را به صورت مرتب شده نمایش دهیم. تابع sort چیزی است که در این مواقع به آن احتیاج داریم.

sort(cars$cyl)
# [1] 4 4 4 4 4 4 4 4 4 4 4 6 6 6 6 6 6 6 8 8 8 8 8 8 8 8 8 8 8 8 8 8

برای طبقه بندی نتایج دستور بالا براساس میزان پراکندگی، دستور table می تواند مورد استفاده قرار بگیرد.

table(cars$cyl)
# 4   6 8
# 11  7 14

بیاید یک گام جلوتر برویم و به عنوان یک نمونه، نام خودروهایی که تعداد سیلندرهای آن ها برابر با 6 است را نمایش دهیم (استخراج کنیم). برای چنین عملیاتی، اگرچه راه های مختلفی وجود دارد، ولی دستور subset که کارکرد آن استخراج یک زیرمجموعه از یک مجموعه بزرگتر است می تواند بسیار موثر و کاربردی باشد.

rownames(subset(cars, cyl==6))
# [1]"Mazda RX4" "Mazda RX4 Wag" "Hornet 4 Drive" "Valiant"
# [5] "Merc 280" "Merc 280C" "Ferrari Dino"

در واقع، قطعه کد بالا سطرهایی از دیتاست (یا دیتافریمی که اطلاعات دیتاست در آن ذخیره شده است) را که مقدار متغیر cyl (تعداد سیلندر) در آن برابر با 6 است را به عنوان یک زیرمجموعه استخراج می کند و نام آن سطرها را به عنوان خروجی برمی گرداند.

طبعیتا اگر نیاز داشته باشیم که تعداد عناصر این فهرست را هم (برای عملیات تکمیلی دیگری) بدست بیاوریم، دستور length این کار را برای ما انجام می دهد.

length(rownames(subset(cars, cyl==6)))
# [1] 7