แนวคิด
ตัดค่าขอบ (trim) K ตัวจากหน้าและหลังลิสต์ แล้วนำผลรวมของค่าที่ตัดออกไปกระจายเพิ่มเข้าไปในค่าที่เหลืออยู่ โดยเท่าๆ กัน
ตัวอย่างโค้ด
my_list = [11, 26, 24, 75, 96, 37, 48, 29, 93]
print("ลิสต์ต้นฉบับ:", my_list)
key = 2
print("ค่า K:", key)
full_sum = sum(my_list)
trimmed_list = my_list[key:len(my_list) - key] # ตัด 2 หน้า 2 หลัง
trim_sum = sum(trimmed_list)
# ค่าที่ต้องเพิ่มเข้าแต่ละตัวใน trimmed_list
add_value = (full_sum - trim_sum) / len(trimmed_list)
result = [ele + add_value for ele in trimmed_list]
print("ผลลัพธ์:", result)
ผลลัพธ์
ลิสต์ต้นฉบับ: [11, 26, 24, 75, 96, 37, 48, 29, 93]
ค่า K: 2
ผลลัพธ์: [55.8, 106.8, 127.8, 68.8, 79.8]
คำอธิบายขั้นตอน
full_sum = 439(ผลรวมทั้งหมด)trimmed_list = [24, 75, 96, 37, 48](index 2 ถึง 6)trim_sum = 280add_value = (439 - 280) / 5 = 31.8- บวก 31.8 เข้าแต่ละตัวใน trimmed_list
การประยุกต์
ใช้ในสถิติ trimmed mean หรือ winsorizing ที่ต้องการรักษาผลรวมรวมไว้แต่ลดผลของค่าคיצוניים (outliers)