# 完整的檢驗作業
# 題目要求:
# 比較兩個總體均值差異顯著性檢驗的函式
# 要求函式輸入引數只有兩個,1.data 2.alph=0.05
# 輸出結果:樣本均值,樣本方差,合併方差,檢驗統計量,t分佈臨界值,結論
# 檢驗函式編寫
# 法1 自寫函式t.test檢驗函式
# 這裡傳入資料的列名為a,b
t_test_fun = function(data,alph=0.05){
# 列資料作為計算物件
a = data$a
b = data$b
# 1.計算基本量
# 1.1向量a,b長度
n1 = length(a)
n2 = length(b)
# 1.2計算a,b均值
a_bar = mean(a)
b_bar = mean(b)
message('a組均值:',a_bar,'\n')
message('b組均值:',b_bar,'\n')
# 計算a,b方差
var1 = var(a)
var2 = var(b)
message('a組方差:',var1,'\n')
message('b組方差:',var2,'\n')
# 求合併方差(方差齊性)
concat_vars = (var1*(n1-1)+var2*(n2-1))/(n1+n2-2)
message('聯合方差為:',concat_vars,'\n')
# 計算t統計量
t_statistic = (a_bar-b_bar)/sqrt(concat_vars*(1/n1+1/n2))
message('t統計量為:',t_statistic,'\n')
# 計算自由度
v = (n1+n2-2)
message('自由度為:',v,'\n')
#t分佈臨界值
t_value = qt(alph,v)
if (abs(t_statistic) > abs(t_value)){
print('拒絕原假設,兩組資料之間存在顯著性差異')
}else{
print('接受原假設,兩組資料之間不存在顯著性差異')
}
}
# 產生隨機數
set.seed(0)
A = round(runif(100,20,40))
B = round(runif(100,20,40))
data1 = data.frame(a = A,b = B)
t_test_fun(data1,alph = 0.05)
# 法2 驗證
t.test(data1$a,data1$b,alternative = 'two.sided',
conf.level = 0.95)