R数据分析:潜在转化分析LTA的做法和解释(一)

人工智能43

之前给大家写了很多潜在类别分析的教程Mplus教程:如何做潜在类别分析LCA R数据分析:用R语言做潜类别分析LCA Mplus数据分析:潜在类别分析(LCA)流程(详细版) R数据分析:再写潜在类别分析LCA的做法与解释,今天继续给大家拓展一步。

今天要介绍的就是潜在转换分析,这个东西就是LCA的纵向版本。是一个专门用来研究质变的统计技巧。有一句话叫做量变起质变,你怎么知道质变到底发生没有?就用潜在转换分析。

Latent transition analysis is an extension of LCA in which you estimate the probabilities of transitions among behavior patterns over time.

潜在转换分析latent transition analysis (LTA)

潜在转化分析是潜在范畴分析的纵向版本。纵向研究设计的目的之一是观察变化。相应地,使用势转换分析来观察势类别的变化。

[En]

Potential transformation analysis is the vertical version of potential category analysis. One of the purposes of longitudinal research design is to look at changes. Accordingly, potential transformation analysis is used to see the changes of potential categories.

我们再来回忆一张图:

R数据分析:潜在转化分析LTA的做法和解释(一)

上图中我们知道根据潜变量是分类还是连续的,我们可以有潜在剖面分析和潜在类别分析,现在把这两个东西都放在纵向数据中,相应地,我们就有潜增长模型Latent growth model,潜在转换分析Latent transition analysis

所以,大家记住:

我们要研究潜剖面(潜变量为连续变量)的变化,就用潜增长模型

如果我们要研究潜在类别的变化(潜在变量是分类变量),我们就使用势变换分析。

[En]

If we want to study the changes of latent categories (latent variables are classified variables), we use potential transformation analysis.

那么,现在看一个潜在转换分析的定义了:

LTA is a longitudinal extension of latent class models and enables the investigator to model a dynamic, or changing, latent variables。

上面这个定义太宽泛,再来看个具体的:

Latent transition analysis (LTA) is a statistical technique that, combining cross-sectional measurement of categorical latent variables and longitudinal description of change, comprises three methodological aspects: (1) a person-centered approach; (2) the use of latent categorical variables; and (3) a longitudinal design

这个就很具体了,所以大家记住潜在转换分析的3个特点:以人为中心,潜类别和纵向设计。

这种方法特别适用于认知等可能随时间变化的人的特征。随着时间的推移,有些人会从高认知转变为低认知,而另一些人可能会从低认知转变为高认知。因此,为了研究这种动态变化的势变量的质变,我们必须记住势的变换分析。

[En]

This method is especially suitable for the characteristics of people who are likely to change over time, such as cognition. Some people change from high cognition to low cognition over time, while others may change from low cognition to high cognition. Therefore, in order to study the qualitative change of the potential variable of this dynamic change, we must remember the potential transformation analysis.

做潜在转换分析的时候我们都是从2个潜变量开始做的,因为你要转换嘛,所以起始类别一定是2,比如我现在想要研究儿童认知发展,我可以在每个时间点都用LCA将儿童划分为K(K≥2)个亚组,但是通过LTA我就可以得到是否随着时间变化儿童认知会在亚组间移动。

这么一来,问题就来了,你想知道儿童会不会随着时间从亚组A移动到亚组B,首先你得保证不同时间你测得东西是一样的吧,就是你在不同时间得到的亚组都是一样的,所以做潜在转换分析一定要保证亚组的稳定性。

大家好好理解下这个亚组稳定性:它不是说我时间1的时候某个人在亚组A,时间2的时候还是应该在亚组A,而是时间1的亚组A和时间2的亚组A都是同一个亚组A,亚组的特征不变!

上面的话一定要好好理解。

一个完整的LTA需要我们报告3个参数,其中两个和LCA一样,一个是变量响应概率另一个是亚组比例latent class prevalences and item-response probabilities。第三个参数便是转换概率transition probabilities,很好理解,就是时间1时候的亚组转换到时间2不同亚组的概率。

另外,LTA根据你是否有理论基础可以是验证性的,也可以是探索性,还可以加入协变量和远端结局变量,具体请往下看。

潜在转换分析五步法

潜在转换分析的做法可以分为五步,这5步法是Nylund (2007)提出来的,这个我给大家做做简单介绍,具体请参考本文末尾的参考文献:

  • 第1步确定每个时间点的LCA模型

这一步是给每个时间点都做LCA,如果你有很好的理论支持你就可以提前设定潜类别的个数,如果没有的话就一个一个试。

  • 第2步根据横断面结果探索转换趋势

我们在第1步的时候已经给每个时间点都做了LCA,那么在第二步就可以来看不同时间点潜类别的转换情况。就是说模型会给我们输出每个个体在每个时间点最有可能属于的潜类别,这个叫做modal class assignment (mcaPk)。

有了这一点,我们就可以为不同时间点的模型制作交叉表,探索转型趋势。

[En]

With this, we can make a cross-table for the models at different points in time to explore the transformation trend.

  • 第3步

在对测量不变性进行评估后,可以在模型中加入自回归,以探索类别在不同时间点的转换概率。

[En]

After the evaluation of measurement invariance, autoregression can be added to the model to explore the conversion probabilities of categories at different time points.

  • 第4步在模型中加协变量

模型中的协变量既可以是显变量也可以是潜变量。

  • 第5步加入远端结局变量

远程结果变量是指子类别可能会导致一些结束事件,而这个远程结果变量就是这些结束事件。

[En]

The remote outcome variable means that the subcategory may lead to some ending events, and this remote outcome variable is these ending events.

实例操练及解释

还是给你写一个例子:这个例子是关于人类社会发展的。社会学家认为,人的成熟有五大特征,即:完成教育、经济独立、离开父母、婚姻、自觉成熟。这五个特征可以是相继的,但是否符合这五个特征被认为是成熟的标志。

[En]

Still write an example for you: this example is about human social development. Sociologists believe that there are five major characteristics of human maturity, namely: completion of education, financial independence, leaving parents, marriage, self-conscious maturity. These five characteristics can be successively, but whether they meet these five characteristics is considered to be a sign of maturity.

所以现在我想研究人口的成熟过程,或者说成熟过渡,也就是说,我想看看人口中成熟的亚群是如何随着时间的推移而变化的。

[En]

So now I want to study the mature process of the population, or mature transition, that is, I want to see how the mature subgroup of the population changes over time.

前提假设就是我们认为不同的人的成熟路径是不一样的,比如同样是20岁,有的人有了稳定的工作但是还和父母住在一起,有的人已经结婚养孩子了但是还没工作,等等。而且这些特征都会随着时间变化或者转化。这显然是一个以人为中心的研究,我们就考虑一波LTA,就是说我不光要看不同时间点人的成熟情况,我还要看随着时间的变化这中情况又是如何变化的。

不仅如此,我还想看看是什么因素导致了不同的成熟度(模型加协变量),以及不同的成熟度会导致什么(模型加远程结果)。

[En]

Not only that, but I also want to see what factors cause different maturity (model plus covariates) and what different maturity will lead to (model plus remote outcome).

现在我假设一个变量,叫做经济水平(FWB),就是说经济水平和成熟过程的变化(成熟类型AC)是有交叉因果的,具体地,我们认为: 时间点1的经济水平会影响影响时间点2的成熟类型,同样地,时间点1的成熟类型也会影响时间点2的经济水平还时间点3的经济水平。

R数据分析:潜在转化分析LTA的做法和解释(一)

在上面的示意图中,FWB1 and FWB2是两次数据收集过程中的协变量,FWB1会影响时点2的成熟类型AC2,FWB2则是AC1的结局。不同时点有自回归,相同时点有相关,这个就是一个典型的交叉滞后面板设计,见R数据分析:交叉滞后模型非专业解释 文献解读:纵向数据的测量不变性和交叉滞后模型(一) 文献解读:纵向数据的测量不变性和交叉滞后模型(二)

好,我们放在一个具体的研究中来解释做LTA的0到5步,我们是用了5个显变量做成熟类型的LCA,以FWB为协变量和结局变量:

第0步:

上面写了,第一步是描述统计,下图便是做LCA的显变量的描述统计结果:

R数据分析:潜在转化分析LTA的做法和解释(一)

下图便是我们的协变量和结局变量FWB的描述,这儿FWB会以潜变量进入模型,所以大家会看到显潜两个描述:

R数据分析:潜在转化分析LTA的做法和解释(一)

第1步

上面也说了这一步是给每个时间点都做LCA,下面的图便是在时间点1做的不同类别的LCA,共做了5个类别,中拟合指数上看,2类的时候BIC最小,满足BF大于3而且是最简洁的模型,cmP最大,3类的时候stdres小于5%而且最简洁,LMR-LRT和BLRT检验均显著,说明3类显著地比2类拟合更好,并且3类时AIC最小。综上最有可能成立的模型便是2或者3类。

R数据分析:潜在转化分析LTA的做法和解释(一)

所以我们就只把2类和3类拎出来进行分类诊断:

R数据分析:潜在转化分析LTA的做法和解释(一)

解释一下诊断结果:2类3类其实都不错,两个类别中mcaPk (class assignment proportion)均落入了πk (called class proportion)的置信区间之内,avePPk (average posterior probability)都超过了0.7的界值。但是从熵值上看3类时要好一点,OCCk( odd of correct classification)的值也更加好(OCCk的界值为5,越大越好)。所以我们最终确定3类为时间点1的最佳类别数量。见下图:

R数据分析:潜在转化分析LTA的做法和解释(一)

看上图的第一类:在时间点1,在这一类中基本上所有的人都没有进入成熟角色,37%的人主观上认为自己是成人。

第二类:在时间点1,这一类中离开父母的比例贼高,但是其它的成人角色就很低。

第三类:在时间点1,这一类中除了教育没完成,其他成熟指标都挺高。

以上就是时间点1的时候人群的潜类别状态。

同样的,我们在时间点2的数据中重复上面的步骤得到结果:

R数据分析:潜在转化分析LTA的做法和解释(一)

R数据分析:潜在转化分析LTA的做法和解释(一)

结果的概率图示如下图:

R数据分析:潜在转化分析LTA的做法和解释(一)

第二步

从上图中就可以看到,虽然类别数量依然是3类,但是各个潜类别的比例是不一样的。所以我们列出来时间点1和时间点2的类别比例的交叉表瞅瞅:通过这个表我们就可以大概知道不同时间点类别的转换了,这个就体现了纵向数据的威力,这个表大家只看右半边就行,因为我们是按照成熟程度由低到高排列的类别123,所以我们的前提就是类别转换只可能从1到2而不能反着来。

R数据分析:潜在转化分析LTA的做法和解释(一)

上表的作用也就是单纯的看一看趋势,是否时点1的类别1在时点2还是同样特征的类别1呢?我们需要进行测量不变性的评估:

测量不变性Measurement invariance

测量不变性这个问题之前写交叉之后模型的文章中有详细的介绍:文献解读:纵向数据的测量不变性和交叉滞后模型(一) 文献解读:纵向数据的测量不变性和交叉滞后模型(二)

那么具体到LTA,测量不变性指的是每个时间点上每个潜类别的条目响应概率的一致性:

In LTA, the measurement parameters are the item-response probabilities estimated for each class at the different time points (Nylund, 2007).

我们依然是将两个时间点每个条目的响应概率画出来

R数据分析:潜在转化分析LTA的做法和解释(一)

在上图中可以看出:类别1在两个时间点在所有成熟指标上的响应概率都很低,时点2的类别1除了教育其余指标也都很低;类别2在两个时间点"离开父母"这个指标响应概率都很高,其他指标也没啥变化;类别3在时间1的教育不高,但在时间点2教育的响应概率变高了,两个时间点其余指标都很高。

这就说明两次的LCA虽然都将人群分了3类,但是这3类的意义还是有点儿不一致的。

第3步设定LTA模型

接下来我们就要给时间点之间的相同测量加上自回归了从而来拟合我们的LTA模型了,下图是两个时间点不同类别的比例

R数据分析:潜在转化分析LTA的做法和解释(一)

那么如何描述不同时间点类别的转换情况呢?

记住一个东西, 叫做转换概率矩阵,就是下图了。

图中我们可以看到从时点1的Nothing类别到时点2的ALL类别的转换概率是0.353

R数据分析:潜在转化分析LTA的做法和解释(一)

因为我们不认为人们会变得越来越不成熟,为了验证我们的猜想,我们需要使用验证性的方法,即需要将所有负转换路径的系数设置为0。也就是说,我们不会随着时间的推移从第三类变成第二类,或者第二类变成第一类。然后我们比较这个模型和完全自由模型,看看哪个模型更符合我们的数据,最后我们发现,这两个模型确实不同,将所有负转换路径都固定为零进行合并是不好的。这表明我们的猜想是不成立的,也就是说,会有负转换的人。

[En]

Because we don't think that people will become more and more immature, in order to verify our conjecture, we need to use a confirmatory method, that is, we need to set the coefficient of all negative conversion paths to 0. that is, we will not change from category 3 to category 2, or category 2 to category 1 over time. Then we compare this model with the full-free model to see which model is more consistent with our data, and finally we find that the two models are really different, and it is not good for all negative conversion paths to be fixed to zero to be merged. It shows that our conjecture is not valid, that is to say, there will be people with negative conversion.

就如表10所示的那样:27.5%的人在时间1的成熟水平为only L( 只离开父母居住),但是在时间2却成了Nothing+E( 只完成学业), 就是说有人在完成学业后又跑回去和父母住一起了。数据显示是存在这么一种负向转换方式的,并且实际上也很符合。

第4步在LTA中加协变量

对于我们这个例子我们会认为经济水平(FWB)和成熟情况会相互影响,这个时候就需要跑一个交叉滞后了

R数据分析:潜在转化分析LTA的做法和解释(一)

看时点1的经济水平FWB1是不是对时间2的成熟类型有影响,我们给出下表的转换概率矩阵结果:下表显示了有没有协变量FWB1时不同时点上的类别情况,以及差异。

R数据分析:潜在转化分析LTA的做法和解释(一)

上表告诉我们:在时点1时类别1和类别2在协变量存在的情况下,在时点2的时候其变为类别2的概率会增加,这就意味着经济水平高的情况下,类别1更容易转换成类别2,但是转换成类别1和3的概率却在减小。

但是对于时间点1的时候本来就是类别3的人来说,FWB的改变不会显著的影响时间2的类别转换,具体的显著性看下图:

R数据分析:潜在转化分析LTA的做法和解释(一)

我们还需要继续看成熟类型AC对于经济水平FWB的影响以及不同时间点AC的自回归,自回归系数见下图:

R数据分析:潜在转化分析LTA的做法和解释(一)

从上图可以看出来,所有的自回归系数都不显著,即时点1的成熟类型对时点2的成熟类型并没有影响。

当然了还要去看FWB的自回归以及两个时点断面上成熟类型与经济水平的关系。

这儿就属于横断面上的相关关系了,原文是用AC对FWB进行回归,结果见下图:

R数据分析:潜在转化分析LTA的做法和解释(一)

上面的结果就反映出在时点2上FWB对AC有作用:具体地,就是时间点2时候的经济水平越高其成为成为Nothing+E和only L组的概率相对于成为"ALL"组的概率越小,白话就是经济水平越好的人成熟越高(五个指标都好)。

第5步给模型加远端结局

加远端结局的目的就是去看看LTA中得到的类别是不是会对结局产生影响,依然是下面的图,涂红FWB3便是模型中的远端结局,我们想看看AC2是不是对FWB3有影响。

R数据分析:潜在转化分析LTA的做法和解释(一)

具体的操作便是在模型中加上AC2到FWB3的路径,AC2不是有3类嘛,对每一类求出FWB3,然后看这3个FWB3是不是有显著差异就可以。当然拟合整个模型的时候一定是整体进行的,下一篇文章会给大家写具体操作。

本文大部分内容来自参考文献:Sorgente, Angela & Lanz, Margherita & Serido, Joyce & Tagliabue, Semira & Shim, Soyeon. (2019). Latent transition analysis: Guidelines and an application to emerging adults' social development. TPM - Testing. 26. 39-72. 10.4473/TPM26.1.3.

小结

今天,我介绍了潜力转化分析及其实践,并用一个实际例子展示了结果,然后我将为你写下具体的操作。感谢您的耐心。你的文章非常详细,重要的代码在原文中。我希望你能自己做这件事。请将这篇文章转发到你的朋友圈,并回复“数据链接”,获取我收集的所有数据和学习材料。如果对你有用,请记得先收藏,然后点赞分享。

[En]

Today, I introduced the potential transformation analysis and its practice, and presented the results with a practical example, and then I will write the specific operation for you. Thank you for your patience. Your articles are very detailed and the important codes are in the original text. I hope you can do it by yourself. please forward this article to your moments and reply to "data link" to get all the data and the learning materials I collected. If it is useful to you, please remember to collect it first, and then like it and share it.

我们也欢迎您的意见和建议。如果你想知道任何统计方法,可以在文章下面留言。也许我看到的时候会给你写一篇教程。如果您有任何问题,欢迎您发送私信。

[En]

Your comments and suggestions are also welcome. You can leave a message under the article if you want to know any statistical method. Maybe I will write a tutorial for you when I see it. If you have any questions, you are welcome to send a private message.

Original: https://blog.csdn.net/tm_ggplot2/article/details/122095653
Author: 公众号Codewar原创作者
Title: R数据分析:潜在转化分析LTA的做法和解释(一)



相关阅读

Title: python: 开始使用tensorflow 出现的一些问题即解决办法

python 用了快一年了, 想试用一下tensorflow, 了解一下深度学习(deep learning), 但是与其他的模块不同, tensorflow用起来并不容易, 或许是刚开始吧。

  1. 版本问题,版本不同, 用法差别很大

所以,有必要首先了解自己用的是版本1.x, 或者是2.x. 可以用以下办法查版本:

a) pip list

b) conda list

c) 在python 程序内: print(tf.version)

我的版本是2.6.2

看教程, 很多给的第一个示范程序是:

l = tf.constant(23,dtype="int32",name="val1")

m = tf.constant(22,dtype="int32",name="val2")

with tf.Session() as val:

new_output=val.run(l*m)

print(new_output)

结果不运行,出错讯息是:

AttributeError "module 'Tensorflow' has no attribute 'session'"

网上查了, 以上的教科程序只适合与tensorflow 版本1.x, 不适合2.x

解决办法:

import tensorflow as tf

tf.compat.v1.disable_eager_execution()

l = tf.constant(23,dtype="int32",name="val1")

m = tf.constant(22,dtype="int32",name="val2")

with tf.compat.v1.Session() as val:

new_output=val.run(l*m)

print(new_output)

  1. interl-CPU优化/GPU问题

运行如下代码,估计其他代码也会出现同样的问题:

import tensorflow.compat.v1 as tf

tf.compat.v1.disable_eager_execution() #not working without it
a1=tf.placeholder(tf.float32)
a2=tf.placeholder(tf.float32)
a3=tf.placeholder(tf.float32)
a_sum=tf.add_n([a1,a2,a3])
sess=tf.compat.v1.Session()
sess.run(tf.global_variables_initializer())
print(sess.run(a_sum,feed_dict={a1:10,a2:20,a3:30}))

出现了警告讯息:

This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: AVX AVX2
To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.

解决方法:

AVX(Advanced Vector Extensions-Intel® AVX) 是intel 优化CPU用于浮点计算的技术,如果有GPU了,其实不用考虑该警告讯息。 不过, 不管怎么说, 如果不愿意看到该警告讯息, 可以加上如下2行代码:

import os

Original: https://blog.csdn.net/m0_60558800/article/details/124764493
Author: 北京维多
Title: python: 开始使用tensorflow 出现的一些问题即解决办法

相关文章
STM32之DAC音频播放 人工智能

STM32之DAC音频播放

本文内容:本文主要介绍如何用AU获取wav格式的正弦波以及截取到的音频,并通过stm32f103c8t6的DAC模块,转换为模拟音频,并用示波器观察波形。 一、获取正弦信号 点击左上角的文件,新建,音...
关于语音会议自动转文字系统的想法 人工智能

关于语音会议自动转文字系统的想法

我要考虑的问题是做的是什么?用什么做?如何做?我觉得首先思考一下这三个问题,对我后面的工作有很大的帮助,而不是无脑的去查资料,我要通过回答这三个问题,明确语音会议自动转文字系统这个毕业设计的工作方向,...
max30100心率血氧健康传感器调试总结备忘 人工智能

max30100心率血氧健康传感器调试总结备忘

前记 在健康监测领域,心率血氧传感器是一个非常重要的前端采集设备。了解,研究并使用它,是一个方案商的基本素质。鉴于此,笔者花了一些时间在不同的硬件平台来使用它。中间遇到了一些问题值得总结和反思一下。 ...
TensorFlow 1.x 2.x教程大集合 人工智能

TensorFlow 1.x 2.x教程大集合

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