利用python进行显著性分析
实验数据
做的是朋友的 呃呃植物什么什么实验 ,相关数据已经打码,最右侧的一列是 spss 的显著性分析的结果

代码
最终设想是能实现和 SPSS 一样或者近似的结果
import scipy.stats as stats import pandas as pd def i_max(l): # 求出最大的数的下标 m = 0 for i in range(len(l)): if l[i] > l[m]: m = i return m d = [] # 后面需要的数据 ave = [] # 后面需要的平均数 excel = pd.DataFrame(pd.read_excel("~/Desktop/a.xlsx")) # 读取桌面上的Excel文件 for i in range(0, 34, 3): t = [] ave.append(float(excel.iloc[i, 5])) for j in range(3): t.append(float(excel.iloc[i + j, 3])) d.append(t) index = [i_max(ave)] alp = ['a', 'b', 'c', 'd', 'e', 'f'] for i in range(len(d) - 1): j = i_max(ave) # 找到最大的数的序号 ave[j] = 0.0 # 把这个数记为0.0 下次再找,这个数就不是最大的了 k = i_max(ave) # 现在找到最大的,其实是最开始的次大的数,但是我们标记成0.0,那么下次又可以找到这个数 index.append(k) # 记录每次比较的两个结果的序号 r, p = stats.pearsonr(d[j], d[k]) # pearsonr函数是求的皮尔逊相关系数,返回两个值,r是相关系数,p是显著系数 print(j + 1, k + 1, r, p) # 目前的结果前 4个 是和 SPSS 一样的,后面不一样的结果会慢慢找原因,然后修正 # ...未完
结果:
10 4 -0.77883 0.82213 4 12 -0.67776 0.034336 12 11 -0.21831 0.63456 11 7 -0.68324 0.21649 7 5 0.21752 0.15013 5 6 0.13995 0.30337 6 1 -0. 0.60344 1 2 -0.4344 0.27089 2 3 0.7284 0. 3 8 -0.51675 0.06164 8 9 0.38105 0.0032062
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/227679.html原文链接:https://javaforall.net
