好消息:中介效应做出来了;坏消息:是负值,我该如何向审稿人解释?

引言

前段时间有一个学生,拿着自己的分析数据来问我,“郑老师,我的中介效应分析结果和别人不一样,效应量是负的,这是正常的吗?”

当然是正常的,今天郑老师就来和大家简单聊一下什么是中介效应。

如果你也有统计问题还未解惑,欢迎评论留言,我们将选取一些共性问题,陈老师和郑老师为您解答!

首先来回顾一下中介效应的概念。

√什么是中介效应?

中介效应指的是暴露因素通过中介变量对结局产生的作用,又成为间接作用。

  • 直接作用+间接作用的比例加起来100%;

  • 间接作用比重越大说明中介效应越强,如果该比例是100%,那称之为完全中介效应。

一般情况下,该比例在0-100%之间,有些时候也会出现负值,这是怎么回事?

道理不难理解,说明间接作用和直接作用是相反的。

  • 比如直接作用是提升结局的发生概率,而间接作用会先通过影响中介的发生水平;

  • 而中介的水平的提升反而会降低结局的发生概率,因此中介作用是一种遮掩作用。

也就是说我们其实一个因素的对结局的发生可能有好有坏。

√举个例子

比如喝酒对健康的影响。

很显然,总体上喝酒是不好的,一方面它促进了癌症的发生,对健康不利。但是从另外一方面来说,它可能可以软化血管或者促进社交,对健康又是有利的。

当你说喝酒对健康的坏处的时候,社交因素的效应是遮掩效应。

这个时候就出现了负值。

道理我们都懂,不过当我们写论文的时候,遮掩效应有些时候是不好解释的。各位要是碰到中介效应比例是负的时候,写论文还得慎重。

这个统计问题就解答到这里,大家可以关注我们的公众号“医学论文与统计分析”,我们将分享更多统计学知识!


下一期我们将解答“为什么我不推荐使用逐步回归分析方法?

关于郑老师团队及公众号

全国较大的医学统计服务公众号平台,专注于医学生、医护工作者学术研究统计支持,我们是你们统计助理

郑老师团队可以提供诸多统计支持:

各式统计课程临床试验设计

构建预测模型与真实世界研究

1对1 R语言指导医学数据库挖掘

郑老师开发的超便捷免费统计工具了解一下:

www.medsta.cn/software(详情介绍)

详情联系助教小董咨询(微信号aq566665

图片

点个“图片”,给小编加图片

### 解决BP神经网络预测结果为负值的问题 #### 原因分析 BP神经网络预测出现负值可能由多种因素引起。如果期望的结果应始终大于零,则需考虑以下几个方面: - **激活函数的选择不当**:某些激活函数可能会导致输出范围超出预期区间,从而产生负值[^1]。 - **数据预处理不合理**:在训练之前未对原始数据进行适当缩放或标准化可能导致模型学习到错误模式,在测试阶段生成异常数[^3]。 - **权重初始化问题**:初始随机分配给各层节点之间的连接强度(即权重)不合适也可能引发此类现象;特别是当这些参数含有较大绝对时更容易造成极端输出。 - **目标变量本身特性影响**:即使经过上述调整仍无法完全消除负数情况的话,还需审视实际业务逻辑下是否存在允许取0甚至更小的可能性以及相应处理机制的设计合理性[^4]。 #### 解决策略 针对以上提到的各种可能性,可以采取如下措施来改进算法性能并防止不合理的负向估计发生: ##### 调整激活函数 选择合适的激活函数对于控制输出至关重要。例如ReLU及其变体能够有效抑制小于等于零的部分,而Softplus则能平滑地映射任意实数至正域内。具体实现可参照下面代码片段所示方法修改隐藏层乃至输出单元所使用的转换公式。 ```matlab % 使用 'logsig' 或其他仅返回非负区间的传递函数替代默认设置 net.layers{i}.transferFcn = 'relu'; % ReLU 函数用于中间层 net.layers{end}.transferFcn = 'softplus'; % Softplus 函数应用于最后一层 ``` ##### 数据规范化/标准化 确保输入特征已被适当地归一化或标准化有助于稳定收敛过程,并减少由于量纲差异带来的干扰效应。这一步骤通常应在构建网络结构前完成,以便让所有维度上的分布尽可能接近标准正态分布形式。 ```matlab % 归一化操作示例 [Pn,minp,maxp,Tn,mint,maxt]=premnmx(P,T); ... [Yn,Y] = postmnmx(Yn,minp,maxp); % 反归一化得到最终预测结果 ``` ##### 权重约束与初始化优化 通过引入L1/L2范数惩罚项限制过大的权幅度,或者采用Xavier/Glorot均匀分布等方式精心挑选起始点位置均有利于缓解此状况的发生概率。此外还可以尝试降低学习率以获得更加稳健的学习轨迹。 ```matlab % 设置自定义的权重初始化策略 initFunc = @(sz) rand(sz).*sqrt(6./(sum(sz))); net.initFcn = initFunc; ``` ##### 合理设定损失函数 最后一点就是重新评估当前选用的成本度量准则是否适合特定应用场景下的需求特点。比如MSE虽然简单易懂但在面对严格限定上下界的回归任务时不一定是最佳选项。此时不妨转而考察MAE、Huber Loss甚至是专门为某类特殊情形定制化的复合型评价指标体系。 ```matlab % 自定义损失函数 (假设已知最小minVal=0) customLossFunction = @(yTrue,yPred) mean((max(yTrue-minVal, 0)-max(yPred-minVal, 0)).^2); options.trainParam.performFcn = customLossFunction; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值