繁体   English   中英

R中的PLS:使用两个Y变量进行模型训练和预测值

PLS in R: Model training and predicting values with two Y variables

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我想使用PLS模型为多个Y变量建模训练和预测值,但是当我尝试这种方法时,在下面的代码中有一些问题:

#First simulate some data
set.seed(123)
bands=20
data <- data.frame(matrix(runif(60*bands),ncol=bands))
colnames(data) <- paste0(1:bands)
data$nitrogen <- rpois(60,10)
data$carbon <- rpois(60,10)
#

#Tranning data set
cal_BD<-data[1:50,]

#Validation data set
val_BD<-data[51:60,]

# define explanatory variables (x)
spectra <- cal_BD[,1:20]

#Build PLS model using training data only
mod_pls <- plsr(carbon + nitrogen ~ spectra,
ncomp = 20, data =cal_BD, validation = "LOO", jackknife = TRUE)
summary(mod_pls)
#

#Prediction in validation data set
est_pls<-predict(mod_pls, comps = 20, newdata = val_BD)
est_pls
#

1)在模型中尝试碳+氮时不起作用;

2)我想使用以下代码创建一个包含碳和氮估计值的新数据框:

val_BD2<-val_BD[,-(21:22)] # remove carbon + nitrogen beccause my goal is predict this values
est_pls<-predict(mod_pls, comps = 20, newdata = val_BD)#Prediction in validation data set (only X's)
final_est_DF<-cbind(val_BD2est_pls[,1],est_pls[,2])

我期望的碳和氮估计值而不是观测值的期望输出是:

            1          2         3  ... carbon  nitrogen
51 0.04583117 0.93529980 0.6299731  ... 15.3     8.6
52 0.44220007 0.30122890 0.1838285  ... 10.0     7.1
53 0.79892485 0.06072057 0.8636441  ...  9.0     7.3
54 0.12189926 0.94772694 0.7465680  ... 11.1     6.5
55 0.56094798 0.72059627 0.6682846  ... 10.3     8.4
56 0.20653139 0.14229430 0.6180179  ... 13.9     9.1
...

这个有可能?

1 个回复

您可以使用两个单独的PLS模型进行预测,然后将结果手动组合到单个数据帧中,也可以为两个预测变量建立一个(PLS2)模型。 仅当响应变量相关时,第二个才有意义。 似乎在plsr软件包中没有简单的PLS2回归选项。 你可以试试:

  1. 直接调用simpls.fit方法(尽管作者不建议这样做)。 参见例如: https : //www.rdocumentation.org/packages/pls/versions/2.7-0/topics/simpls.fit 在这种情况下,您可以将Y指定为具有两列的矩阵或数据框。

  2. 将其他软件包与PLS2一起使用,例如https://www.rdocumentation.org/packages/plspm/versions/0.2-2/topics/plsreg2

1 使用R的预测变量上具有光滑项的广义加性模型的意外Y预测值

我已经建立了GAM模型,关于具有海滩特征的海洋垃圾浓度(作为Y变量)与从点位置到河流,港口,旅游对象和城市的距离(作为X变量)之间的关系。 我使用GAM的目的是使用此模型预测Y值。 问题是当我对距离变量x使用平滑项来构建模型并预测Y值时。 结果值非常大,并且在观察Y值范围之外。 我观察到的Y值范围 ...

2 在使用 PERMANOVA 和 NMDS 的多变量分析中,在我的模型中包含这两个预测变量是否合适?

我是一名本科生,不熟悉这些统计数据。 我正在使用 NMDS 排序和 Permanova 测试来分析 21 个地点的池塘在不同距离等级(0、3、10 m)的覆盖类型(使用计数数据)的变化。 我有两个预测变量:燃烧区域(在燃烧区域内或未燃烧)和高度(连续,m)。 对于 NMDS 排序和 Permanov ...

3 用R中的PLS模型对象预测多波段栅格

我在R中有一个偏最小二乘回归模型对象,可以用来将值作为地图上的空间模式进行预测。 但是到目前为止,这对我不起作用。 PLS模型在R(PLS包)中处理,输入为表格: 所以我想根据地图上每个像素的101个独立变量来预测因变量的值。 但是,PLS模型输入是一个表,预测数据由具有101 ...

2015-03-09 12:14:57 1 187   r
4 R中的PLS:预测新观测值将返回拟合值

在过去的几天中,我在R中开发了多个PLS模型,用于光谱数据(波段作为解释变量)和各种植被参数(作为单独的响应变量)。 总体而言,数据集包括56个。前28个(训练集)已用于模型校准,现在我要做的就是预测tesset中其余28个观测值的响应值。 但是由于某种原因,R会继续返回给定数量组件的校准集 ...

5 如何从 R 中的逻辑回归模型中绘制与两个分类预测变量的双向交互?

我试图在 R 中绘制与来自逻辑回归模型的两个二分预测变量的双向交互(即 DV 也是二分的),这样 y 轴将显示概率和预测值,并带有 SE 条。 我试过使用afex_plot: 并收到以下错误: 然后我尝试使用 ggpredict 和 plot 函数并成功生成所需的图。 但是,使用二项式模型 ...

6 为什么在训练数据中已经包含新水平的情况下,R中的回归模型无法使用因子列中的新值进行预测?

在将训练数据拟合到线性模型之前,我已经将测试数据中存在的新级别的因素列添加到我的训练数据因素列中。 仍然逻辑回归模型在使用测试数据集进行预测时引发以下错误: model.frame.default中的错误(术语,newdata,na.action = na.action,xlev = ...

7 在一张图(R)中绘制具有不同结果和预测变量的两个逻辑模型(glmer,glm)

我正在尝试在一张图中绘制具有不同二进制结果的两个模型(glmer和glm)的预测概率。 两种模型都包含相同的连续预测变量(sdet),应在其上绘制预测概率。 glmer还包括二进制调节变量(inf)和连续预测变量(sdet)之间的交互。 对于这个主持人,我想包括两条单独的回归线,因此总共应该有三行 ...

10 Keras:使用训练模型进行预测

我是keras的一个完全初学者,我在keras中实现了以下代码,我在网上找到了此代码,并成功地以97%的精度对其进行了培训。 在预测过程中我一点点问题。 以下代码进行培训: 该模型已成功保存,我按照以下预测代码实施了该模型。 预测代码: 产生错误: 我在这里 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM