今天给大家分享一个新的统计方法,叫做响应面分析,响应面分析是用来探究变量一致性假设的(Congruence hypotheses)。本身是一个工程学方法,目前在组织行为学,管理,市场营销等等领域中使用越来越多。

Congruence hypotheses state that the agreement (i.e., congruence) between two constructs should positively (or negatively) affect some outcome variable. Such hypotheses play a central role in many disciplines, for example, Marketing (Kim & Hsieh, 2003), Organizational Behavior (Caniëls & Veld, 2019), and Purchasing (Caniëls, Vos, Schiele, & Pulles, 2018).

响应面分析尤其是在探究一致性和不一致性作用的时候是最佳选择,就是说比如你有两个自变量,一个因变量,你想看看如果这两个自变量都同时一致性变化(同时增大或减小)和同时不一致变化(一个增大另一个减小)的情况下,因变量如何变化。这个时候一定记得使用响应面分析。

response surface analysis (RSA) is an approach that allows examining the extent to which combinations of two predictive variables relate to one outcome variable. The method is particularly interesting in cases where (in)congruence between the two predictive variables is a central consideration of the study.

一致性假设的检验需要涉及到多项式回归,而响应面分析的优势在于可以其可以将多项式回归的结果用3D画出来,从而使得我们看清楚各种自变量组合情形下因变量的变化情况。并且通过多项式的系数情况对相应假设进行证明。

The foundation of RSA is the visualization of the results of the regression equation on a three-dimensional graph . Instead of directly interpreting the results of the polynomial regression analysis, the coefficients are used to examine what is called a ‘response surface pattern’ . The response surface is a graph that provides a three-dimensional visual representation of the data to aid interpretation

并且响应面分析还可以检验交互,且不受线性假设限制,今天结合两篇比较有意思的文献给大家分享响应面分析的理解和具体做法。

理论理解

想想如果你不知道响应面分析,你想研究两个变量的不一致对结局的影响你会怎么做?比如你想研究父母期望x1和儿童兴趣x2对儿童成就y的影响,想要验证是不是父母期望和儿童兴趣的一致性越强,将来儿童的成就越高?你怎么做?

计算一个新变量?x1-x2再取个绝对值,作为新的自变量,叫做两者差距?用这个新变量去做y的回归分析?

估计大部分同学首先想到的就是这么样操作。

这里面有两个问题:1是信息丢失了;2是你不能知道同一个效果到底是x1比x2大造成的,还是x2比x1大造成的。

Initially, these approaches compute two predictor variables into a single score, which reduces the available information. For this reason, the difference scores confuse the effects of each of the component measures on the result. The difference scores do not tell us the extent to which each of the component measures contributes to the outcome variable

所以说这个想法就不好,不能说不对哈,只能说不好。

此时最正确的方法就是使用多项式回归:

上面的式子中xy为两个自变量,Z是因变量,式子中还有xy的2次项,对于这么一个式子我们可以对其图形化表达

图中两个自变量在xy轴上,因变量或者叫模型的响应值在z轴上,这样所有xy组合取值对应的模型响应值便成了一个曲面,叫做响应面。

比如对应特定的xy在底面对应的圈圈,其对应的Z值就是响应面上的星星。

看图的时候有两条线值得我们格外关注:图中的一致性线Line of congruence (LOC)和不一致线Line of incongruence (LOIC)

  • 一致性线

一致性线就是所有xy相等的点组成的线,就是xy平面上的一条45°线,这条线对应的响应面就表示一致性变化时z值的变化。在图中就是上图中的红线对应的响应面,可以看到在xy一致的时候Z值始终是最大的。

  • 不一致线

不一致线就是所有xy互为相反数的点组成的直线,就是xy平面上和一致性线垂直的线,在上图中就是xy平面上的蓝色的线,可以看到xy的差距越大,Z的值越低。

通过这么一种可视化的表达,我们就可以非常容易的知晓xy所有变化情况下,Z的具体变化情况。

并且结合多项式模型的系数情况我们还可以对相应的假设进行检验

我们回到一致性线所对应的响应面,在这个响应面上x=y,Z的表达式就成了一个二次函数:

Z = a1X + a2X2,其中a1 = b1 + b2 and a2 = b3 + b4 + b5

系数a2决定了对应的响应面是直线还是曲线,a1就决定了对应的响应面的斜率。

再看不一致线所对应的响应面,在这个响应面上x=-y,Z的表达式也是一个二次函数:

Z = a3X + a4X2,其中a3 = b1-b2 and a4 = b3-b4 + b5

系数a4决定了对应的响应面是直线还是曲线,a3就决定了对应的响应面的斜率

根据系数的不同组合反应在图中就有响应面的不同的形状:看下图,比如a1>0(一致性线对应的Z值为斜率向上的直线),a4<0(非一致性线对应的响应面为开口向下的曲线)的时候对应的图就是下面A图;比如a2和a4都<0时两条线对应的响应面都为开口朝下的曲线,整个响应面的形状就是下面D图:等等:

通过上面介绍的系数我们就可以对相应假设进行验证,接着往下我们来看两篇实际例文。

一篇文献名如下:

Bai, Q., Lei, L., Hsueh, F. H., Yu, X., Hu, H., Wang, X., & Wang, P. (2020). Parent-adolescent congruence in phubbing and adolescents’ depressive symptoms: A moderated polynomial regression with response surface analyses. Journal of Affective Disorders, 275, 127-135.

文章做了低头族这一行为习惯对抑郁发生的影响,同时考虑了父母低头和孩子低头,在形成了多项式回归模型后,选取变量进行了响应面分析,主要结果长这样:

作者把关心的两个自变量一个是父母低头,另一个是孩子自己低头,放在xy轴上;把因变量孩子抑郁放在z轴上,通过这样一种图形化表示就可以看得出来,x和y一致增大的时候和xy变化不一致的时候抑郁的变化,从而回答研究问题。

结果呈现上作者报告了一致性线的系数和p值,从而回答假设4:

就是一致性线的斜率是显著的正值,就意味着家长和孩子都是低头族(一致性的低头)孩子抑郁风险会增大。同时还有不一致性线的系数也是同理理解。

作者通过这么一个分析还检验了调节作用,方法部分的原文叙述见下图,用的方法叫做hierarchical regression analysis:

就是嵌套几个回归,然后比较模型的R方从而数据驱动的角度判断交互项是不是应该存在。原理在于:加上交互项后R方显著变大,说明交互项的加入可以显著地增大模型的解释力度。

再看一篇管理学领域的文章:

Lee, K., Woo, H. G., & Joshi, K. (2017). Pro-innovation culture, ambidexterity and new product development performance: Polynomial regression and response surface analysis. European Management Journal, 35(2), 249-260.

在验证下面两个假设的时候文章使用了响应面分析:

NPD performance will increase as both exploitation and exploration increase simultaneously.

NPD performance will decrease as the imbalance between exploitation and exploration increases in either direction.

依然是探讨两个自变量变化趋势的一致和不一致问题,作者给了图和表格来回答研究假设:

原文中假设5的意思是两个自变量同时变大的情况下,因变量也会随之增大,为了验证这个假设,文章是令将原来的多项式回归中的两个自变量相等,简化方程后看回归系数,回归方程简化后就是一个二次函数了,此时满足假设5的条件就是二次项的系数得为0(二次项得不显著,不然函数是个曲线,就不满足假设5因变量一直增长的假设,请回忆初中二次函数的知识点)然后一次项得是负值。

也就是上表中b1+b2得是正的,然后b3+b4+b5得不显著,因为第二个条件不满足所以作者得到了假设5不成立的结论。

同理,假设6认为,两个自变量不一致的情况下,因变量会变小,为了验证这个假设,文章是令两个自变量为相反数,此时要满足假设6的条件就需要,简化后的方程的一次项系数应该为显著的负值,二次项应该为0或显著负值。

也就是上表中b1-b2应该为显著负值,然后b3-b4+b5应该为0或负值,因为两个条件都不满足所以作者得到假设6不成立的结论。

通过这样的一图一表,文章就完成了对研究问题的回答。以上就是响应面分析的两个例文的简要介绍,详细写作请自己扒拉原文瞅瞅。我们接着看做法。

做法步骤

spss是可以做响应面分析的哈,不过我们依然只写用R的方法,做响应面分析步骤有二:

conceptually RSA is divided into two stages: (a) running a polynomial regression model and (b) using the results of the model to generate a response surface and analyze the importance of the effects

在R中做响应面分析可以用rsm包,第一步是拟合带有2次项的多项式回归,比如我现在有如下数据,x,y,z三个变量

首先我需要跑一个二次多项式回归:

rsm(z ~ SO(x, y), data = data)

运行后直接summary上面函数生成的对象即可得到二次多项式的结果

可以看到xy每个项的系数都有展示,我们就是结合这些系数来验证我们的研究假设。

第二步便是将模型结果通过响应面进行可视化展示,代码如下:

persp (rsm, ~x+y,
col = color,main="实例操练",
xlab=c("关注公众号","Codewar"),zlab = "示例",
r=50,d=30,expand=1,box = T,
#ltheta=10,lphi=99,
shade=0.1,theta=-15,phi=15,
#axes=F,
contour=list(z="bottom"),
cex.lab=1,
cex.axis=0.5,
ticktype="detailed",
at = xs(rsm))

上面代码中rsm为模型对象。运行后即可出响应面图如下:

通过上图就可以很直观地看到xy不同变化时,z值的对应变化。

到此响应面分析结束。

R数据分析:多项式回归与响应面分析的理解与实操的更多相关文章

  1. R数据分析:纵向分类结局的分析-马尔可夫多态模型的理解与实操

    今天要给大家分享的统计方法是马尔可夫多态模型,思路来源是下面这篇文章: Ward DD, Wallace LMK, Rockwood K Cumulative health deficits, APO ...

  2. R数据分析:生存分析的列线图的理解与绘制详细教程

    列线图作为一个非常简单明了的临床辅助决策工具,在临床中用的(发文章的)还是比较多的,尤其是肿瘤预后: Nomograms are widely used for cancer prognosis, p ...

  3. Android ANR(应用无响应)解决分析【转】

    本文转载自:https://blog.csdn.net/u014630142/article/details/81709459 来自: http://blog.csdn.net/tjy1985/art ...

  4. HTTP 请求报文和响应报文分析和解刨!!

    http请求和响应报文分析 一>http请求报文主要包括三个部分:1.请求行:2.请求头:3;请求体: 1,请求行一般包括三个部分:请求方式:请求url : http协议版本. 请求方法:大部分 ...

  5. R数据分析:跟随top期刊手把手教你做一个临床预测模型

    临床预测模型也是大家比较感兴趣的,今天就带着大家看一篇临床预测模型的文章,并且用一个例子给大家过一遍做法. 这篇文章来自护理领域顶级期刊的文章,文章名在下面 Ballesta-Castillejos ...

  6. R数据分析:潜类别轨迹模型LCTM的做法,实例解析

    最近看了好多潜类别轨迹latent class trajectory models的文章,发现这个方法和我之前常用的横断面数据的潜类别和潜剖面分析完全不是一个东西,做纵向轨迹的正宗流派还是这个方法,当 ...

  7. R数据分析:二分类因变量的混合效应,多水平logistics模型介绍

    今天给大家写广义混合效应模型Generalised Linear Random Intercept Model的第一部分 ,混合效应logistics回归模型,这个和线性混合效应模型一样也有好几个叫法 ...

  8. R数据分析:如何简洁高效地展示统计结果

    之前给大家写过一篇数据清洗的文章,解决的问题是你拿到原始数据后如何快速地对数据进行处理,处理到你基本上可以拿来分析的地步,其中介绍了如何选变量如何筛选个案,变量重新编码,如何去重,如何替换缺失值,如何 ...

  9. R数据分析:临床预测模型中校准曲线和DCA曲线的意义与做法

    之前给大家写过一个临床预测模型:R数据分析:跟随top期刊手把手教你做一个临床预测模型,里面其实都是比较基础的模型判别能力discrimination的一些指标,那么今天就再进一步,给大家分享一些和临 ...

  10. R数据分析:扫盲贴,什么是多重插补

    好多同学跑来问,用spss的时候使用多重插补的数据集,怎么选怎么用?是不是简单的选一个做分析?今天写写这个问题. 什么时候用多重插补 首先回顾下三种缺失机制或者叫缺失类型: 上面的内容之前写过,这儿就 ...

随机推荐

  1. webgl 系列 —— 绘制猫

    其他章节请看: webgl 系列 绘制猫 上文我们了解了如何绘制渐变彩色三角形,明白了图形装配.光栅化,以及片元着色器计算片元的颜色. 现在如果让你绘制如下一只猫.难道绘制很多三角形,然后指定它们的颜 ...

  2. 【单元测试】Junit 4(八)--junit4 内置Rule

    1.0 Rules ​ Rules允许非常灵活地添加或重新定义一个测试类中每个测试方法的行为.测试人员可以重复使用或扩展下面提供的Rules之一,或编写自己的Rules. 1.1 TestName ​ ...

  3. PTA题目总结

    (1)前言:第一次题目集主要考察JAVA的一些语法知识,比如,控制台的输入,输出时保留两位小数,数组的使用,第十题有点难度,当时没写出来,现在想想 也还好,就是读懂题目有点费劲,第一次题目的题量比较大 ...

  4. ACM-学习记录-数据结构-1

    AOJ-ALDS1_1_D Maximum Profit 本题主要考虑要将复杂度降到O(n),否则过不了最后五组数据 #include<iostream> #include<bits ...

  5. MySQL四种日志binlog/redolog/relaylog/undolog

    优质博文:IT-BLOG-CN 一.binlog binlog记录数据库表结构和表数据变更,比如update/delete/insert/truncate/create,它不会记录select.存储着 ...

  6. Python 3.11.官方文档

    索引 模块 | Python » English Spanish French Japanese Korean Brazilian Portuguese Simplified Chinese Trad ...

  7. USART串口_第三课

    串口发送与接收 1.阻塞式发送 1.1.练习receive() 和Transmit() 测试1:测试接收发送函数 receive() 和 Transmit() 在main()中写入测试代码:将stm3 ...

  8. 对抗 ChatGPT,免费体验 Claude

    对抗 ChatGPT,免费体验 Claude Claude 是 Anthropic 构建的大型语言模型(LLM),对标ChatGPT. Anthropic 创始团队多是前openai研究员和工程师,C ...

  9. 记录 跨境猴 shopee 虾皮 货代 贴单 仓储 打包系统 介绍

    shopee虾皮|lazada|shopify代打包贴单仓储系统(简称:跨境猴)基于ThinkPHP6.0+AdminLTE-2.3.11+JQuery+PHP7.0+Swoole+Mysql5.5+ ...

  10. C++ sizeof与strlen,并借此明晰内存对齐

    前言 sizeof()与strlen()都是为了获取对象的长度.在正常编写C++的算法程序代码时,可能这两个都很少用到,因为各种stl容器的封装已经给了我们很大的便利,比如我们在想要获取自定义的vec ...