R 为什么火星(地球包)会产生这么多预测因子?

R 为什么火星(地球包)会产生这么多预测因子?,r,splines,sql-server-mars,R,Splines,Sql Server Mars,我正在使用R中的earth软件包制作火星模型。我的数据集(CE.Rda)由一个因变量(D9_RTO_avg)和10个潜在预测值组成(NDVI_l1,NDVI_f0,NDVI_f1,NDVI_f2,NDVI_f3,LST_l1,LST_f1,NDVI_f2,NDVI_f3)。接下来,我给你看我数据集的头 D9_RTO_avg NDVI_l1 NDVI_f0 NDVI_f1 NDVI_f2 NDVI_f3 LST_l1 LST_f0 LST_f1 LST_f2 LST_f3 2 1.866

我正在使用R中的earth软件包制作火星模型。我的数据集(
CE.Rda
)由一个因变量(
D9_RTO_avg
)和10个潜在预测值组成(
NDVI_l1
NDVI_f0
NDVI_f1
NDVI_f2
NDVI_f3
LST_l1
LST_f1
NDVI_f2
NDVI_f3
)。接下来,我给你看我数据集的头

   D9_RTO_avg NDVI_l1 NDVI_f0 NDVI_f1 NDVI_f2 NDVI_f3 LST_l1 LST_f0 LST_f1 LST_f2 LST_f3
2   1.866667  0.3082  0.3290  0.4785  0.4330  0.5844  38.25  30.87     31  21.23  17.92
3   2.000000  0.2164  0.2119  0.2334  0.2539  0.4686   35.7   29.7  28.35  21.67  17.71
4   1.200000  0.2324  0.2503  0.2640  0.2697  0.4726  40.13   33.3  28.95  22.81  16.29
5   1.600000  0.1865  0.2070  0.2104  0.2164  0.3911  43.26  35.79  30.22  23.07  17.88
6   1.800000  0.2757  0.3123  0.3462  0.3778  0.5482  43.99  36.06  30.26  21.36  17.93
7   2.700000  0.2265  0.2654  0.3174  0.2741  0.3590  41.61   35.4  27.51  23.55  18.88_
创建我的地球模型后,如下所示

mymodel.mod <- earth(D9_RTO_avg ~ ., data=CE, nk=10)
我得到以下输出

D9_RTO_avg =
4.1
+   38 * LST_f128.68                        
+  6.3 * LST_f216.41                        
-  2.9 * pmax(0,        0.66 -     NDVI_l1) 
-  2.3 * pmax(0,     NDVI_f3 -        0.23) 

Selected 5 of 7 terms, and 4 of 13169 predictors
Termination condition: Reached nk 10
Importance: LST_f128.68, NDVI_l1, NDVI_f3, LST_f216.41, NDVI_f0-unused,   NDVI_f1-unused, NDVI_f2-unused, ...
Number of terms at each degree of interaction: 1 4 (additive model)
GCV 2    RSS 4046    GRSq 0.29    RSq 0.29
我的问题是,为什么地球在实际年龄为10岁的时候识别出13169个预测因子?似乎火星正在考虑将候选预测因子的单一观测值作为预测因子本身。我如何避免火星这样做


感谢您的帮助

您的LST_f变量的类别是什么?似乎它们要么是因子,要么是字符,MARS为值构建了虚拟模型。您可以从输入模型的预测器的名称猜到:LST_f128.68(虚拟变量LST_f1的值28.68)Eric,你说得太对了。不知何故,在从原始
.csv
文件创建数据集的过程中,R将变量LST\u f的值视为因子,而不是简单的数值。我使用函数
as.numeric()将它们强制为数值
现在,一切都很顺利。非常感谢您的及时回复。您的LST\u f变量的类别是什么?似乎它们是因子或字符,MARS为值构建了虚拟模型。您可以从输入模型的预测器的名称猜到:LST\u f128.68(虚拟变量LST\u f1的值28.68)Eric,你说得太对了。不知何故,在从原始
.csv
文件创建数据集的过程中,R将变量LST\u f的值视为因子,而不是简单的数值。我使用函数
as.numeric()将它们强制为数值
现在,一切都进展顺利。非常感谢您的及时回复。
D9_RTO_avg =
4.1
+   38 * LST_f128.68                        
+  6.3 * LST_f216.41                        
-  2.9 * pmax(0,        0.66 -     NDVI_l1) 
-  2.3 * pmax(0,     NDVI_f3 -        0.23) 

Selected 5 of 7 terms, and 4 of 13169 predictors
Termination condition: Reached nk 10
Importance: LST_f128.68, NDVI_l1, NDVI_f3, LST_f216.41, NDVI_f0-unused,   NDVI_f1-unused, NDVI_f2-unused, ...
Number of terms at each degree of interaction: 1 4 (additive model)
GCV 2    RSS 4046    GRSq 0.29    RSq 0.29