สมมติว่าเรามีสองชุดข้อมูล A1 และ A2 ขนาด b และ a ตามลำดับ เราต้องการหาค่าเฉลี่ยและความแปรปรวนของชุดข้อมูลรวม
เช่น หากอินพุตคือ A1 = [24, 46, 35, 79, 13, 77, 35] และ A2 = [66, 68, 35, 24, 46] ผลลัพธ์จะเป็น Mean = [44.1429, 47.8], sd = [548.694, 294.56], combined mean = 45.6667, d1_square = 2.322, d2_square = 4.5511, combined_var = 446.056
ขั้นตอนการแก้ปัญหา
- สร้างฟังก์ชัน
mean(arr)คืนค่าเฉลี่ยของอาร์เรย์ - สร้างฟังก์ชัน
sd(arr, n)คำนวณความแปรปรวน (population variance) - ในฟังก์ชันหลัก:
- คำนวณ
mean1,mean2และแสดงผล - คำนวณ
sd1,sd2และแสดงผล - คำนวณ
combinedMean = (n*mean1 + m*mean2) / (n+m) - คำนวณ
d1_square = (mean1 - combinedMean)^2,d2_square = (mean2 - combinedMean)^2 - คำนวณ
combined_var = (n*(sd1 + d1_square) + m*(sd2 + d2_square)) / (n+m)
- คำนวณ
ตัวอย่างโค้ด Python
def mean(arr):
return sum(arr) / len(arr)
def sd(arr, n):
sum_val = 0
m = mean(arr)
for i in range(n):
sum_val += (arr[i] - m) ** 2
return sum_val / n
def combinedVariance(A1, A2):
n = len(A1)
m = len(A2)
mean1 = mean(A1)
mean2 = mean(A2)
print("mean_1:", round(mean1, 2), "mean_2:", round(mean2, 2))
sd1 = sd(A1, n)
sd2 = sd(A2, m)
print("sd_1:", round(sd1, 2), "sd_2:", round(sd2, 2))
combinedMean = (n * mean1 + m * mean2) / (n + m)
print("Combined Mean:", round(combinedMean, 2))
d1_square = (mean1 - combinedMean) ** 2
d2_square = (mean2 - combinedMean) ** 2
print("d1_square:", round(d1_square, 2), "d2_square:", round(d2_square, 2))
comb_var = (n * (sd1 + d1_square) + m * (sd2 + d2_square)) / (n + m)
print("Combined Variance:", round(comb_var, 2))
A1 = [24, 46, 35, 79, 13, 77, 35]
A2 = [66, 68, 35, 24, 46]
combinedVariance(A1, A2)
อินพุต
[24, 46, 35, 79, 13, 77, 35], [66, 68, 35, 24, 46]
เอาต์พุต
mean_1: 44.14 mean_2: 47.8 sd_1: 548.69 sd_2: 294.56 Combined Mean: 45.67 d1_square: 2.32 d2_square: 4.55 Combined Variance: 446.06