【问题标题】:How to predict new variables for a new randomly generate dataset using multiple regression in R?如何使用 R 中的多元回归预测新随机生成数据集的新变量?
【发布时间】: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


【解决方案1】:

我想通了。我使用的方法对标题拼写非常讲究。我的 K_factor 变量拼写不正确。一旦所有列名匹配,一切正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-18
    • 2020-10-20
    • 1970-01-01
    • 1970-01-01
    • 2014-09-09
    • 2015-07-11
    • 2015-01-26
    • 1970-01-01
    相关资源
    最近更新 更多