【茗创科技】如何看待心理学实验中的数据缺失?

2023-11-09

大家好,这里是 “茗创科技” 。茗创科技专注于脑科学数据处理,涵盖(EEG/ERP, fMRI,结构像,DTI,ASL, ,FNIRS)等,欢迎留言讨论及转发推荐,也欢迎了解茗创科技的脑电课程,数据处理服务及脑科学工作站销售业务,可添加我们的工程师(MCKJ-zhouyi或17373158786)咨询。

导读

缺失数据是实验数据集的一个共同特征。心理学研究人员用来处理缺失的标准方法依赖于不切实际的假设、无效的随机分配程序,以及效应量的偏差估计。作者描述了实验数据集中通常遇到的不同类别的缺失数据,并讨论了它们如何影响研究人员的因果推断。本文提供了处理每类缺失数据的具体指南,重点关注做出合理假设的两种方法:i) 轻度缺失实例的逆概率加权 (IPW),以及 ii) 严重缺失实例的双重抽样和边界。在回顾了这些方法提高研究人员对效应量估计准确性的原因之后,作者提供了研究人员可以在自己的研究分析中使用的R代码。

前言

实验数据集通常存在一定程度的数据缺失。当数据集中某些被试的一个或多个变量包含缺失值,但其他变量不包含缺失值时,就会出现此问题。本教程的重点是向心理学研究人员介绍损耗问题和纠正方法,并定义为因变量中的缺失。损耗是心理学研究中最普遍和最关键的缺失类型。作者还回顾了预处理协变量的缺失,研究人员在回归分析中使用这些协变量来提高统计功效和他们估计实验治疗效果的精确度。预处理协变量中存在缺失是有问题的,但可以通过简单的插补方法轻松解决。本文将描述其中一种纠正方法。最后一种可能的缺失类型是处理赋值变量的缺失。然而,在实验研究的情况下,这种可能性被设计排除了,因为研究人员总是可以知道(至少在原则上),谁被随机分配到了实验条件与控制条件。

缺失现象在心理学研究中普遍存在,因为研究人员很少能从样本中的每个被试那里收集到他们需要的所有信息。首先,参与者可能不愿意提供某些回答,这通常是当问题被认为是敏感的情况下。例如,关于参与者的心理健康、就业状况、对有争议话题的态度等问题可能会引起焦虑并导致人员流失。其次,参与者退出研究可能会导致数据缺失。退出的动机可能是无聊、有其他优先事项、不再需要报酬,或者只是决定以不同的方式利用空闲时间。第三,参与者可能无法完成研究。最后,数据缺失可能是由于操作者错误,例如意外删除了数据集中的某些值。

缺失值是心理学家需要在他们的数据分析中解决的一个严重问题。具体来说,缺失数据不利于因果推断,因为数据的缺失会使随机分配程序无效和在研究人员对效应量进行估计时引入偏差。如果处理不当,这种缺失会将精心设计的实验变成相关性研究。

尽管已经开发出强大的方法来解释实验研究中的缺失数据,但心理学家很少使用它们。相反,心理学家通常会忽略缺失值的存在,而只是简单地对没有缺失的数据进行分析。在某些情况下,这种做法伴随着使用统计检验(例如 t 检验)比较不同实验条件或人口统计组中的缺失率。不幸的是,这些广泛使用的策略是不恰当的,并且依赖于不切实际的假设。本文建议研究人员使用不同的方法来处理数据中的损耗。具体来说,作者回顾了做出更为现实假设的方法:逆概率加权和双重抽样与边界。这里不讨论做出更强模型假设的统计方法,例如多重插补 (MI) 或多重过度插补 (MO)。有兴趣了解这些方法的研究人员可以查阅有关该主题的相关文献。

本文的目标是为在实验研究中遇到缺失数据的研究人员提供具体的指南。在存在缺失值的情况下,研究人员需要仔细考虑为什么某些参与者的数据缺失而另一些参与者的数据没有缺失的可能原因。这将导致研究人员对其数据中的缺失类别做出关键假设,并且该假设将确定适当的统计或基于设计的程序来处理损耗。需要明确的是,在此过程中做出的任何假设都是基于人的判断,研究人员应该准备好在他们的文章中证明他们的决定是正确的。

本教程的其余部分旨在帮助研究人员完成这些不同的步骤。首先,作者回顾了一个框架,以了解缺失数据如何影响实验研究的结果。具体来说,作者引入了潜在结果框架并将缺失定义为潜在结果。该框架使我们能够区分不同类别的缺失数据。第一类缺失,称为完全随机缺失 (MCAR),在心理学研究中是极不可能的。但通常的做法却是不恰当地假设缺失值是MCAR。第二类和第三类缺失,称为完全随机的以观察变量为条件的缺失 (MCAR|X) 和非随机缺失 (MNAR),更为合理。本教程重点介绍针对这些更现实案例的方法。具体来说,作者解释了逆概率加权 (IPW) 和双重抽样与界限 (DSB) 的理论基础,并提供了研究人员可以用作模板进行其研究分析的R代码行。

潜在结果:理解实验数据集中缺失的框架

实验设计的分析策略

具体而言,假设在某虚构学校(一所六年级和七年级的中学)中进行了一项实验,测试治疗对因变量 (DV) 的因果效应。对于这个假设实验,招募了一组学生样本,将每个学生随机分配到治疗或控制条件,并收集数据。最终数据集包括 DV 和三个预处理协变量:种族、性别和年级。表 1 显示了本研究的假设数据集 (N = 8)。

 表1.无缺失值的虚构学校学生数据集的说明。

接下来考虑两种常见的分析策略来测试实验研究中治疗对 DV 的影响:i)简单回归分析(相当于ANOVA)和 ii)多元回归分析,其中控制预处理协变量。

简单回归模型可以正式写成:

Yi=β0+τZi+ϵi (1)

其中 i 表示样本中的参与者,Y 是因变量,τ 是治疗效果,Zi 是二元治疗分配指标,如果参与者被分配到治疗条件,则返回1,如果参与者被分配到控制条件,则返回0,ϵ是一个误差项。

要在 R 中运行此分析,可以编写以下代码行:

lm(DV ~ treatment ,
data = data)

多元回归模型可以正式写成:

Yi=β0+τZi+Xiβ+ϵi (2)

其中 i表示样本中的参与者,Y 是因变量,τ 是治疗效果,Zi是二元治疗分配指标,如果参与者被分配到治疗条件,则返回1,如果参与者被分配到控制条件,则返回0,X是预处理协变量矩阵,β是协变量效应向量,ϵ是误差项。

要在 R 中运行此分析,可以编写以下代码行:

lm(DV ~ treatment + race + gender + grade, data = data)

如果数据集中没有数据点缺失,例如表1中显示的数据,则两种分析策略都会对虚构学校的平均治疗效果 (ATE) 产生无偏估计。请注意,多元回归分析通常表现更好,因为将性别、种族和等级等预处理协变量纳入回归模型可提高ATE的精度,即估计的平均治疗效果。即使研究人员没有指定将协变量与因变量联系起来的“正确”基础模型,或者当协变量的测量存在误差(例如,通过插补)时,情况也是如此。

潜在结果和平均治疗效果

研究人员进行实验以估计感兴趣的治疗(例如干预、训练)对群体(例如虚构学校的学生)的因变量(例如归属感、智商)的平均因果效应。为此,从感兴趣的人群中随机抽取个体,并随机分配到以下两种实验条件之一:治疗与对照。本质上,这个程序旨在回答一个难以直接测试的问题。假设我们可以在两个平行世界中同时观察研究对象中的所有个体,这些个体只在一个维度上存在差异:有无治疗。这两个世界的 DV 平均差异是多少?

这个问题假设每个个体 i 对因变量有两个潜在的结果:在没有治疗的情况下结果为 Yi(0) 和有治疗的情况下结果为 Yi(1)。在这个框架下,治疗对每个个体 i 都有一个因果效应 τi,可以写成:

τi = Yi(1) − Yi(0) (3)

来自大小为 N 的群体中所有个体的平均治疗效果 (ATE) 等于 τi 的平均值,可以表示为:

 

表2中说明了潜在结果的概念,该表显示了虚构学校学生的假设潜在结果。例如,可以观察到,治疗对学生1的因果效应量为4,而对学生7的因果效应为0。表2中8名学生的平均治疗效应等于 2.5,即 τi的总和除以8(学生人数)。

 表2.潜在结果。

实际上,治疗 τi 对个体 i 的因果效应是无法衡量的,因为无法同时观察到同一个体的潜在结果 Yi(0) 和 Yi(1)。相反,在没有缺失的情况下,观察到的 Yi(0) 或 Yi(1) 取决于个体i被分配到的实验条件 zi(治疗或控制)。每个个体 i 观察到的潜在结果可以写成:

Yi = Yi(1)zi + Yi(0)(1 − zi) (5)

其中,当个体i被分配到治疗条件时,zi取值1,当个体i被分配到控制条件时,zi取值0。因为zi ∈ (0, 1),等式5意味着观察到分配给治疗条件的参与者为Yi(1),以及分配给控制条件的参与者为Yi(0)。

用实验设计估计ATE

如果实验无法推导出 τi,那么实验设计如何让我们实际估计 ATE?为了理解这一点,接下来使用公式 4 来推导 ATE的潜在结果:

 其中μYi(1)是Yi(1)的平均值,μYi(0)是Yi(0)的平均值。

通过将个体随机分配到不同实验条件下,以期消除治疗组和对照组之间存在的任何系统性差异。这意味着在没有数据缺失的情况下,实验设计允许我们使用分配给治疗的结果得出μYi(1)的无偏估计和使用分配给控制的结果得出μYi(0)的无偏估计。具体来说,μYi(1)是通过平均Yi(1)的观测值来估计的,而μYi(0)是通过平均Yi(0)的观测值来估计的。从这个意义上说,估计的平均治疗效果

最好使用条件期望来表示:

 

关于偏差的注意事项

重要的是,偏差并不是指某一感兴趣量(例如,ATE、μYi(0)、μYi(0))的单个估计与该感兴趣量在总体中的真实值之间的差异。相反,偏差是估计过程中的产物。因此,ATE的偏差可以被认为是所有可能随机分配的平均 ATE估计值与真实总体ATE之间的差异。在等式7 中,如果随机分配过程没有偏差,预期μYi(0)和μYi(0)估计是正确的,则ATE是无偏的。

在实践中,ATE的无偏估计及其标准误差和相应的p值是通过使用简单或多元线性回归的一行代码得出的,如公式1和2后面的代码中所述。接下来将探讨这些分析是如何在缺失数据的情况下导致偏差的。

缺失值导致的偏差

统计软件从分析中排除存在缺失值的个体

当实验数据集的值缺失时,统计软件(例如,R、Stata、SPSS)完全忽略了分析过程的变量中显示的缺失值,而且没有给出系统提示。 表 3 显示了一个新版本的模拟虚构学校的数据集,其中包括 DV 和预处理协变量中的缺失值,用“NA”表示。作者将使用表 3 来说明缺失如何影响实验数据分析的结果。

 表3.数据集中缺失值的说明。

预处理协变量的缺失。预处理协变量中的缺失值会影响多元线性回归,但不会影响简单线性回归。具体来说,统计软件会删除模型中包含的预处理协变量之一中至少有一个缺失值的参与者。例如,在虚拟学校数据集中,在包含预处理协变量种族和性别的多元回归分析中,表3中显示的所有学生都不会被考虑在内。一些学生,例如学生 1 和 7,会因为缺少性别而被软件删除。其他学生将因为他们的种族(例如,学生 3 和 6)或 DV 缺失(例如,学生 2)被删除。

这意味着当研究人员忽略协变量中缺失值的存在并使用多元线性回归时,他们会引入因变量中的缺失值来进行分析。因此,协变量中的缺失,如果不加以校正,就会产生损耗。这两种形式的缺失数据的主要区别在于协变量中的缺失很容易校正。研究人员可以(并且应该始终)使用一个简单的策略,例如均值替换,以防止统计软件因为协变量缺损而排除观测值。该方法包括用该协变量的均值来替换该协变量中的缺失值。在本教程中,作者提供了一个简单的代码来实现这一点(参见场景2)。重要的是,这种替代方法(或类似的替代方法)不会在ATE中引入偏差,并且可用于纠正协变量中任何类型的缺失。但是,这种方法永远不适用于校正损耗。

损耗:因变量 Yi 中的缺失以完全相同的方式影响简单和多元线性回归分析。统计软件会在没有警告的情况下排除任何因变量缺失的个体,并仅对剩余的参与者进行分析。校正损耗很关键,但并不那么简单。为了了解损耗如何影响实验结果,回溯到潜在结果框架并将损耗定义为一种潜在结果。

损耗作为一种潜在的结果

在实验中,被分配到实验条件zi的个体有两个可能的结果:他们的因变量要么被报告,要么被遗漏。令ri(z)表示分配给实验条件z的个体i的潜在结果,如果将个体i分配给治疗条件,则zi = 1,如果将个体i分配给控制条件,则zi = 0。当报告因变量时令ri = 1,当因变量缺失时令ri = 0。因此,ri(0) 表示当个体i被分配到控制条件时,是否报告了个体i的因变量。相反,ri(1) 表示当个体i被分配到治疗条件时,是否报告了个体i的因变量(表4)。观察到的潜在结果ri可以写成:

ri= ri(0)(1−zi)+ri(1)zi (8)

如表4所示,等式8暗示了实验中4种可能类型的缺失。 参与者可以始终是响应者,在这种情况下,观察他们独立于治疗任务的DV。参与者可能永远不会是响应者,在这种情况下,其缺失值与治疗分配无关。最后,一些参与者的潜在缺失结果可能取决于治疗分配。当治疗分配不会导致损耗时,可以获得对特定人群的ATE无偏估计。

 表4.潜在结果说明。

什么时候缺失无伤大雅?

简短的回答:缺失很少是无害的。很难想象任何心理学研究中,研究人员可以安全地假设缺失是以不偏向总体ATE估计的方式产生。仅当这些值是完全随机缺失(MCAR)时,缺失值的存在才不会影响研究人员的因果推断。

完全随机缺失 (MCAR) 是研究人员对数据集中的缺失可能做出的最强有力的假设。这种类型的缺失极不可能且难以证明,因为它意味着缺失与人们可以想象的任何变量无关,包括研究中没有收集到的变量。例如,MCAR 暗示缺失与治疗分配以及参与者的情绪、价值观、收入、性别、种族、政治取向、宗教信仰、睡眠方式、头发颜色等无关。换句话说,如果缺失数据是 MCAR,则研究中的每个参与者都有完全相同的缺失概率。如果某些值被计算机程序以完全随机的方式意外删除,则可能会出现这种情况。

当缺失为 MCAR时,Ri独立于治疗分配Zi和因变量Yi的潜在结果。回顾等式7,这意味着,μYi(0)和μYi(1)以及μYi(0)和μYi(1)之间的差异都不受缺失的影响。总而言之,如果出现以下情况,缺失值不会导致偏差:

何时假设数据完全随机丢失 (MCAR)

作者竭力主张心理学者不要假设数据值是完全随机缺失(MCAR)的。当参与者决定退出研究或不回答某些问题时(这是心理学研究中数据缺失的最常见原因),不可能证明缺失值是MCAR,因为这将需要证明无数未知的不可观测值为零。在极少数情况下,研究人员有充分的理由相信缺失是以完全随机的方式产生的(例如,由不了解参与者特征或反应的计算机程序),并能证明这一点,那么缺失被认为是可忽略的。

统计分析不能证明放宽关于缺失的假设是合理的

与常见的误解相反,比较不同组水平(例如男性和女性,或治疗和控制条件参与者)之间缺失值比率的统计分析通常无法证明缺失是 MCAR。只有在一种情况下,这些分析可以提供相应的证明信息:如果它们揭示了不同组之间的缺失差异率。在这种情况下,他们确认缺失不是 MCAR,研究人员可以使用它们来推测数据中缺失值的可能原因。当研究人员发现不同组或实验条件之间的缺失率没有显著差异时,这些分析无法提供信息。在这种情况下,研究人员不应断定缺失是 MCAR。首先,研究人员通常缺乏合适的方法来预测样本中的缺失。也就是说,他们可能没有测量足够的变量来预测缺失。其次,研究人员可能缺乏检测不对称缺失的统计能力。例如,研究人员可以比较男性和女性、黑人参与者和白人参与者、自由派和保守派之间的缺失率并找出不显著的差异。然而,这些不显著的结果并不能证明缺失是对称的或缺失是无影响的。事实上,这些不显著的结果可能是由于统计功效低,尤其是在小样本中。

非随机缺失是如何导致偏差的?

作者描述了数据很少完全随机丢失(MCAR),因为损耗不太可能真正完全随机发生。大多数时候,一些参与者比其他参与者有更高的缺失概率。当非随机缺失不独立于Yi的潜在结果时,它会引入偏差。接下来将说明非随机缺失如何影响实验研究的结果。

治疗分配引起的非随机缺失偏差。由治疗分配引起的非随机缺失会产生偏差,即使治疗效果不存在异质性,也就是说,即使治疗对缺失数据的个体具有相同的效应大小的τattrit。

来自与治疗分配无关的非随机缺失偏差。现在假设在虚构学校研究中,七年级学生仍然有因变量 Yi值较低的趋势,并且其数据更有可能缺失。在这种情况下,非随机缺失不是治疗分配的函数。如果七年级学生的治疗效果与总体(本例中为虚构学校)的平均治疗效果相同,则μYi(1)和μYi(0)都会向上偏倚,但差异μYi(1)- μYi(0)对于ATE将保持无偏。想象一下如果对参与者的治疗效果τattrit为10,但对其他人群的治疗效果为1会发生什么?在这种情况下,缺失会在估计的总体ATE中产生向下偏差。

实验研究中关于缺失的解决方法

作者重点关注以下方面:i) 校正协变量中的缺失值;ii) 实施逆概率加权 (IPW),以及 iii) 使用双重抽样和边界法 (DSB)。

接下来将使用以下假设情景:一家公司有意为其2万名员工引入多元化培训计划。在引入该计划之前,希望在2000名员工中随机抽样来测试其效能。公司对所有员工进行调查,询问他们的种族、性别和教育水平。为简单起见,假设所有员工都为黑人或白人、女性或男性,并拥有大学或研究生学位。作为本次调查的一部分,该公司还测量了每位员工对多样性的基本看法。样本被随机分配处理条件(多样性培训)和控制条件(可持续性培训)。除了内容,这些培训的结构是相同的。一天培训结束时,样本中的所有员工都被要求完成一系列测量培训有效性的任务。

使用模拟器生成一个完整的数据集(即没有缺失值),其中包括这家假设公司的所有2万名员工的人口统计信息和前测变量。通过为处理和控制条件下的员工分配潜在结果值来生成因变量 (DV)。为此,作者从N = 20000中随机抽取了2000名员工样本,并将其用于四种不同的场景。在每个场景中,使用完全相同的2000名员工样本,但引入了不同数量和类型的缺失数据。然后使用适当的方法来纠正R中的缺失并估计ATE。

场景 1:没有缺失数据

在场景 1 中,作者处理的是一个完全没有缺失数据的样本。在这个假设场景中,随机抽样的2000名员工都提供了人口统计信息并完成了培训后的调查。为了根据这2000名员工的样本来估计2万名员工中的ATE,作者使用以下两个线性回归模型之一:

模型 1:

lm(DV ~ treatment , data = dat)

模型 2:

lm(DV ~ treatment + race + gender + education + pretest , data = dat)

在没有缺失值的情况下,简单线性回归估计量(模型1)和多元线性回归估计量(模型 2)对于平均处理效果都是无偏的。

场景 2:协变量缺失

校正协变量缺失数据的过程始终相同。它简单、高效,并且不依赖于所涉及的缺失类别。实验框架的分析中包含协变量有一个目的:提高处理条件对 DV(ATE)影响的估计精度。此过程的目的是确保统计软件不会因协变量缺失而排除任何被试。为此,只需将每个协变量的缺失值替换为该协变量的平均值。这样,因变量保持不变,不会在估计对因变量的影响时引入偏差。想象一下,因变量中没有缺失值,但样本中的 2000 名员工中总共有 500 名缺少来自种族、性别、教育或前测值。由于简单线性回归分析(模型1)中不包含协变量,因此这种缺失协变量的假设情况只会影响多元线性回归分析(模型2)。

当协变量值缺失时校正ATE中的偏差很简单,并且不依赖于缺失的类型。当协变量中缺少值时,只需用该协变量的可用值的均值替换所有缺失值即可。例如,在R中用种族变量的均值替换种族变量中的缺失值,可以使用以下代码:

dat$race[is.na(dat$race)] <- mean(dat$race , na.rm = T)

场景 3:结果数据完全随机缺失(MCAR|X)

假设样本中的2000名员工中有750人决定退出研究。仔细观察后会发现,对于所有员工,变量前测值逐渐偏高。但整个数据集中的数据并不是完全随机缺失的,而是在前测得分高的参与者子集中完全随机缺失。如果某些参与者的结果数据缺失,并且我们想假设一个或多个观察变量完全解释结果缺失的模式,可以使用逆概率加权(IPW)来校正偏差。这种方法通常用于医学研究或社会科学中的纵向研究以解释参与者的退出,为DV的每个值分配一个权重。较大的权重分配给丢失概率较大的观测值,较小的权重分配给丢失机会较低的观测值。一旦为每个可用的观测值计算出权重,就可以运行加权多元线性回归而不是常规的多元线性回归。以下是 R 中关于缺失处理的详细步骤。

步骤 1 :创建响应虚拟变量

dat$response <- as.numeric(!is.na(dat$DV))

步骤 2:预测样本中每个员工的响应概率

(a) 对于一个变量的缺失,例如前测值:

fit_p_resp <- glm(response ~ pretest*treatment ,
family = binomial(link = "logit"),
data = dat)

(b) 对于多个变量的缺失,例如前测、种族、性别和教育:

fit_p_resp <- glm(response ~ pretest*treatment + race*
treatment + gender*treatment + education*treatment ,
family = binomial(link = "logit"),
data = dat)

步骤 3 :响应概率

p_resp <- fit_p_resp$fitted

步骤 4:生成权重

gen_weights <- 1/p_resp

步骤 5:加权线性回归

fit_ipw <- lm(DV ~ treatment + race + gender + education + pretest ,
weights = gen_weights ,
data = dat)

这种加权多元线性回归能够恢复样本的真实ATE。

场景 4:结果数据非随机缺失 (MNAR)

结合双重抽样和边界法,该方法由 Coppock 等人开发。这种方法通常因产生的界限太宽而无法提供足够的信息,研究人员也因此不太愿意使用该方法。但Coppock 等人(2017)提出了一种策略,通过结合双重抽样来弥补这一不足。双重抽样方法要求研究人员从结果值缺失的被试那里获取更多数据。假设通过双重随机抽样,能够获得一些结果缺失被试的数据,可以使用 Coppock等(2017)开发的 R 包“attrition”中的以下代码。

Install.packages(“devtools”)
devtools:: install_github (" acoppock / attrition ")


dat$r1 <- as.numeric(!is.na(dat$DV))


est <- estimator_ds(Y = DV ,
             Z = treatment ,
             R1 = r1 ,
             Attempt = attempt ,
             R2 = r2 ,
             minY = min(dat$DV , na.rm = T),
             maxY = max(dat$DV , na.rm = T),
             alpha = .05,
             data = dat)

结论

实验研究中数据的缺失对因果推理具有重要影响。作者主张研究人员对他们的数据中的缺失做出现实的假设,并且本文提供了两种方法的具体指南,这些方法可以做出更切实际的假设来处理实验数据集中的缺失。在使用均值替代解决其分析中包含的所有协变量的缺失后,研究人员可以使用逆概率加权或双重抽样和边界来校正因变量中的缺失。逆概率加权是纯统计学方法,研究人员在完成数据收集后可以立即执行此步骤。双重抽样和边界需要研究人员收集额外的数据。关于使用哪种方法的假设和决定是基于人的判断,研究人员应该在他们的文章中进行有关证明。最后,作者强烈建议研究人员不要假设缺失是完全随机产生的。这意味着研究人员不应该将他们的分析局限在可用数据上而不去校正缺失值。

原文:Missing Data in Experiments: Challenges and Solutions.

http://dx.doi.org/10.1037/met0000361

模拟数据和R代码网址:https://osf.io/9sva5

文章来源于微信公众号(茗创科技),欢迎有兴趣的朋友搜索关注。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【茗创科技】如何看待心理学实验中的数据缺失? 的相关文章

  • STL十大容器 之 list

    特点 内存不连续 底层实现是链表 插入和删除的效率比较快 随机访问效率比较低 和vector相比 不再需要 capacity 和 reserve 操作 因为链表没有大小限制 不需要为了效率增加预分配内存的功能 一 插入和删除 push ba
  • vue中从对象数组中拿到每一个对象的其中一个字段作为下拉框的选项

    原因分析 因为是对象数组 所以不能单纯的用this指向来赋值 解决方案 直接上代码 用到ES6的map 方法 具体使用不懂的还请自己百度哦 这是下拉框的代码
  • 记一次网易前端面试

    很幸运地能收到网易的面试通知 就毫不犹豫翘了课去面试了 hhhh 三点的面试 因为从来没去过那个中关村西北旺区 吃完饭早早就去了 想象中那里应该是繁华的地方 hhhh 到了发现都在建设中 很多还在建设中 看到了网易旁边的百度和搜狐 都是长长
  • OpenCV学习笔记——用haar特征训练自己的分类器(再做手势检测)

    之前介绍过一篇利用级联分类器对目标进行检测的文章http blog csdn net yang xian521 article details 6973667 用的就是haar特征 发现OpenCV自带的库里的haar特征只有人脸 人脸的器
  • Spring 中@NotNull, @NotEmpty和@NotBlank之间的区别是什么?

    简述三者区别 NotNull CharSequence Collection Map 和 Array 对象不能是 null 但可以是空集 size 0 NotEmpty CharSequence Collection Map 和 Array
  • 新手学习导航设计的10个技巧

    如果一个网站有良好的可用性 基本的需求是良好的导航设计 本文结合社区优秀的网页导航设计案例 总结了网页导航设计的10项技能 网页导航设计案例即时设计是一款支持在线协作的专业级 UI 设计工具 支持 Sketch Figma XD 格式导入
  • 大学英语词汇解析 中国大学mooc 华中科技大学 测验题答案

    使用方法 利用浏览器的搜索功能 ctrl F and后面为答案 You should practice your scales every day and a set of notes played or sung in order goi
  • NOIP2004提高组题解

    T1 津津的储蓄计划 考察知识 模拟 算法难度 X 实现难度 X 分析 按照题目的要求模拟就可以了 只是要考虑严谨 还要看懂题目 代码 include
  • 数据结构—稀疏数组

    一 稀疏数组 SparseArray 简介 所谓稀疏数组就是数组中大部分的内容值都未被使用 或都为零 在数组中仅有少部分的空间使用 因此造成内存空间的浪费 为了节省内存空间 并且不影响数组中原有的内容值 我们可以采用一种压缩的方式来表示稀疏
  • PPTP应用实例

    PPTP应用实例 Router to Router安全隧道实例 以下是一个使用因特网上的加密PPTP隧道连接两个企业网的例子 在这个例子中有两个路由器 HomeOffice 接口LocalHomeOffice 10 150 2 254 24

随机推荐

  • docker基础操作命令

    目录 一 进程相关命令 二 镜像相关命令 三 容器相关命令 一 进程相关命令 启动docker服务 systemctl start docker 停止docker服务 systemctl stop docker 重启docker服务 sys
  • 使用 VisSim 和 PLECS 的实时嵌入式和无传感器控制

    特点 提供对交流电气驱动器所有方面的全面了解 从电机和转换器到实施的控制算法 只需最少的数学运算 演示如何使用 VisSim 和 PLECS 中的一组专用硬件平台 电机设置和软件工具来实施和调试电气驱动系统 能够实时控制安全 低电压 和低成
  • 【ES实战】Search的滚动查询(Scroll)

    滚动查询 Scroll 虽然搜索请求返回结果是单个 页面 但scroll API 可用于从单个搜索请求中检索大量结果 甚至所有结果 其方式与在传统数据库使用相似 scrolling不是用于实时用户请求 而是用于处理大量数据 例如 为了将一个
  • 英语学习杂记

    这文章就没有什么逻辑了 仅仅是我觉得比较好的方法 应该时刻提醒我划重点的知识而已 1 有效的单词记忆法 上来先用艾宾浩斯记忆方法死记硬背一遍单词 在这一过程中 你会发现有些单词成为了你记忆中的盲点 就是记不下来 那么可以运用词根词缀联想记忆
  • jquery键盘事件及keycode大全

    jquery的键盘事件分为keypress keydown和keyup事件 一 键盘事件 1 keypress 事件 keypress 当按钮被按下时 会发生该事件 我们可以理解为按下并抬起同一个按键 2 keydown 事件 当按钮被按下
  • bug-mybatis中jdbcType类型DATE映射问题

    背景 昨天测试反馈问题说某个界面查询数据不准确 明明是在查询条件内的数据却查询不到 很诡异 我看了下 查询条件也只有创建时间这一个 如 2022 1 8 00 00 00 2022 1 8 23 59 59 但在那一天的数据却是死活出不来
  • 【Java笔记+踩坑】SpringBoot基础3——开发。热部署+配置高级+整合NoSQL/缓存/任务/邮件/监控

    导航 黑马Java笔记 踩坑汇总 JavaSE JavaWeb SSM SpringBoot 瑞吉外卖 SpringCloud SpringCloudAlibaba 黑马旅游 谷粒商城 目录 1 热部署 1 1 手动启动热部署 1 2 脱离
  • TensorFlow处理图片

    文章目录 TensorFlow与OpenCV 编码 编码 decode 解码 encode tf image decode gif tf image decode jpeg tf image encode jpeg tf image dec
  • mysql建立班级表_mysql数据表设计-班级表 学生表 老师表 课程表 成绩表

    mysql数据表设计 班级表 学生表 老师表 课程表 成绩表 image png Navicat Premium Data Transfer Source Server localhost Source Server Type MySQL
  • 【华为OD机试真题 python】区块链文件转储系统【2023 Q1

    题目描述 区块链文件转储系统 区块链底层存储是一个链式文件系统 由顺序的N个文件组成 每个文件的大小不一 依次为F1 F2 Fn 随着时间的推移 所占存储会越来越大 云平台考虑将区块链按文件转储到廉价的SATA盘 只有连续的区块链文件才能转
  • [34]如何设置PPT中的演讲者模式

    1 首先将投影设备或其它幻灯片输出设备连接到笔记本或 PC 上 在 Windows 7 中按Win 键 P 并选择扩展模式将当前笔记本或 PC 的显示器与投影显示输出设备设置为扩展模式 我们要演示的 PowerPoint 文档 在 Ribb
  • 深度学习论文阅读目标检测篇(七)中文版:YOLOv4《Optimal Speed and Accuracy of Object Detection》

    深度学习论文阅读目标检测篇 七 中英对照版 YOLOv4 Optimal Speed and Accuracy of Object Detection Abstract 摘要 1 Introduction 引言 2 Related work
  • android 语音自动播报,Android语音播报的两种简单实现

    a 两种方案 1 Android自带的语音播报 老版本手机Android6 0以下 不支持中文 2 讯飞语音播报封装 直接用 b 具体实现 一 Android自带的语音播报 查看手机是否支持中文语音播报 在测试的设备中打开 设置 gt 找到
  • linux下创建用户并且限定用户主目录

    linux下创建用户并且限定用户主目录 useradd d home users sport m sport passwd sport
  • Spring Security 最佳实践,看了必懂!

    今天来一篇 Spring Security 精讲 相信你看过之后能彻底搞懂 Spring Security Spring Security简介 Spring Security 是一种高度自定义的安全框架 利用 基于 SpringIOC DI
  • React中自定义事件this指向问题

    this是基于函数的执行环境 也就是上下文 绑定的 React组件生命周期函数中this的上下文就是组件实例 你必须谨慎对待 JSX 回调函数中的 this 类的自定义方法默认是不会绑定 this 的 首先调用 constructor 函数
  • 新项目报:Caused by: javax.net.ssl.SSLHandshakeException:

    新项目启动 报错 错误见下面三个图片 com mysql cj jdbc exceptions CommunicationsException Communications link failure The last packet sent
  • Git- 连接远程仓库

    如何使用Git 连接远程仓库呢 远程仓库 gt 一般指的是代码托管平台 那就先来瞅瞅三个较熟悉的版本 代码 托管服务平台 版本 代码 托管服务平台 码云 gitee com 是开源中国社区团队推出的基于Git的快速的 免费的 稳定的在线代码
  • build kernel :missing symbol table

    https www spinics net lists kernel msg3797871 html
  • 【茗创科技】如何看待心理学实验中的数据缺失?

    大家好 这里是 茗创科技 茗创科技专注于脑科学数据处理 涵盖 EEG ERP fMRI 结构像 DTI ASL FNIRS 等 欢迎留言讨论及转发推荐 也欢迎了解茗创科技的脑电课程 数据处理服务及脑科学工作站销售业务 可添加我们的工程师 M