【发布时间】:2020-03-21 00:54:12
【问题描述】:
我使用从大平原地区的田间样本收集的已知土壤特性数据生成了 MARS 回归模型。我将所有变量减少到 5 个预测变量(海拔、tpi、k_factor、降水和温度)和一个因变量(土壤有机物含量:SOC)。我将原始数据集拆分为训练类和测试类。在创建好模型后,我能够利用我的模型来预测测试数据集上的值。
我想预测一个新生成的数据集,其中的数据来自大平原地区的地理空间栅格。我根据研究的大小生成了随机样本,并在该区域上创建了一个点 shapefile。栅格被写入它们相交的点,为我提供了一个表格,其中包含每个点的 5 个预测变量。我没有 SOC 栅格,所以我的新表缺少该列。
我的目的是根据新表中的 5 个预测变量来预测 SOC 值。但是,对于我的每一列,我不断收到错误“可变长度不同”。我想将预测导出回新表,以便能够可视化 GIS 中 SOC 的分布。以下是我的代码示例:
setwd("E:\\Fall19\\stats\\FinalProject\\Excel_tables")
table=read.csv("sel_el_train.csv")
attach(table)
my_data=table[,c(8,9,15,16,18,19)]
mars1 <- earth(
SOC ~ ., data=my_data)
print(mars1)
summary(mars1)
plot(mars1)
predict(mars1, newdata=test.data)
以下是记录底部的屏幕截图。您可以看到我构建模型的记录数与我尝试预测的数据集的差异。
【问题讨论】:
-
如果您的 test.data SOC 列有这么多的 NA,模型将如何预测?删除 test.data 中带有 NA 的行怎么样?
-
NA 是默认值。在新数据集中,任何记录都没有 SOC 值。我正在尝试预测这些值并将它们写入每条记录的数据集中。我的模型基本上是将 SOC 估计为其他变量的函数。因此,我认为我将能够提供预测值并计算 SOC。
标签: r regression prediction