Skip to main content
 首页 » 编程设计

python之非正态分布中因变量和自变量之间的相关性

2025年05月04日10mayingbao

编辑和更新:

我正在尝试使用 Python 或 SPSS 来衡量某些因素对一个或多个指标的有效性。我的数据集包含 100 条接受过不同时间(例如三个月)治疗的患者记录。数据集如下所示:

     a1  a2  a3  b1  b2  b3  metric1 metric2 metric3 
1    1.2 2.3 3.5 90  58  29  2.1     3.2     1.2   
2    3.2 3.4 1.5 58  54  39  3.1     4.2     3.2   
... 
100  3.1 1.3 2.5 36  63  45  5.1     4.2     3.2   

如您所见,每个患者的因子 a(假设为非正态分布的葡萄糖)和因子 b(假设为正态分布的治疗或药物)被记录了三次。在每位患者的就诊中,还记录了一个指标(例如健康指标)。现在我想知道因素 b 在三次访问期间如何影响我的数据集中的指标。例如,因素 b 与此数据集中的指标之间是否存在任何(共)关系?如果是这样,它在多大程度上是重要的?

我尝试了几种方法,包括单向 Annova 或寻找样本均值之间的相关性,但没有成功。我知道这类数据应该用重复测量法来分析,但现在我有多个非正态分布的自变量,我有点困惑。我应该利用什么统计方法?

感谢任何帮助!

请您参考如下方法:

您目前拥有宽格式的数据,我没有用 Python 进行统计,但对于 R,您需要长格式的数据才能实现大多数功能。

将您的数据框转换为 long。我想你可以用 pd.melt() 做到这一点

df["Patient"] = df.index + 1 
pd.melt(df, id_vars=["Patient"], value_vars=['b1', 'b2', 'b3'], var_name='Repeated', value_name='Glucose') 

这是错误的,因为你需要为你的治疗做同样的事情,不确定如何做两次,你可以通过分离 DF 然后再次合并来做到这一点。

您的目标数据框应如下所示:

Patient     Glucose  GRepeated  Treatment  TReapeatedb1   Metric MRepeated 
1           1.2      a1          90        b1             3.2     metric1   
2           3.2      a2          54        b2             4.2     metric2 
... 
100         3.1      a3          45        b3             3.2     metric3