تحلیل داده حرفهای مجموعهای از دستورهای پراکنده در Command Window نیست. باید مسیر ورود داده، کنترل کیفیت، محاسبه، رسم و ذخیره خروجی در یک اسکریپت قابل تکرار ثبت شود تا با تغییر فایل ورودی، نتیجه بدون عملیات دستی بازسازی شود.
در پایان چه چیزی به دست میآورید؟
- ورود داده با نام متغیر و نوع مناسب.
- کنترل داده گمشده، پرت و واحدها پیش از تحلیل.
- رسم نمودار با برچسب، واحد و خروجی برداری یا باکیفیت.
پروژه و داده را سازمان دهید
پوشههای data، src و results را جدا کنید و فایل خام را تغییر ندهید. مسیرها را نسبی نگه دارید تا پروژه روی رایانه دیگر نیز اجرا شود. در ابتدای اسکریپت توضیح کوتاه، ورودیها و نسخه تحلیل را ثبت کنید.
برای داده جدولی از readtable استفاده کنید تا نام ستون و انواع داده حفظ شوند. پس از ورود، اندازه جدول، نام متغیرها و چند ردیف نخست را بررسی کنید؛ فرض کردن ساختار فایل یکی از خطاهای رایج است.
projectRoot = fileparts(mfilename('fullpath'));
data = readtable(fullfile(projectRoot,'data','experiment.csv'));
summary(data)
assert(all(ismember({'Time','Force'}, data.Properties.VariableNames)))
پاکسازی را شفاف و قابل ردگیری انجام دهید
تعداد مقادیر گمشده و محدوده هر متغیر را گزارش کنید. حذف یا جایگزینی داده باید با دلیل روششناختی انجام شود و تعداد ردیفهای حذفشده ثبت شود. معیار پرت را پیش از دیدن نتیجه نهایی انتخاب کنید.
واحدها را در نام متغیر یا Properties ثبت کنید. تبدیل واحد باید یک بار و در بخش مشخص انجام شود؛ تبدیل پراکنده در محاسبات، کنترل و بازبینی را دشوار میکند.
- بررسی missing و مقادیر غیرعددی
- کنترل بازه فیزیکی و واحد هر ستون
- تشخیص رکوردهای تکراری
- ثبت تعداد داده قبل و بعد از پاکسازی
محاسبه و کنترل را از هم جدا نکنید
هر شاخص را با نام معنادار محاسبه و بلافاصله کنترل کنید. برای محاسبات حساس، نتیجه را روی یک داده کوچک با پاسخ دستی مقایسه کنید. استفاده از تابع جداگانه برای عملیات تکراری، خطا و تکرار کد را کم میکند.
هشدار و assert برای فرضهای حیاتی به اسکریپت اضافه کنید. اگر زمان صعودی نیست یا تعداد نمونه کمتر از حد لازم است، تحلیل باید با پیام روشن متوقف شود، نه اینکه نمودار نادرست تولید کند.
نمودار باید پیام مهندسی داشته باشد
عنوان، نام محور، واحد، راهنما و محدوده مناسب را تنظیم کنید. رنگ و نوع خط باید حتی در چاپ سیاهوسفید قابل تفکیک باشد. از بزرگنمایی محور برای القای تغییر بیشتر از واقعیت پرهیز کنید.
خروجی را با نام شامل نسخه یا تاریخ تحلیل ذخیره کنید. داده خلاصه و شاخصهای اصلی را نیز در CSV یا MAT بنویسید تا نتیجه فقط در تصویر باقی نماند.
fig = figure('Color','w');
plot(data.Time, data.Force, 'LineWidth', 1.6); grid on
xlabel('Time (s)'); ylabel('Force (N)');
title('Measured force history');
exportgraphics(fig, fullfile(projectRoot,'results','force-history.pdf'),'ContentType','vector');
- فایل خام را بدون تغییر نگه داشتهام.
- کنترل کیفیت و تبدیل واحدها در اسکریپت ثبت شدهاند.
- برای فرضهای مهم assert یا هشدار دارم.
- نمودارها واحد، عنوان و خروجی باکیفیت دارند.
پرسشهای رایج
اسکریپت بهتر است یا Live Script؟
Live Script برای گزارش و آموزش مناسب است؛ اسکریپت و تابع برای خودکارسازی، نسخهگذاری و اجرای بدون رابط معمولاً پایدارترند.
چه زمانی داده پرت را حذف کنیم؟
فقط با معیار ازپیشتعریفشده و دلیل فنی یا آماری. مقدار دور از میانگین لزوماً خطا نیست و ممکن است پدیده واقعی باشد.