David Harris telah memberikan jawaban yang bagus , tetapi karena pertanyaannya terus diedit, mungkin akan membantu untuk melihat rincian solusinya. Sorotan dari analisis berikut adalah:
Kuadrat terkecil tertimbang mungkin lebih tepat daripada kuadrat terkecil biasa.
Karena perkiraan dapat mencerminkan variasi dalam produktivitas di luar kendali individu, berhati-hatilah dalam menggunakannya untuk mengevaluasi pekerja individu.
Untuk melakukan ini, mari kita buat beberapa data realistis menggunakan rumus yang ditentukan sehingga kita dapat mengevaluasi keakuratan solusi. Ini dilakukan dengan 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)
Dalam langkah-langkah awal ini, kami:
Tetapkan seed untuk generator angka acak sehingga siapa pun dapat mereproduksi hasilnya.
Tentukan berapa banyak pekerja yang ada n.names.
Menetapkan jumlah pekerja yang diharapkan per kelompok groupSize.
Tentukan berapa banyak kasus (pengamatan) yang tersedia n.cases. (Kemudian beberapa dari ini akan dihilangkan karena mereka sesuai, seperti yang terjadi secara acak, tidak ada pekerja di tenaga kerja sintetis kami.)
Atur jumlah pekerjaan agar berbeda secara acak dari yang diperkirakan berdasarkan pada jumlah "keahlian" masing-masing kelompok. Nilai cvadalah variasi proporsional yang khas; Misalnya , diberikan di sini sesuai dengan variasi 10% khas (yang dapat berkisar di luar 30% dalam beberapa kasus).0,10
Buat tenaga kerja orang-orang dengan berbagai keahlian kerja. Parameter yang diberikan di sini untuk komputasi proficiencymenciptakan kisaran lebih dari 4: 1 antara pekerja terbaik dan terburuk (yang menurut pengalaman saya mungkin sedikit sempit untuk teknologi dan pekerjaan profesional, tetapi mungkin lebar untuk pekerjaan manufaktur rutin).
Dengan tenaga kerja sintetis ini, mari kita simulasikan pekerjaan mereka . Ini sama dengan menciptakan kelompok masing-masing pekerja ( schedule) untuk setiap pengamatan (menghilangkan pengamatan di mana tidak ada pekerja sama sekali terlibat), menjumlahkan kemahiran para pekerja di setiap kelompok, dan mengalikan jumlah itu dengan nilai acak (rata-rata tepat ) untuk mencerminkan variasi yang pasti akan terjadi. (Jika tidak ada variasi sama sekali, kami akan merujuk pertanyaan ini ke situs Matematika, di mana responden dapat menunjukkan masalah ini hanya seperangkat persamaan linear simultan yang dapat diselesaikan tepat untuk kemahiran.)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)
Saya merasa nyaman untuk menempatkan semua data kelompok kerja ke dalam satu kerangka data tunggal untuk dianalisis tetapi untuk menjaga nilai kerja tetap terpisah:
data <- data.frame(schedule)
Di sinilah kita akan mulai dengan data nyata: kita akan memiliki pengelompokan pekerja dikodekan oleh data(atau schedule) dan hasil kerja yang diamati dalam workarray.
Sayangnya, jika beberapa pekerja selalu dipasangkan, R's lmprosedur hanya gagal dengan kesalahan. Kita harus memeriksa dulu untuk pasangan semacam itu. Salah satu caranya adalah dengan menemukan pekerja berkorelasi sempurna dalam jadwal:
correlations <- cor(data)
outer(names(data), names(data), paste)[which(upper.tri(correlations) &
correlations >= 0.999999)]
Outputnya akan mencantumkan pasangan pekerja yang selalu berpasangan: ini dapat digunakan untuk menggabungkan pekerja ini ke dalam kelompok, karena setidaknya kita dapat memperkirakan produktivitas masing-masing kelompok, jika tidak individu di dalamnya. Kami harap itu hanya dimuntahkan character(0). Mari kita anggap itu benar.
Satu poin halus, tersirat dalam penjelasan di atas, adalah bahwa variasi dalam pekerjaan yang dilakukan adalah multiplikatif, bukan aditif. Ini realistis: variasi dalam output kelompok besar pekerja, pada skala absolut, akan lebih besar daripada variasi dalam kelompok-kelompok kecil. Karenanya, kami akan mendapatkan taksiran yang lebih baik dengan menggunakan kuadrat terkecil berbobot daripada kuadrat terkecil biasa. Bobot terbaik untuk digunakan dalam model khusus ini adalah kebalikan dari jumlah pekerjaan. (Dalam hal beberapa jumlah pekerjaan adalah nol, saya memperdaya ini dengan menambahkan sedikit untuk menghindari pembagian dengan nol.)
fit <- lm(work ~ . + 0, data=data, weights=1/(max(work)/10^3+work))
fit.sum <- summary(fit)
Ini seharusnya hanya membutuhkan satu atau dua detik.
Sebelum melanjutkan, kita harus melakukan beberapa tes diagnostik kecocokan. Meskipun membahas itu akan membawa kita terlalu jauh ke sini, satu Rperintah untuk menghasilkan diagnostik yang bermanfaat adalah
plot(fit)
(Ini akan memakan waktu beberapa detik: itu set data besar!)
Meskipun beberapa baris kode ini melakukan semua pekerjaan, dan mengeluarkan perkiraan kemahiran untuk setiap pekerja, kami tidak ingin memindai melalui semua 1000 jalur output - setidaknya tidak segera. Mari kita gunakan grafik untuk menampilkan hasilnya .
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. Inilah yang terjadi di sini: histogramnya secantik yang bisa diharapkan. (Mungkin satu hal yang tentu saja bagus: ini adalah data simulasi. Bagaimanapun, simetri ini mengkonfirmasi bobot melakukan pekerjaan mereka dengan benar. Menggunakan bobot yang salah akan cenderung membuat histogram asimetris.)
Plot sebar (panel kanan bawah gambar) langsung membandingkan perkiraan keahlian dengan yang sebenarnya. Tentu saja ini tidak akan tersedia dalam kenyataan, karena kita tidak tahu kemahiran yang sebenarnya: di sinilah letak kekuatan simulasi komputer. Mengamati:
Jika tidak ada variasi acak dalam pekerjaan (set cv=0dan jalankan kembali kode untuk melihat ini), scatterplot akan menjadi garis diagonal yang sempurna. Semua perkiraan akan sangat akurat. Jadi, pencar yang terlihat di sini mencerminkan variasi itu.
Terkadang, nilai yang diestimasikan cukup jauh dari nilai sebenarnya. Misalnya, ada satu titik dekat (110, 160) di mana kemahiran yang diperkirakan sekitar 50% lebih besar dari kemahiran yang sebenarnya. Ini hampir tidak bisa dihindari dalam kumpulan data yang besar. Ingatlah ini jika perkiraan akan digunakan secara individual , seperti untuk mengevaluasi pekerja. Secara keseluruhan perkiraan ini mungkin sangat baik, tetapi sejauh variasi dalam produktivitas kerja disebabkan oleh sebab-sebab di luar kendali individu, maka bagi beberapa pekerja perkiraan tersebut akan keliru: beberapa terlalu tinggi, beberapa terlalu rendah. Dan tidak ada cara untuk mengatakan dengan tepat siapa yang terpengaruh.
Berikut adalah empat plot yang dihasilkan selama proses ini.

Akhirnya, perhatikan bahwa metode regresi ini mudah diadaptasi untuk mengendalikan variabel lain yang mungkin terkait dengan produktivitas kelompok. Ini dapat mencakup ukuran kelompok, durasi setiap upaya kerja, variabel waktu, faktor untuk manajer setiap kelompok, dan sebagainya. Cukup sertakan mereka sebagai variabel tambahan dalam regresi.