David Harris đã cung cấp một câu trả lời tuyệt vời , nhưng vì câu hỏi tiếp tục được chỉnh sửa, có lẽ nó sẽ giúp xem chi tiết về giải pháp của anh ấy. Điểm nổi bật của phân tích sau đây là:
Bình phương tối thiểu có trọng số có lẽ phù hợp hơn bình phương tối thiểu thông thường.
Bởi vì các ước tính có thể phản ánh sự thay đổi về năng suất vượt quá mọi sự kiểm soát của từng cá nhân, hãy thận trọng khi sử dụng chúng để đánh giá từng công nhân.
Để thực hiện điều này, hãy tạo một số dữ liệu thực tế bằng các công thức được chỉ định để chúng tôi có thể đánh giá độ chính xác của giải pháp. Điều này được thực hiện với R
:
set.seed(17)
n.names <- 1000
groupSize <- 3.5
n.cases <- 5 * n.names # Should exceed n.names
cv <- 0.10 # Must be 0 or greater
groupSize <- 3.5 # Must be greater than 0
proficiency <- round(rgamma(n.names, 20, scale=5)); hist(proficiency)
Trong các bước ban đầu này, chúng tôi:
Đặt hạt giống cho trình tạo số ngẫu nhiên để bất kỳ ai cũng có thể sao chép chính xác kết quả.
Chỉ định có bao nhiêu công nhân với n.names
.
Quy định số lượng công nhân dự kiến mỗi nhóm với groupSize
.
Chỉ định có bao nhiêu trường hợp (quan sát) có sẵn với n.cases
. (Sau đó, một vài trong số này sẽ bị loại vì chúng tương ứng, vì nó xảy ra ngẫu nhiên, không có công nhân nào trong lực lượng lao động tổng hợp của chúng tôi.)
cv
0.10
Tạo ra một lực lượng lao động của những người có trình độ công việc khác nhau. Các tham số được đưa ra ở đây cho điện toán proficiency
tạo ra một phạm vi hơn 4: 1 giữa những người lao động giỏi nhất và kém nhất (mà theo kinh nghiệm của tôi thậm chí có thể hơi hẹp đối với công việc công nghệ và chuyên nghiệp, nhưng có lẽ rộng đối với các công việc sản xuất thông thường).
schedule
1
schedule <- matrix(rbinom(n.cases * n.names, 1, groupSize/n.names), nrow=n.cases)
schedule <- schedule[apply(schedule, 1, sum) > 0, ]
work <- round(schedule %*% proficiency * exp(rnorm(dim(schedule)[1], -cv^2/2, cv)))
hist(work)
Tôi đã thấy thuận tiện khi đặt tất cả dữ liệu của nhóm làm việc vào một khung dữ liệu duy nhất để phân tích nhưng để tách các giá trị công việc:
data <- data.frame(schedule)
Đây là nơi chúng ta sẽ bắt đầu với dữ liệu thực: chúng ta sẽ có nhóm công nhân được mã hóa bởi data
(hoặc schedule
) và các đầu ra công việc được quan sát trong work
mảng.
Thật không may, nếu một số công nhân thường đi thành cặp, R
của lm
thủ tục đơn giản không thành công với một lỗi. Chúng ta nên kiểm tra đầu tiên cho các cặp như vậy. Một cách là tìm công nhân tương quan hoàn hảo trong lịch trình:
correlations <- cor(data)
outer(names(data), names(data), paste)[which(upper.tri(correlations) &
correlations >= 0.999999)]
Đầu ra sẽ liệt kê các cặp công nhân luôn được ghép nối: điều này có thể được sử dụng để kết hợp các công nhân này thành các nhóm, bởi vì ít nhất chúng ta có thể ước tính năng suất của từng nhóm, nếu không phải là các cá nhân trong đó. Chúng tôi hy vọng nó chỉ phun ra character(0)
. Hãy giả sử nó làm.
Một điểm tinh tế, tiềm ẩn trong lời giải thích đã nói ở trên, đó là sự khác biệt trong công việc được thực hiện là nhân, không phải là phụ gia. Điều này là thực tế: sự thay đổi sản lượng của một nhóm lớn công nhân sẽ, trên một quy mô tuyệt đối, sẽ lớn hơn sự khác biệt trong các nhóm nhỏ hơn. Theo đó, chúng ta sẽ có được ước tính tốt hơn bằng cách sử dụng bình phương tối thiểu có trọng số thay vì bình phương tối thiểu thông thường. Các trọng số tốt nhất để sử dụng trong mô hình cụ thể này là các đối ứng của số lượng công việc. (Trong trường hợp một số lượng công việc bằng 0, tôi làm mờ điều này bằng cách thêm một lượng nhỏ để tránh chia cho số không.)
fit <- lm(work ~ . + 0, data=data, weights=1/(max(work)/10^3+work))
fit.sum <- summary(fit)
Điều này sẽ chỉ mất một hoặc hai giây.
Trước khi tiếp tục, chúng tôi phải thực hiện một số xét nghiệm chẩn đoán phù hợp. Mặc dù thảo luận về những điều đó sẽ đưa chúng ta đi quá xa ở đây, một R
lệnh để tạo ra chẩn đoán hữu ích là
plot(fit)
(Việc này sẽ mất vài giây: đó là một tập dữ liệu lớn!)
Mặc dù một vài dòng mã này thực hiện tất cả công việc và đưa ra mức độ thành thạo ước tính cho mỗi công nhân, chúng tôi sẽ không muốn quét qua tất cả 1000 dòng đầu ra - ít nhất là không ngay lập tức. Hãy sử dụng đồ họa để hiển thị kết quả .
fit.coef <- coef(fit.sum)
results <- cbind(fit.coef[, c("Estimate", "Std. Error")],
Actual=proficiency,
Difference=fit.coef[, "Estimate"] - proficiency,
Residual=(fit.coef[, "Estimate"] - proficiency)/fit.coef[, "Std. Error"])
hist(results[, "Residual"])
plot(results[, c("Actual", "Estimate")])
−220340. Đây chính xác là trường hợp ở đây: biểu đồ là đẹp như người ta có thể hy vọng. (Tất nhiên mọi thứ có thể rất hay: đó là những dữ liệu mô phỏng. Nhưng đối xứng xác nhận các trọng số đang thực hiện công việc của chúng một cách chính xác. Sử dụng các trọng số sai sẽ có xu hướng tạo ra một biểu đồ không đối xứng.)
Scatterplot (bảng dưới bên phải của hình) so sánh trực tiếp mức độ thành thạo ước tính với thực tế. Tất nhiên điều này sẽ không có sẵn trong thực tế, bởi vì chúng ta không biết những thành thạo thực tế: ở đây nằm ở sức mạnh của mô phỏng máy tính. Quan sát:
Nếu không có biến thể ngẫu nhiên trong công việc (đặt cv=0
và chạy lại mã để thấy điều này), thì biểu đồ phân tán sẽ là một đường chéo hoàn hảo. Tất cả các ước tính sẽ hoàn toàn chính xác. Do đó, sự phân tán nhìn thấy ở đây phản ánh sự thay đổi đó.
Đôi khi, một giá trị ước tính là khá xa so với giá trị thực tế. Chẳng hạn, có một điểm gần (110, 160) trong đó mức độ thành thạo ước tính lớn hơn khoảng 50% so với mức độ thành thạo thực tế. Điều này là gần như không thể tránh khỏi trong bất kỳ lô dữ liệu lớn. Hãy ghi nhớ điều này nếu các ước tính sẽ được sử dụng trên cơ sở cá nhân , chẳng hạn như để đánh giá công nhân. Nhìn chung, các ước tính này có thể là tuyệt vời, nhưng ở mức độ khác nhau về năng suất làm việc là do các nguyên nhân nằm ngoài bất kỳ sự kiểm soát nào của từng cá nhân, thì đối với một số công nhân, các ước tính sẽ sai: một số quá cao, một số quá thấp. Và không có cách nào để nói chính xác ai bị ảnh hưởng.
Dưới đây là bốn lô được tạo ra trong quá trình này.
Cuối cùng, lưu ý rằng phương pháp hồi quy này dễ dàng thích nghi với việc kiểm soát các biến khác có thể liên quan đến năng suất của nhóm. Chúng có thể bao gồm quy mô nhóm, thời lượng của từng nỗ lực làm việc, biến thời gian, yếu tố cho người quản lý của mỗi nhóm, v.v. Chỉ cần bao gồm chúng như các biến bổ sung trong hồi quy.