Hiểu năng suất hoặc chi phí theo thời gian mà không trở thành nạn nhân của sự gián đoạn ngẫu nhiên


8

Xin hãy giúp tôi ở đây. Có lẽ trước khi cho tôi một câu trả lời, bạn có thể cần giúp tôi đặt câu hỏi. Tôi chưa bao giờ tìm hiểu về phân tích chuỗi thời gian và không biết đó có thực sự là thứ tôi cần không. Tôi chưa bao giờ tìm hiểu về thời gian trung bình trơn tru và không biết đó có thực sự là điều tôi cần không. Cơ sở thống kê của tôi: Tôi có 12 tín chỉ về thống kê sinh học (hồi quy tuyến tính đa biến, hồi quy logistic nhiều, phân tích tỷ lệ sống, anova đa yếu tố nhưng không bao giờ lặp lại các biện pháp anova).

Vì vậy, hãy nhìn vào kịch bản của tôi dưới đây. Các từ thông dụng tôi nên tìm kiếm là gì và bạn có thể đề xuất một tài nguyên để tìm hiểu những gì tôi cần học không?

Tôi muốn xem xét một số bộ dữ liệu khác nhau cho các mục đích hoàn toàn khác nhau nhưng phổ biến cho tất cả chúng là có ngày là một biến. Vì vậy, một vài ví dụ nảy ra trong đầu: năng suất lâm sàng theo thời gian (như trong bao nhiêu ca phẫu thuật hoặc bao nhiêu lần khám tại văn phòng) hoặc hóa đơn điện theo thời gian (như tiền được trả cho công ty điện mỗi tháng).

Đối với cả hai cách trên, cách làm gần như phổ biến là tạo một bảng tính tháng hoặc quý trong một cột và trong cột kia sẽ là một cái gì đó như thanh toán tiền điện hoặc số bệnh nhân nhìn thấy trong phòng khám. Tuy nhiên, đếm mỗi tháng dẫn đến rất nhiều tiếng ồn không có ý nghĩa. Chẳng hạn, nếu tôi thường thanh toán hóa đơn tiền điện vào ngày 28 hàng tháng nhưng trong một dịp tôi quên và vì vậy tôi chỉ trả 5 ngày sau vào ngày 3 của tháng tiếp theo, sau đó một tháng sẽ xuất hiện như thể không có chi phí và tháng tiếp theo sẽ hiển thị chi phí ginormous. Vì người ta có ngày thanh toán thực tế, tại sao người ta lại cố tình vứt bỏ dữ liệu rất chi tiết bằng cách đóng hộp vào chi phí theo tháng.

Tương tự như vậy nếu tôi ra khỏi thị trấn trong 6 ngày tại một hội nghị thì tháng đó sẽ có vẻ rất không hiệu quả và nếu 6 ngày đó rơi vào gần cuối tháng, tháng tiếp theo sẽ không bận rộn vì sẽ có cả một danh sách chờ đợi của những người muốn gặp tôi nhưng phải đợi đến khi tôi trở về.

Sau đó, tất nhiên có các biến thể theo mùa rõ ràng. Máy điều hòa sử dụng rất nhiều điện nên rõ ràng người ta phải điều chỉnh cho nắng nóng mùa hè. Hàng tỷ trẻ em được giới thiệu cho tôi về bệnh viêm tai giữa cấp tính tái phát vào mùa đông và hầu như không có trong mùa hè và đầu mùa thu. Không có đứa trẻ nào trong độ tuổi đi học được lên lịch để phẫu thuật tự chọn trong 6 tuần đầu tiên mà các trường trở lại sau kỳ nghỉ hè dài. Tính thời vụ chỉ là một biến độc lập ảnh hưởng đến biến phụ thuộc. Phải có các biến độc lập khác mà một số biến số có thể đoán được và các biến khác không được biết.

Cả một loạt các vấn đề khác nhau mọc lên khi xem xét tuyển sinh trong một nghiên cứu lâm sàng lâu đời.

Chi nhánh thống kê nào cho phép chúng ta xem xét điều này theo thời gian bằng cách chỉ nhìn vào các sự kiện và ngày thực tế của chúng nhưng không tạo ra các hộp nhân tạo (tháng / quý / năm) không thực sự tồn tại.

Tôi đã nghĩ đến việc làm cho số lượng trung bình có trọng số cho bất kỳ sự kiện nào. Ví dụ, số bệnh nhân được thấy trong tuần này bằng 0,5 * nr được thấy trong tuần này + 0,25 * nr được thấy vào tuần trước + 0,25 * nr được thấy vào tuần tới.

Tôi muốn tìm hiểu thêm về điều này. Những từ thông dụng nào tôi nên tìm kiếm?


1
Gợi ý: ngắn gọn hơn có thể sẽ giúp bạn có câu trả lời.

1
Tôi đồng ý với bạn hoàn toàn. Câu hỏi của tôi dài và lan man nhưng đó là vấn đề của tôi. Tôi thực sự không biết câu hỏi của tôi là gì. Bạn có thể giúp tôi được không?
Farrel

câu hỏi rất hay (bằng cách nào đó tôi chỉ nhìn thấy nó). +1.
user603

Câu trả lời:


1

Tôi sẽ bắt đầu với các bộ lọc chuỗi thời gian mạnh mẽ (tức là trung bình thay đổi theo thời gian) bởi vì các bộ lọc này đơn giản và trực quan hơn.

Về cơ bản, bộ lọc thời gian mạnh mẽ là làm mịn chuỗi thời gian có nghĩa là trung bình; một biện pháp tóm tắt (trong trường hợp này là thời gian thay đổi một lần) không nhạy cảm với các quan sát 'có dây' miễn là chúng không đại diện cho phần lớn dữ liệu. Để biết tóm tắt xem tại đây .

Nếu bạn cần các bộ làm mịn tinh vi hơn (nghĩa là các bộ làm mịn phi tuyến tính), bạn có thể thực hiện với bộ lọc Kalman mạnh mẽ (mặc dù điều này đòi hỏi mức độ tinh vi toán học cao hơn một chút)

Tài liệu này chứa ví dụ sau (mã để chạy theo R , phần mềm stat nguồn mở):

library(robfilter)
data(Nile)
nile <- as.numeric(Nile)
obj <- wrm.filter(nile, width=11)
plot(obj)

trong đó chuỗi thời gian ban đầu có màu đen và phiên bản được lọc (được lọc bởi trung vị lặp lại) được đặt chồng lên màu đỏ. Các tài liệu cuối cùng chứa một số lượng lớn tài liệu tham khảo cho các bài báo và sách. Các loại bộ lọc khác được triển khai trong gói, nhưng trung vị lặp lại là một bộ lọc rất đơn giản.


Bạn có một url mà bạn có thể chỉ cho tôi. Tôi chưa bao giờ thực hiện một phân tích chuỗi thời gian trong cuộc sống của tôi. Nhưng có vẻ như đây là những gì tôi cần để dạy bản thân mình. Có một ví dụ hoạt động mà tôi có thể xem xét sử dụng các bộ lọc chuỗi thời gian không?
Farrel

@farel:> nếu bạn nhấp vào các từ màu xanh, bạn sẽ được chuyển đến các trang web thực tế. Tài liệu cuối cùng đặc biệt chứa các ví dụ làm việc (lặp đi lặp lại trong phiên bản chỉnh sửa của bài viết của tôi).
user603

1

Một giải pháp đơn giản không đòi hỏi phải có kiến ​​thức chuyên ngành là sử dụng biểu đồ kiểm soát . Chúng dễ tạo ra một cách lố bịch và giúp dễ dàng phân biệt biến thể nguyên nhân đặc biệt (chẳng hạn như khi bạn ra khỏi thị trấn) từ biến thể nguyên nhân chung (chẳng hạn như khi bạn có một tháng năng suất thấp thực sự), dường như là loại thông tin bạn muốn.

Họ cũng bảo tồn dữ liệu. Vì bạn nói rằng bạn sẽ sử dụng biểu đồ cho nhiều mục đích khác nhau, tôi khuyên bạn không nên thực hiện bất kỳ biến đổi nào trong dữ liệu.

Đây là một giới thiệu nhẹ nhàng . Nếu bạn quyết định rằng bạn thích biểu đồ kiểm soát, bạn có thể muốn đi sâu hơn vào chủ đề. Những lợi ích cho doanh nghiệp của bạn sẽ rất lớn. Các biểu đồ kiểm soát được cho là đóng góp chính cho sự bùng nổ kinh tế của Nhật Bản sau chiến tranh .

Thậm chí còn có một gói R .


1

ΔtttΔtt

biên tập:

tixixif(t)xitf(t)t

t

yiy

w(t)w(t)0tw(0)=1w(t)0hti,xi

f(t)=i=1nxiw(|tti|/h).
w(t)
  • w(t)=1t10
  • w(t)=max(0,1t)
  • một hạt nhân bậc hai: ;w(t)=max(0,1t2)
  • một hạt nhân tricube: ;w(t)=max(0,(1t2)3)
  • một hạt nhân Gaussian: ;w(t)=exp(t2/2)

Tôi gọi những hạt nhân này, nhưng chúng bị tắt bởi một yếu tố không đổi ở đây và đó; xem thêm một danh sách toàn diện của hạt nhân .

Một số mã ví dụ trong Matlab:

%%kernels
ker0 = @(t)(max(0,ceil(1-t))); %uniform
ker1 = @(t)(max(0,1-t)); %triangular
ker2 = @(t)(max(0,1-t.^2)); %quadratic
ker3 = @(t)(max(0,(1-t.^2).^3)); %tricube
ker4 = @(t)(exp(-0.5 * t.^2)); %Gaussian

%%compute f(t) given x_i,t_i,kernel,h
ff = @(x_i,t_i,t,kerf,h)(sum(x_i .* kerf(abs(t - t_i) / h)));

%%some sample data: irregular electric bills
sdata = [
datenum(2009,12,30),141.73;...
datenum(2010,01,25),100.45;...
datenum(2010,02,23),98.34;...
datenum(2010,03,30),83.92;...
datenum(2010,05,01),56.21;...       %late this month;
datenum(2010,05,22),47.33;...       
datenum(2010,06,14),62.84;...       
datenum(2010,07,30),83.34;...       
datenum(2010,09,10),93.34;...       %really late this month
datenum(2010,09,22),78.34;...
datenum(2010,10,22),93.25;...
datenum(2010,11,14),83.39;...       %early this month;
datenum(2010,12,30),133.82];

%%some irregular observation times at which to sample the filtered version;
t_obs  = sort(datenum(2009,12,01) + 400 * rand(1,400));

t_i = sdata(:,1);x_i = sdata(:,2);

%%compute f(t) for each of the kernel functions;
h   = 60;    %bandwidth of 60 days;

fx0 = arrayfun(@(t)(ff(x_i,t_i,t,ker0,h)),t_obs);
fx1 = arrayfun(@(t)(ff(x_i,t_i,t,ker1,h)),t_obs);
fx2 = arrayfun(@(t)(ff(x_i,t_i,t,ker2,h)),t_obs);
fx3 = arrayfun(@(t)(ff(x_i,t_i,t,ker3,h)),t_obs);
fx4 = arrayfun(@(t)(ff(x_i,t_i,t,ker4,0.5*h)),t_obs);   %!!use smaller bandwidth

%%plot them;
lhand = plot(t_i,x_i,'--rs',t_obs,fx0,'m-+',t_obs,fx1,'b-+',t_obs,fx2,'k-+',...
t_obs,fx3,'g-+',t_obs,fx4,'c-+');
set(lhand(1),'MarkerSize',12);
set(lhand(2:end),'MarkerSize',4);
datetick(gca());
legend(lhand,{'data','uniform','triangular','quadratic','tricube','gaussian'});

Biểu đồ cho thấy việc sử dụng một vài hạt nhân trên một số dữ liệu hóa đơn điện mẫu. văn bản thay thế

Lưu ý rằng hạt nhân đồng nhất phải chịu 'cú sốc ngẫu nhiên' mà OP đang cố tránh. Các hạt nhân tricube và Gaussian cho các xấp xỉ mượt mà hơn nhiều. Nếu cách tiếp cận này có thể chấp nhận được, người ta chỉ phải chọn kernel và băng thông (nói chung đó là một vấn đề khó khăn, nhưng được cung cấp một số kiến ​​thức về miền và một số vòng lặp mã kiểm tra lại mã, nó không quá khó.)


Shabbychef:> tôi nghĩ Farrel đặc biệt đề cập đến một lập luận chống lại phương pháp này trong câu hỏi của anh ấy.
user603

Câu hỏi hơi mơ hồ; Điều đáng nói của tôi là OP đang tìm kiếm "buzzwords".
shabbychef

Tôi google tìm kiếm boxcar dựa trên thời gian và đưa ra rất ít. Bạn có thể chỉ cho chúng tôi một ví dụ làm việc?
Farrel

1

Buzzwords: nội suy, lấy mẫu lại, làm mịn.

Vấn đề của bạn tương tự như một vấn đề thường gặp trong nhân khẩu học: mọi người có thể có tổng điều tra dân số được chia thành các khoảng tuổi, chẳng hạn, và các khoảng như vậy không phải lúc nào cũng có chiều rộng không đổi. Bạn muốn nội suy phân phối theo độ tuổi. Điều này chia sẻ với vấn đề của bạn, ngoài chiều rộng thay đổi (= khoảng thời gian biến), là dữ liệu có xu hướng không âm. Ngoài ra, nhiều bộ dữ liệu như vậy có thể có nhiễu, nhưng nó có một dạng tương quan âm đặc biệt: một số xuất hiện trong một thùng sẽ không xuất hiện ở các thùng lân cận, nhưng có thể đã được gán cho thùng sai. Ví dụ, người già có thể có xu hướng làm tròn tuổi đến năm năm gần nhất. Họ không bị bỏ qua nhưng họ có thể đóng góp cho nhóm tuổi sai. Mặc dù, lớn, dữ liệu là đầy đủ và đáng tin cậy. Về mặt tương tự này, chúng tôi ' đang nói về một cuộc điều tra dân số đầy đủ; trong bộ dữ liệu của bạn, bạn có hóa đơn điện thực tế, đăng ký thực tế, v.v. Vì vậy, đây chỉ là một câu hỏi về phân bổ dữ liệu một cách hợp lý cho một tập hợp các khoảng thời gian hữu ích để phân tích thêm (chẳng hạn như khoảng thời gian cách đều nhau để phân tích chuỗi thời gian): đó là sự tham gia của phép nội suy và lấy mẫu lại.

Có nhiều kỹ thuật nội suy. Điểm chung nhất trong nhân khẩu học được phát triển để tính toán đơn giản và dựa trên các phép chia đa thức. Nhiều người chia sẻ một mẹo đáng để biết, bất kể bạn dự định xử lý dữ liệu của mình như thế nào: không cố gắng nội suy dữ liệu thô; thay vào đó, nội suy tổng tích lũy của họ. Cái sau sẽ tăng đơn điệu do tính không âm của các giá trị ban đầu, và do đó sẽ có xu hướng tương đối trơn tru. Đây là lý do tại sao splines đa thức có thể làm việc cả. Một ưu điểm khác của phương pháp này là mặc dù sự phù hợp có thể đi chệch khỏi các điểm dữ liệu (hơi, một hy vọng), nhưng về tổng thể, nó tái tạo chính xác các tổng số, do đó, không có gì là mất hoặc thu được ròng. Tất nhiên, sau khi khớp các giá trị tích lũy (dưới dạng hàm thời gian hoặc tuổi), bạn lấy các khác biệt đầu tiên để ước tính tổng số trong bất kỳ thùng nào bạn muốn.

Ví dụ đơn giản nhất của phương pháp này là một spline tuyến tính: chỉ cần kết nối các điểm liên tiếp trên biểu đồ của tích lũy so với tích lũy theo các phân đoạn dòng. Ước tính số lượng trong bất kỳ khoảng thời gian nào bằng cách đọc các giá trị và của đường cong được lần lượt tại và và sử dụng . Splines tốt hơn (khối trong một số lĩnh vực; tinh túy trong nhiều ứng dụng nhân khẩu học) đôi khi cải thiện các ước tính. Điều này tương đương với trực giác của bạn về việc cân dữ liệu và cung cấp cho nó một giải thích đồ họa đẹp.t [ t 0 , t 1 ] x 0 x 1 t 0 t 1 x 1 - x 0xt[t0,t1]x0x1t0t1x1x0


Có vẻ thú vị. Bạn có biết thực hiện R đơn giản?
Farrel

Gửi @whuber Tôi thực sự muốn thực hiện điều này trong R vì vậy tôi đã đăng một câu hỏi trong stackoverflow. Bạn có thể quan tâm. Nếu bạn sử dụng RI, bạn sẽ yêu bạn trả lời nó nếu không bạn có thể chỉ muốn ngồi lại và đánh nhau
Farrel
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.