在R中使用暗号对NLS进行编码时出现问题

时间:2019-07-19 12:43:11

标签: r nls

我正在尝试用R编码非线性回归,以适应有关温度和降水类型之间关系的数据。

我首先用数据创建了两个向量:

  vec_temp_num
  [1] -8.5 -8.0 -6.5 -6.1 -5.9 -5.8 -5.6 -5.4 -5.3 -5.1 -4.9 -4.8 -4.7 -4.5 -4.3 -4.2 -4.1
 [18] -4.0 -3.9 -3.8 -3.7 -3.6 -3.5 -3.4 -3.3 -3.2 -3.1 -3.0 -2.9 -2.8 -2.6 -2.5 -2.4 -2.3

   vec_rain
  [1] 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000
  [9] 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 1.00000000 0.00000000 0.00000000
 [17] 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000
 [25] 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.33333333 0.00000000 0.00000000

vec_temp_num包含温度列表,而vec_rain对于每个温度都有一个观察到的降水类型的百分比,基本上是降雨或下雪(我选择从其中一个开始以简化过程)。两个向量都包含300行,并且都是“ as.numeric”。

功能如下:

func_rain <- function(x,b){(1/(1+exp(-b*x)))}

然后我测试了我的函数并得到了一个看起来应该是的图,因此在执行此步骤之前,一切似乎都没问题。

但是当我尝试编写nls公式时:

  Rain_fit<-nls(vec_rain~func_rain(vec_temp_num,b), start=c(vec_temp_num=2.6, b=1))

我收到一条错误消息:

  

qr(.swts * gr)中的错误:       暗淡[产品2]与对象[300]的长度不匹配

似乎我应该将数据作为与矢量相对的矩阵(由于某些论坛建议创建矢量,所以我没有得到),但是后来我尝试直接使用数据框中的数据(df = dp。 w2 /雨和温度列):

  Rain_fit<- 
    nls(dp.w2$rain~func_rain(dp.w2$temperature,b),start=list(temperature=2.6,rain=1, 
    b=1))

并收到另一条错误消息:

  

解析错误(text = x,keep.source = FALSE):        :2:0:输入意外结束        1:〜          ^

我已经阅读了很多有关nls函数的问题/答案,但是已经有好几天了,我只是找不到适合我的数据的正确方法,因此在此先非常感谢您的帮助!

PS:我是一个初学者,所以如果您可以提供“逐步说明”或详细的(针对虚拟对象)答案,那就太好了!

0 个答案:

没有答案
相关问题