单组学的多变量分析 2.稀疏偏最小二乘判别分析(sPLS-DA)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单组学的多变量分析 2.稀疏偏最小二乘判别分析(sPLS-DA)相关的知识,希望对你有一定的参考价值。

参考技术A sPLS-DA( Sparse PLS discriminant analysis )是PLS-DA的一种特殊情况,同时包含变量选择和分类的过程。sPLS-DA允许变量选择,可以选择数据中最具预测性或判别性的特征,并帮助对样本进行分类。

PLS-DA模型建立在X中的所有基因上,其中许多可能无法提供信息来表征不同的类别。sPLS-DA分析的目的是识别出最能区分这两类的一小部分基因。

可以使用函数tune.splsda()评估选择的参数,包括sPLS-DA维度数量(ncomp)以及要在X数据集中选择的变量数量(keepX)。根据PLS-DA性能评估的建议,将ncomp的最大值设置为6。我们选择重复10次的5倍交叉验证(fold = 5),并指定一个预测距离(最大距离)来预测所有CV运行中的类别隶属度。

对于 tune 函数中指定的所有 comp ,以最后一个 comp 为条件的每个 comp 的分类错误率如下所示。

sPLS-DA中包含的成分越多,分类错误率越低(预测精度越低越好)。将使得每个维度达到最佳性能的最优变量数表示为菱形。3个维度足以使我们最终的sPLS-DA模型达到最佳性能。

最终模型包括3个维度和前3个维度上的92830个选定变量

在前三个维度上的样本图(见下图)显示,第一个维度很好地分离了BL肿瘤,而第二个维度将EWB与NB和RMS区分开来。

第三个维度的加入则进一步区分了NB和RMS:

利用函数 auroc 也可以得到一个AUC图,用于PLS-DA分析。

第一个 AUROC 仅包括2个维度:

AUROC 包括所有维度。ROC和AUC标准对于我们方法的性能评价并不是特别有见地,但可以作为统计分析的补充。

内部选择语句未注册为单组函数...“不是单组组函数”

【中文标题】内部选择语句未注册为单组函数...“不是单组组函数”【英文标题】:inner select statement not registering as a single-group function... "not a single-group group function" 【发布时间】:2014-02-26 18:16:18 【问题描述】:

由于我使用的报告软件,我必须将所有内容都放在一个 sql 语句中以生成报告。但是,Oracle SQL 似乎并没有让我创建一个带有单组结果的内部选择,即使它在最终产品中只有一个结果。 (所有其他结果都是单组函数)。 这是我的 SQL:

select   
COUNT(*) as TOTAL_RXS, 
SUM(rx_tx.brand_acquisition_cost) as TOTAL_COST,
SUM(case rx_tx.drug_dispensed 
    when 'B' then (rx_tx.brand_price - rx_tx.brand_discount)
when 'G' then (rx_tx.generic_price - rx_tx.generic_discount)
end) 
    as TOTAL_PRICE,
 SUM(case rx_tx.drug_dispensed
    when 'B' then (rx_tx.brand_price - rx_tx.brand_discount - rx_tx.brand_acquisition_cost)
when 'G' then (rx_tx.generic_price - rx_tx.generic_discount - rx_tx.brand_acquisition_cost)
end)
as TOTAL_PROFIT

    , (select 
   SUM(tx_tp.balance_due_from_tp)
       from eps2.tx_tp 
   join eps2.rx_tx on rx_tx.id = tx_tp.rx_tx_id
       where 1=1
-- This results in CLAIM STATUS being 'F'
    AND rx_tx.fill_date is not NULL 
    AND rx_tx.returned_date is not NULL 
    AND rx_tx.reportable_sales_date is NULL
    AND (tx_tp.paid_status like '%PAID%' 
    OR tx_tp.paid_status like '%PART%') ) as TOTAL_RECEIVABLES

from eps2.vw_rx_summary join eps2.rx_tx
     on vw_rx_summary.last_filled_rx_tx_id = rx_tx.id
-- where TRUNC(rx_tx.fill_date,'DD') = TRUNC(SYSDATE - 1,'DD')

谁能帮帮我? 提前致谢。

【问题讨论】:

您的查询缺少外部查询的 from 语句。如果这不是完整的查询,请显示完整的查询。 对不起...我通过不包括查询的某些部分来增加简单性并保护公司 sql 代码资产。但这是完整的查询。谢谢。 我想称之为的这种“屏蔽”或类型转换似乎对我不起作用。它说“异常:java.sql.SQLException:ORA-00936:缺少表达式” 【参考方案1】:
select   COUNT(*) as TOTAL_RXS, 
     SUM(rx_tx.brand_acquisition_cost) as TOTAL_COST,
     MAX(select 
        SUM(tx_tp.balance_due_from_tp) as total_receivables
      from eps2.tx_tp 
        join eps2.rx_tx on rx_tx.id = tx_tp.rx_tx_id
      where 1=1
      AND (tx_tp.paid_status like '%PAID%' 
      OR tx_tp.paid_status like '%PART%') ) as total_receivables

total_receivables 添加MAX() 以将其屏蔽为聚合 函数!

【讨论】:

以上是关于单组学的多变量分析 2.稀疏偏最小二乘判别分析(sPLS-DA)的主要内容,如果未能解决你的问题,请参考以下文章

偏最小二乘(PLS)原理分析&Python实现

偏最小二乘回归分析建模步骤的R实现(康复俱乐部20名成员测试数据)+补充pls回归系数矩阵的算法实现

偏最小二乘回归的输出结果如何解释

R语言 | R包pls的偏最小二乘(PLS)回归

什么是最小二乘法回归分析?

从最小二乘到岭回归(Ridge Regression)的深刻理解