David Harris harika bir cevap verdi , ancak soru düzenlenmeye devam ettiğinden, belki de çözümünün ayrıntılarını görmeye yardımcı olacaktır. Aşağıdaki analizin önemli noktaları şunlardır:
Ağırlıklı en küçük kareler muhtemelen normal en küçük karelerden daha uygundur.
Tahminler üretkenlikteki herhangi bir kişinin kontrolünün ötesindeki farklılıkları yansıtabileceğinden, bunları bireysel çalışanları değerlendirmek için kullanma konusunda dikkatli olun.
Bunu gerçekleştirmek için , çözümün doğruluğunu değerlendirebilmemiz için belirtilen formülleri kullanarak bazı gerçekçi veriler oluşturalım . Bu aşağıdakilerle yapılır 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)
Bu ilk adımlarda:
Rastgele sayı üreteci için bir tohum ayarlayın, böylece herkes sonuçları tam olarak çoğaltabilir.
Orada kaç işçi bulunduğunu belirtin n.names
.
İle grup başına beklenen işçi sayısını belirtin groupSize
.
Kaç vakaya (gözlemlere) sahip olduğunuzu belirtin n.cases
. (Daha sonra bunlardan birkaçı ortadan kaldırılacaktır, çünkü rastgele olduğu gibi sentetik iş gücümüzdeki hiçbir işçiye karşılık gelmezler.)
Her bir grubun çalışma "yeterlilikleri" toplamına dayanarak, iş miktarlarının tahmin edilenden rastgele farklı olmasını sağlayın. Değeri cv
tipik bir oransal varyasyon; Örneğin , burada verilen tipik bir% 10 varyasyona karşılık gelir (birkaç durumda% 30'un ötesinde olabilir).0.10
Farklı iş yeterliliklerine sahip kişilerin işgücünü oluşturun. Bilgi işlem proficiency
için burada verilen parametreler , en iyi ve en kötü çalışanlar arasında 4: 1'in üzerinde bir aralık oluşturur (bu da benim deneyimime göre teknoloji ve profesyonel işler için biraz dar olabilir, ancak rutin üretim işleri için belki de geniştir).
Elindeki bu sentetik işgücü ile işlerini simüle edelim . Bu schedule
, her bir gözlem için (hiçbir işçinin dahil olmadığı gözlemleri ortadan kaldırarak) her bir işçiden bir grup ( ) oluşturmak, her bir gruptaki işçilerin yeterliliklerini toplamak ve bu toplamı rastgele bir değerle çarpmaktır (tam olarak ortalama ) kaçınılmaz olarak gerçekleşecek varyasyonları yansıtmaktır. (Hiç bir varyasyon olmasaydı, bu soruyu, yanıtlayanların bu sorunun sadece yeterlilikler için tam olarak çözülebilecek bir dizi eşzamanlı doğrusal denklem olduğunu belirtebileceği Matematik sitesine yönlendireceğiz.)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üm çalışma grubu verilerini analiz için tek bir veri çerçevesine koymak, ancak çalışma değerlerini ayrı tutmak uygun bulduk:
data <- data.frame(schedule)
Burası gerçek verilerle başlayacağımız yerdi: işçi gruplamasını data
(veya schedule
) ve work
dizideki gözlemlenen iş çıktılarını kodlamış oluruz .
Bazı işçiler hep eşleştirilmiş Maalesef, R
'ın lm
prosedür sadece bir hata ile sonlandı. Önce bu tür eşleşmeleri kontrol etmeliyiz. Bunun bir yolu, çizelgede mükemmel korelasyonlu işçiler bulmaktır:
correlations <- cor(data)
outer(names(data), names(data), paste)[which(upper.tri(correlations) &
correlations >= 0.999999)]
Çıktı, her zaman eşleştirilmiş işçi çiftlerini listeleyecektir: bu, bu çalışanları gruplar halinde birleştirmek için kullanılabilir, çünkü en azından içindeki grupların olmasa da her grubun verimliliğini tahmin edebiliriz . Umarız sadece tükürür character(0)
. Diyelim ki öyle.
Yukarıdaki açıklamada örtük olan ince bir nokta, yapılan çalışmadaki varyasyonun katkı değil , çarpımsal olmasıdır . Bu gerçekçi: büyük bir işçi grubunun üretimindeki değişim, mutlak bir ölçekte, daha küçük gruplardaki değişimden daha büyük olacaktır. Buna göre, normal en küçük kareler yerine ağırlıklı en küçük kareler kullanarak daha iyi tahminler alacağız . Bu modelde kullanılacak en iyi ağırlıklar , çalışma miktarlarının karşılıklılarıdır. (Bazı iş miktarlarının sıfır olması durumunda, sıfıra bölmekten kaçınmak için küçük bir miktar ekleyerek bunu geçiştiririm.)
fit <- lm(work ~ . + 0, data=data, weights=1/(max(work)/10^3+work))
fit.sum <- summary(fit)
Bu sadece bir veya iki saniye sürmelidir.
Devam etmeden önce uyumun bazı teşhis testlerini yapmalıyız. Bunları tartışmak bizi çok uzağa götürse de, R
yararlı teşhis üretmek için bir komut
plot(fit)
(Bu birkaç saniye sürecektir: büyük bir veri kümesi!)
Bu birkaç kod satırı tüm işi yapmasına ve her işçi için tahmini yeterlilikleri tüketmesine rağmen, en azından hemen değil, 1000 satırın tamamını taramak istemeyiz. Sonuçları görüntülemek için grafikleri kullanalım .
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")])
Histogram (aşağıdaki şeklin sol alt paneli), standart tahmin hatasının katları olarak ifade edilen tahmini ve gerçek yeterlilikler arasındaki farklardır . İyi bir prosedür için, bu değerler neredeyse her zaman ve arasında olacaktır ve civarında simetrik olarak dağıtılacaktır . 1000 işçi katılan ile olsa da, tam olarak germek için bu standartlaştırılmış farklılıkların birkaç görmeyi bekleyebilirsiniz ve hatta uzağa- 220340. Burada tam olarak durum böyle: histogram umduğu kadar güzel. (Tabii ki iyi olabilir: sonuçta bunlar simüle edilmiş verilerdir. Ancak simetri, ağırlıkların işlerini doğru bir şekilde yaptığını doğrular. Yanlış ağırlıkları kullanmak asimetrik bir histogram oluşturma eğilimindedir.)
Dağılım grafiği (şeklin sağ alt paneli) tahmini yeterlilikleri doğrudan gerçek yeterliliklerle karşılaştırır. Elbette bu gerçekte mevcut olmayacaktır, çünkü gerçek yeterlilikleri bilmiyoruz: işte bilgisayar simülasyonunun gücü yatıyor. Gözlemek:
Çalışmada rastgele bir değişiklik olmasaydı ( cv=0
bunu görmek için kodu ayarlayın ve yeniden çalıştırın), dağılım grafiği mükemmel bir çapraz çizgi olurdu. Tüm tahminler mükemmel doğrudur. Böylece, burada görülen dağılım bu varyasyonu yansıtır.
Bazen, tahmini bir değer gerçek değerden oldukça uzaktır. Örneğin, tahmini yeterliliğin gerçek yeterlilikten yaklaşık% 50 daha fazla olduğu bir noktaya (110, 160) yakın bir nokta vardır. Bu büyük veri yığınlarında neredeyse kaçınılmazdır. Tahminler, işçileri değerlendirmek gibi bireysel bir temelde kullanılacaksa bunu aklınızda bulundurun . Genel olarak bu tahminler mükemmel olabilir, ancak iş verimliliğindeki farklılığın herhangi bir kişinin kontrolünün ötesindeki nedenlerden kaynaklandığı ölçüde, o zaman birkaç işçi için tahminler hatalı olacaktır: bazıları çok yüksek, bazıları çok düşük. Ve kimin etkilendiğini kesin olarak anlatmanın bir yolu yok.
İşte bu işlem sırasında üretilen dört grafik.
Son olarak, bu regresyon yönteminin kolayca grup üretkenliği ile ilişkilendirilebilecek diğer değişkenleri kontrol etmeye uyarlandığını unutmayın. Bunlar arasında grup büyüklüğü, her çalışma çabasının süresi, zaman değişkeni, her grubun yöneticisi için bir faktör vb. Sayılabilir. Bunları regresyona ek değişkenler olarak eklemeniz yeterli.