将BICAMS分数转换为z分数的工具

BICAMSZ的Python项目详细描述


BICAMSZ:BICAMSZ的z变换包

目录

  1. About the creators
  2. Project explanation
  3. Considerations
  4. Deliverables
  5. Required Data
  6. Code explanation

简介

AIMS-VUB

首先,非常感谢您有兴趣代表布鲁塞尔大学(VUB)的人工智能和临床科学建模实验室(AIMS)使用我们的项目。我们的目标是通过对神经生理学和脑成像数据进行相关和先进的建模,最大限度地促进神经退行性疾病的最佳临床护理,特别关注多发性硬化症。此外,鉴于该领域的繁荣和对我们研究的普遍理解,我们通过共享代码和积极地在我们的AIMS website上进行科学交流,努力为开放、可复制和透明的科学做出贡献。在

项目

这个项目是基于Costers et al. 2017
要了解转换,请访问我们的streamlit application!在

简言之,通过校正年龄、性别和教育程度,将测试分数转换为z分数,可以比较受试者之间的认知得分。可区分以下阶段:

  1. 原始分数的缩放
  2. 根据受试者的年龄、性别和受教育程度,预测受试者通常应获得的分数。在
  3. 得到z得分:从量表得分(1)中减去预测得分(2),除以回归模型的残差

重要注意事项

每个测试的转换表(用于原始分数的标度)和回归线的拟合得出回归模型内特征(年龄、年龄、性别、教育程度)的权重都依赖于97名比利时荷兰语健康对照组的样本数据。在转换受试者的z分数时,应考虑该人群的人口统计数据(尤其是年龄和教育程度,分别为43.52±12.69和14.69±1.61(平均值±std))。我们强调,当参与者的特征在年龄或教育水平上具有极端值(非常低或非常高)时,在计算z分数时要特别小心。在

此外,本文的测试条件非常严格。E、 g.对于SDMT,不允许患者通过手指指示需要转换为数字的符号来记录他们在试卷上的进展情况。请确保BICAMS的每一个子测试都经过仔细的管理,以确保正确执行。此外,在本项目中,只有荷兰版本的CVLT-II才有资格进行z-标准化。在

可交付成果

有了这个代码,你可以很容易地将bicam上的认知分数转换成z分数。在

所需数据

以下数据为绝对要求:

  • 年龄:年(整数)
  • 性别:
    • 1=男性
    • 2=女性
  • 教育程度(教育年限):
    • 6=小学
    • 12=高中
    • 13=专业教育
    • 15=学士
    • 17=主控
    • 21=博士学位

此外,还需要以下3个分数中至少1个的数据:

  • sdmt:原始sdmt分数
  • bvmt:原始bvmt分数
  • cvlt:原始cvlt分数

代码说明

{cd1>存在于所有代码中

  • data_check:检查数据中是否有不可能的值,包括nan。如果问题仍然存在,代码将自动抛出警告并返回nan。在
  • normalization_pipeline:整个管道。使用以下内部函数:
    • _check_impossible_values_or_nans
    • _get_conversion_table:下面是更多信息
    • _get_expected_score
    • _raw_to_scaled
    • _to_z_score
    • _impaired_or_not
  • pipeline_for_pandas:这允许将管道应用于.apply()函数。请使用以下代码片段:
    1. new_columns = ['z_test', 'imp_test']:用正在转换的测试替换“test”
    2. input_columns = ['column_name_age', 'column_name_sex', 'column_name_edu', 'column_name_test']:根据列名调整名称。在
    3. df[new_columns] = df[input_columns].apply(pipeline_for_pandas, args = (test, z_cutoff), axis = 1):将test替换为字符串“sdmt”、“bvmt”或“cvlt”。同时选择截止线。在

加载三个主要函数:from BICAMSZ import normalization_pipeline, data_check, pipeline_for_pandas
有关这些函数的信息:请使用help(...function...)查看docstrings。在

代码示例:

from BICAMSZ import normalization_pipeline, data_check, pipeline_for_pandas
import pandas as pd

data_dict = {'age': [55,70,34,80],
             'sex': [1,2,2,1],
             'education': [17, 6, 13, 21],
             'sdmt': [32, 49, 81, 70],
             'bvmt': [25, 36, 30, 12],
             'cvlt': [41, 22, 75, 60]}
df = pd.DataFrame(data_dict)

# 0. Check if your data is ready for conversion, per column. For example:
data_check(df['sdmt'], 'sdmt')  

# 1. Using normalization_pipeline per case
z_score, impairment_bool = normalization_pipeline(70, 2, 13, 53, 'sdmt', -1.5)

# 2. Using pipeline_for_pandas to immediately convert entire dataframe
new_columns_sdmt = ['z_sdmt', 'imp_sdmt']
new_columns_bvmt = ['z_bvmt', 'imp_bvmt']
new_columns_cvlt = ['z_cvlt', 'imp_cvlt']
input_columns_sdmt = ['age', 'sex', 'education', 'sdmt']
input_columns_bvmt = ['age', 'sex', 'education', 'bvmt']
input_columns_cvlt = ['age', 'sex', 'education', 'cvlt']

df[new_columns_sdmt] = df[input_columns_sdmt].apply(pipeline_for_pandas, args=('sdmt', -1.5), axis=1)
df[new_columns_bvmt] = df[input_columns_bvmt].apply(pipeline_for_pandas, args=('bvmt', -1.5), axis=1)
df[new_columns_cvlt] = df[input_columns_cvlt].apply(pipeline_for_pandas, args=('cvlt', -1.5), axis=1)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java是从此类字符串中提取数据的最佳方法   filenotfoundexception Java FileOutputStream Windows/Linux   java在SQLite数据库Android SDK中搜索特定字符串   java使用键值访问jsp中Map<Long,Map<String,Object>>的内容   java奇怪的HTMLeditor工具包问题   在java中使用数组只计算字母   每个应用程序都可以有自己独立的Java SDK吗   java如何将jasper报告生成的PDF文件保存在一个项目文件夹中   java BigDecimal包装器:静态字段为零   解码Base64图像时出现java IllegalArgumentException(非法的Base64字符)   将int转换为字节在Java和Actionscript中产生不同的结果   java什么使不可变对象在没有安全发布技术的情况下发布?   java将字节数据写入目录   一个计算器中有多个操作的java问题   面向对象Java重写是如何工作的   带hibernate的java ClassCastException   指向最后一个对象的java对象列表   java单元测试spring项目中的Get请求