David Harris ให้คำตอบที่ดีแต่เนื่องจากคำถามยังคงได้รับการแก้ไขบางทีมันอาจช่วยในการดูรายละเอียดของวิธีแก้ปัญหาของเขา ไฮไลท์ของการวิเคราะห์ต่อไปนี้คือ:
สี่เหลี่ยมที่มีน้ำหนักน้อยที่สุดน่าจะเหมาะสมกว่าสแควร์สแควร์ทั่วไป
เนื่องจากการประมาณการอาจสะท้อนให้เห็นถึงความแปรปรวนของประสิทธิภาพการทำงานที่นอกเหนือการควบคุมของบุคคลใด ๆ โปรดใช้ความระมัดระวังเกี่ยวกับการใช้งานเหล่านี้เพื่อประเมินพนักงานแต่ละคน
ในการดำเนินการนี้ให้สร้างข้อมูลจริงโดยใช้สูตรที่ระบุเพื่อให้เราสามารถประเมินความแม่นยำของการแก้ปัญหา สิ่งนี้ทำได้ด้วย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)
ในขั้นตอนแรกเรา:
ตั้งค่าเมล็ดพันธุ์สำหรับตัวสร้างตัวเลขสุ่มเพื่อให้ทุกคนสามารถทำซ้ำผลลัพธ์ได้อย่างแน่นอน
n.names
ระบุจำนวนแรงงานที่มีอยู่กับ
groupSize
กำหนดจำนวนที่คาดหวังของคนงานต่อกลุ่มที่มี
ระบุวิธีการหลายราย (สังเกต) n.cases
จะสามารถใช้ได้กับ (หลังจากนั้นไม่กี่ข้อเหล่านี้จะถูกกำจัดเพราะพวกเขาสอดคล้องกันในขณะที่มันเกิดขึ้นแบบสุ่มกับคนงานในหน่วยงานสังเคราะห์ของเรา)
จัดเรียงสำหรับปริมาณงานที่จะแตกต่างกันแบบสุ่มจากสิ่งที่จะถูกคาดการณ์ตามผลรวมของ "ความชำนาญ" ของแต่ละกลุ่ม ค่าของcv
เป็นรูปแบบสัดส่วนทั่วไป เช่นที่0.10 รับที่นี่สอดคล้องกับรูปแบบทั่วไป 10% (ซึ่งอาจช่วงเกิน 30% ในบางกรณี)
สร้างพนักงานของคนที่มีทักษะการทำงานที่แตกต่างกัน พารามิเตอร์ที่ให้ไว้ที่นี่สำหรับการคำนวณproficiency
สร้างช่วงของมากกว่า 4: 1 ระหว่างพนักงานที่ดีที่สุดและแย่ที่สุด (ซึ่งจากประสบการณ์ของฉันอาจแคบลงเล็กน้อยสำหรับเทคโนโลยีและงานมืออาชีพ แต่อาจกว้างสำหรับงานการผลิตตามปกติ)
ด้วยแรงงานสังเคราะห์ในมือนี้ขอจำลองการทำงานของพวกเขา จำนวนนี้เพื่อสร้างกลุ่มของพนักงานแต่ละคน ( 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)
ฉันพบว่าสะดวกที่จะนำข้อมูลเวิร์กกรุ๊ปทั้งหมดไปไว้ในกรอบข้อมูลเดียวเพื่อการวิเคราะห์ แต่เพื่อแยกค่าการทำงานออก:
data <- data.frame(schedule)
นี่คือที่ที่เราจะเริ่มต้นด้วยข้อมูลจริง:เราจะมีการจัดกลุ่มคนงานที่เข้ารหัสโดยdata
(หรือschedule
) และผลงานที่สังเกตได้ในwork
อาเรย์
น่าเสียดายถ้าคนงานบางคนถูกจับคู่เสมอขั้นตอนR
ของมันlm
ก็ล้มเหลวโดยมีข้อผิดพลาด เราควรตรวจสอบการจับคู่ดังกล่าวก่อน วิธีหนึ่งคือการหาคนงานที่มีความสัมพันธ์อย่างสมบูรณ์ในตาราง:
correlations <- cor(data)
outer(names(data), names(data), paste)[which(upper.tri(correlations) &
correlations >= 0.999999)]
ผลลัพธ์จะแสดงรายการของพนักงานที่จับคู่ตลอดเวลา: สามารถใช้เพื่อรวมพนักงานเหล่านี้เป็นกลุ่มเพราะอย่างน้อยเราสามารถประเมินประสิทธิภาพของแต่ละกลุ่มได้หากไม่ใช่บุคคลที่อยู่ภายใน character(0)
เราหวังว่ามันก็ถ่มน้ำลายออกมา สมมติว่ามันเป็นอย่างนั้น
หนึ่งจุดที่ลึกซึ้งโดยนัยในคำอธิบายที่กล่าวมาคือความแปรปรวนในงานที่ทำนั้นเป็นแบบหลายค่าไม่ใช่แบบเพิ่มเติม สิ่งนี้เป็นจริง: ความแปรปรวนของผลลัพธ์ของกลุ่มคนงานจำนวนมากจะสูงกว่าการเปลี่ยนแปลงในกลุ่มเล็ก ๆ ดังนั้นเราจะได้รับการประมาณที่ดีขึ้นโดยการใช้กำลังสองน้อยที่สุดแทนการยกกำลังสองธรรมดา น้ำหนักที่ดีที่สุดที่จะใช้ในรุ่นนี้คือส่วนกลับของปริมาณงาน (ในกรณีที่จำนวนงานบางอย่างเป็นศูนย์ฉันทำเหลวไหลโดยเพิ่มจำนวนเล็กน้อยเพื่อหลีกเลี่ยงการหารด้วยศูนย์)
fit <- lm(work ~ . + 0, data=data, weights=1/(max(work)/10^3+work))
fit.sum <- summary(fit)
ควรใช้เวลาหนึ่งหรือสองวินาที
ก่อนที่จะไปเราควรทำการทดสอบการวินิจฉัยของพอดี แม้ว่าการพูดถึงสิ่งเหล่านั้นจะนำเราไปไกลเกินกว่าที่นี่R
คำสั่งเดียวในการสร้างการวินิจฉัยที่มีประโยชน์คือ
plot(fit)
(จะใช้เวลาสองสามวินาที: มันเป็นชุดข้อมูลขนาดใหญ่!)
แม้ว่าโค้ดไม่กี่บรรทัดเหล่านี้จะทำงานทั้งหมดและคายความเชี่ยวชาญโดยประมาณสำหรับผู้ปฏิบัติงานแต่ละคน แต่เราไม่ต้องการสแกนผ่านเอาต์พุตจำนวน 1,000 บรรทัดทั้งหมด - อย่างน้อยก็ในทันที Let 's กราฟิกที่ใช้ในการแสดงผล
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")])
ฮิสโตแกรม (แผงด้านซ้ายล่างของรูปด้านล่าง) มีความแตกต่างระหว่างค่าประมาณและความเป็นจริงซึ่งแสดงเป็นทวีคูณของข้อผิดพลาดมาตรฐานของการประมาณ สำหรับขั้นตอนที่ดีค่าเหล่านี้มักจะอยู่ระหว่างกันเสมอ- 2 และ 2 และมีการกระจายแบบสมมาตรรอบ ๆ 0. แม้ว่ามีพนักงาน 1,000 คนที่เกี่ยวข้องเราคาดหวังอย่างเต็มที่ว่าจะเห็นความแตกต่างที่เป็นมาตรฐานเหล่านี้สองสามอย่าง3 และแม้กระทั่ง 4 ห่างจาก 0. นี่คือกรณีตรงนี้: ฮิสโตแกรมนั้นสวยอย่างที่ใคร ๆ ก็คาดหวัง (สิ่งหนึ่งอาจเป็นเรื่องที่ดี: ข้อมูลจำลองมาจากทั้งหมด แต่สมมาตรยืนยันว่าน้ำหนักทำงานได้อย่างถูกต้องการใช้ตุ้มน้ำหนักที่ไม่ถูกต้องจะมีแนวโน้มที่จะสร้างฮิสโตแกรมแบบอสมมาตร)
Scatterplot (แผงด้านล่างขวาของรูปภาพ) เปรียบเทียบความเชี่ยวชาญโดยประมาณกับที่เกิดขึ้นจริงโดยตรง แน่นอนว่าสิ่งนี้จะไม่สามารถใช้งานได้ในความเป็นจริงเพราะเราไม่ทราบถึงความเชี่ยวชาญที่แท้จริง: ในที่นี้คือพลังของการจำลองด้วยคอมพิวเตอร์ สังเกต:
หากไม่มีการเปลี่ยนแปลงแบบสุ่มในการทำงาน (ตั้งค่าcv=0
และรันโค้ดอีกครั้งเพื่อดูสิ่งนี้) scatterplot จะเป็นเส้นทแยงมุมที่สมบูรณ์แบบ การประมาณการทั้งหมดจะแม่นยำอย่างสมบูรณ์แบบ ดังนั้นการกระจายที่เห็นที่นี่สะท้อนให้เห็นถึงการเปลี่ยนแปลงที่
บางครั้งค่าที่ประมาณไว้นั้นค่อนข้างอยู่ไกลจากค่าจริง ตัวอย่างเช่นมีจุดหนึ่งอยู่ใกล้ (110, 160) ซึ่งความสามารถโดยประมาณนั้นสูงกว่าความสามารถที่แท้จริงประมาณ 50% เกือบจะหลีกเลี่ยงไม่ได้ในชุดข้อมูลขนาดใหญ่ จำสิ่งนี้ไว้ในใจหากการประมาณการจะถูกนำมาใช้เป็นรายบุคคลเช่นสำหรับการประเมินคนงาน โดยรวมแล้วการประเมินเหล่านี้อาจยอดเยี่ยม แต่ในกรณีที่การเปลี่ยนแปลงในการทำงานเกิดจากสาเหตุที่อยู่นอกเหนือการควบคุมของบุคคลใดบุคคลหนึ่งแล้วประมาณสองสามคนการประมาณการจะผิดพลาด: สูงเกินไปบางคนต่ำเกินไป และไม่มีวิธีที่จะบอกได้อย่างแม่นยำว่าใครได้รับผลกระทบ
นี่คือสี่แปลงที่สร้างขึ้นในระหว่างกระบวนการนี้
ท้ายที่สุดโปรดทราบว่าวิธีการถดถอยนี้สามารถปรับให้เข้ากับการควบคุมตัวแปรอื่น ๆ ที่อาจมีความสัมพันธ์กับผลผลิตกลุ่ม สิ่งเหล่านี้อาจรวมถึงขนาดกลุ่มระยะเวลาของความพยายามในการทำงานแต่ละครั้งตัวแปรเวลาปัจจัยสำหรับผู้จัดการของแต่ละกลุ่มและอื่น ๆ เพียงรวมไว้เป็นตัวแปรเพิ่มเติมในการถดถอย