# -*- coding: utf-8 -*-
"""
Created on Mon Mar 30 14:57:51 2020
@author: weisssun
"""
import pandas as pd
from scipy import stats
#导入进行T检验的stats模块
import csv
df = pd.read_excel(r'D:\Python\datafile\游戏.xlsx')
#读取原始数据文件
#行是个案,列是自变量和因变量
#自变量有2个水平
indep_names = ['自变量1',
'自变量2',
'自变量3',
]
#自变量所在列,列名的列表
depend_names = ['因变量1',
'因变量2',
'因变量2',
]
#因变量所在列,列名的列表
results = []
#将t检验结果保存在列表results中,最后写入csv
for depend_name in depend_names:
#因变量列表中的因变量
for indep_name in indep_names:
#自变量列表中的自变量
sig = ''
#sig存储显著性判断结果
group1 = df[df[indep_name] == 1][depend_name]
#组1,当自变量 = 1时对应的的因变量组
n_group1 = len(group1)
#组1的样本量
mean_group1 = group1.mean()
#组1的平均值
std_group1 = group1.std()
#组1的标准差
group2 = df[df[indep_name] == 0][depend_name]
#组2,当自变量 = 0时对应的的因变量组
n_group2 = len(group2)
#组2的样本量
mean_group2 = group2.mean()
#组2的平均值
std_group2 = group2.std()
#组2的标准差
eval_stat, eval_p = stats.levene(group1, group2)
#对组1, 组2进行方差齐性检验
if eval_p > 0.05:
stat_var, p_var = stats.ttest_ind(group1, group2)
#如果方差齐性,使用默认的独立样本t检验参数
else:
stat_var, p_var = stats.ttest_ind(group1, group2, equal_var = False)
#如果方差不齐性, 设置equal_var = False
if p_var <= 0.05:
sig = '显著'
#如果t检验结果 p值 <= 0.05,sig赋值为 '显著'
t_df = n_group1 + n_group2 -2
#df值 = 组1样本量 + 组2样本量 -2
result = [depend_name, indep_name, n_group1, mean_group1, std_group1, n_group2, mean_group2, std_group2, t_df, stat_var, p_var, sig]
#将结果存储在列表result中
results.append(result)
#将结果增加到results中
with open(r'D:\Python\datafile\t检验游戏.csv', 'w', newline='',encoding='gbk') as f:
writer = csv.writer(f)
for result in results:
writer.writerow(result)
#将结果存为csv文件