在R中使用nls函数时可变长度差错误

在R中使用nls函数时可变长度差错误,r,nls,non-linear-regression,model-fitting,R,Nls,Non Linear Regression,Model Fitting,我试图使用非线性回归拟合以下数据集,其中v=速率,s=底物浓度,I=抑制剂浓度 v s I 1 0.030735 20 0 2 0.036813 30 0 3 0.043511 40 0 4 0.049580 60 0 5 0.053996 70 0 6 0.059996 80 0 7 0.064517 100 0 8 0.062283 120 0 9 0.069128 150 0 10 0.070157 180 0 1

我试图使用非线性回归拟合以下数据集,其中v=速率,s=底物浓度,I=抑制剂浓度

     v       s   I
1  0.030735  20  0
2  0.036813  30  0
3  0.043511  40  0
4  0.049580  60  0
5  0.053996  70  0
6  0.059996  80  0
7  0.064517 100  0
8  0.062283 120  0
9  0.069128 150  0
10 0.070157 180  0
11 0.010265  20  5
12 0.012665  30  5
13 0.016841  40  5
14 0.020061  60  5
15 0.023298  70  5
16 0.025832  80  5
17 0.026651 100  5
18 0.028431 120  5
19 0.030125 150  5
20 0.039977 180  5
21 0.009380  20  6
22 0.012413  30  6
23 0.016107  40  6
24 0.020513  60  6
25 0.021588  70  6
26 0.023146  80  6
27 0.026004 100  6
28 0.024654 120  6
29 0.026586 150  6
30 0.032169 180  6
31 0.008452  20  7
32 0.011441  30  7
33 0.015973  40  7
34 0.017618  60  7
35 0.019015  70  7
36 0.021235  80  7
37 0.024005 100  7
38 0.025089 120  7
39 0.025360 150  7
40 0.028029 180  7
41 0.007178  20  8
42 0.010141  30  8
43 0.012837  40  8
44 0.019752  60  8
45 0.019955  70  8
46 0.020838  80  8
47 0.021742 100  8
48 0.021748 120  8
49 0.024367 150  8
50 0.027416 180  8
51 0.008012  20 10
52 0.009509  30 10
53 0.012265  40 10
54 0.013161  60 10
55 0.014029  70 10
56 0.014719  80 10
57 0.018321 100 10
58 0.020250 120 10
59 0.021642 150 10
60 0.026193 180 10
对于使用nls函数的以下等式,初始值非常接近实际值,因为我在前面计算并定义了它们

mm.competitive.formula <- as.formula(v ~ ((Vmax*s)/ (Km*(1+(I/Ki)+s))))
mm.competitive <- nls(mm.competitive.formula, kinetics, start=list(Km=Ki.initial, Vmax=Vmax.initial, Ki=Ki.initial))
summary(mm.competitive)
因为对于每个底物浓度,我有6个观察结果,每个抑制剂浓度一个。但对于每种抑制剂浓度,我有10种底物浓度(至少从我的错误读数来看,我认为是这样,我可能是错的)。我不想遗漏任何数据,因此我不确定如何回避这个问题

structure(list(v = c(0.030735, 0.036813, 0.043511, 0.04958, 0.053996, 
0.059996, 0.064517, 0.062283, 0.069128, 0.070157, 0.010265, 0.012665, 
0.016841, 0.020061, 0.023298, 0.025832, 0.026651, 0.028431, 0.030125, 
0.039977, 0.00938, 0.012413, 0.016107, 0.020513, 0.021588, 0.023146, 
0.026004, 0.024654, 0.026586, 0.032169, 0.008452, 0.011441, 0.015973, 
0.017618, 0.019015, 0.021235, 0.024005, 0.025089, 0.02536, 0.028029, 
0.007178, 0.010141, 0.012837, 0.019752, 0.019955, 0.020838, 0.021742, 
0.021748, 0.024367, 0.027416, 0.008012, 0.009509, 0.012265, 0.013161, 
0.014029, 0.014719, 0.018321, 0.02025, 0.021642, 0.026193), s = c(20L, 
30L, 40L, 60L, 70L, 80L, 100L, 120L, 150L, 180L, 20L, 30L, 40L, 
60L, 70L, 80L, 100L, 120L, 150L, 180L, 20L, 30L, 40L, 60L, 70L, 
80L, 100L, 120L, 150L, 180L, 20L, 30L, 40L, 60L, 70L, 80L, 100L, 
120L, 150L, 180L, 20L, 30L, 40L, 60L, 70L, 80L, 100L, 120L, 150L, 
180L, 20L, 30L, 40L, 60L, 70L, 80L, 100L, 120L, 150L, 180L), 
    I = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 
    5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 
    7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 10, 10, 10, 10, 
    10, 10, 10, 10, 10, 10)), row.names = c(NA, -60L), class = "data.frame")

看起来您有一个
rate
列名,但公式中没有?请粘贴
dput(动力学)
以便我们可以复制。嗨,我已经添加了输出。速率部分是公式开头的v~查看错误:
data=list(速率=c(0.030735……
。您使用了一个列名为
的数据帧,而不是
v
。我得到的错误是
。除了所引用的问题外,问题中缺少起始值,并且模型无法识别,因为Km和Vmax的任何值如果它们的比率相同,将给出相同的结果模型
structure(list(v = c(0.030735, 0.036813, 0.043511, 0.04958, 0.053996, 
0.059996, 0.064517, 0.062283, 0.069128, 0.070157, 0.010265, 0.012665, 
0.016841, 0.020061, 0.023298, 0.025832, 0.026651, 0.028431, 0.030125, 
0.039977, 0.00938, 0.012413, 0.016107, 0.020513, 0.021588, 0.023146, 
0.026004, 0.024654, 0.026586, 0.032169, 0.008452, 0.011441, 0.015973, 
0.017618, 0.019015, 0.021235, 0.024005, 0.025089, 0.02536, 0.028029, 
0.007178, 0.010141, 0.012837, 0.019752, 0.019955, 0.020838, 0.021742, 
0.021748, 0.024367, 0.027416, 0.008012, 0.009509, 0.012265, 0.013161, 
0.014029, 0.014719, 0.018321, 0.02025, 0.021642, 0.026193), s = c(20L, 
30L, 40L, 60L, 70L, 80L, 100L, 120L, 150L, 180L, 20L, 30L, 40L, 
60L, 70L, 80L, 100L, 120L, 150L, 180L, 20L, 30L, 40L, 60L, 70L, 
80L, 100L, 120L, 150L, 180L, 20L, 30L, 40L, 60L, 70L, 80L, 100L, 
120L, 150L, 180L, 20L, 30L, 40L, 60L, 70L, 80L, 100L, 120L, 150L, 
180L, 20L, 30L, 40L, 60L, 70L, 80L, 100L, 120L, 150L, 180L), 
    I = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 
    5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 
    7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 10, 10, 10, 10, 
    10, 10, 10, 10, 10, 10)), row.names = c(NA, -60L), class = "data.frame")