在r中,获取';a';和';b';价值观

在r中,获取';a';和';b';价值观,r,regression,R,Regression,我为这个基本的问题道歉,但不管出于什么原因,我真的被卡住了。我希望从y=a*x^b的功率曲线‘a’和‘b’中得到输出值。假设我有这个数据集: x y log10(x) log10(y) 7 240 0.84509804 2.380211242 45 610 1.653212514 2.785329835 14 340 1.146128036 2.531478917 30

我为这个基本的问题道歉,但不管出于什么原因,我真的被卡住了。我希望从y=a*x^b的功率曲线‘a’和‘b’中得到输出值。假设我有这个数据集:

 x       y       log10(x)         log10(y)
 7      240     0.84509804      2.380211242
45      610     1.653212514     2.785329835
14      340     1.146128036     2.531478917
30      500     1.477121255     2.698970004
24      450     1.380211242     2.653212514
57      690     1.755874856     2.838849091
它在excel中生成以下图形:


使用excel示例,我如何在
r
中获得a=2.465和b=0.2401的输出值。

数据
是您的数据集:

y=data[,3]
x= data[,4]

nls(x ~ A * y ^ B)
Nonlinear regression model
  model: x ~ A * y^B
   data: parent.frame()
     A      B 
2.4635 0.2421 
 residual sum-of-squares: 0.0008733

Number of iterations to convergence: 5 
Achieved convergence tolerance: 6.774e-06

请看以下内容(并使您的问题下次重现。这可能也会帮助您指出确切的问题):

x您的数据:

DF <- read.table(text="x       y       log10(x)         log10(y)
7      240     0.84509804      2.380211242
45      610     1.653212514     2.785329835
14      340     1.146128036     2.531478917
30      500     1.477121255     2.698970004
24      450     1.380211242     2.653212514
57      690     1.755874856     2.838849091", header=TRUE)

使用函数
nls
。您的图形没有绘制上面的数字。张贴正确的图表,或显示您是如何获得此图表的。我尝试了
nls
,但出现了以下错误:
nls(x~A*y^B,start=list(A=0,B=0))
nls模型中的错误(公式,mf,start,wts):初始参数估计的奇异梯度矩阵使用对数变换对
nls
的初始参数值进行线性化和估计。可能将其包装在一个
selfStart
模型中。我对值不感兴趣,而是对确定值感兴趣。这些值将在一个模型中循环,该模型在每个循环中检索不同的“a”和“b”值,然后根据“a”和“b”的不同输出计算不同的结果。感谢罗兰。然而,我遇到了一个新问题。我把这个函数放在一个循环中(它循环了1000次),当我尝试使用nls函数时,我得到:“nls中的错误(y~SSpower[[j]][[I]](x,:迭代次数超过了最大值50此外:警告消息:在nls中(y~SSpower[[j]][[I]](x):没有为某些参数指定的起始值。将“a”、“b”初始化为“1”。考虑指定“开始”或使用SelfStutt模型。
DF <- read.table(text="x       y       log10(x)         log10(y)
7      240     0.84509804      2.380211242
45      610     1.653212514     2.785329835
14      340     1.146128036     2.531478917
30      500     1.477121255     2.698970004
24      450     1.380211242     2.653212514
57      690     1.755874856     2.838849091", header=TRUE)
SSpower <- selfStart(~ A*x^B,
                     function(mCall, data, LHS)
                     {
                       xy <- sortedXyData(mCall[["x"]], LHS, data)
                       if(nrow(xy) < 3) {
                         stop("Too few distinct x values to fit a power function")
                       }
                       z <- xy[["y"]]
                       xy[["logx"]] <- log(xy[["x"]])     
                       xy[["logy"]] <- log(xy[["y"]])  
                       aux <- coef(lm(logy ~ logx, xy))
                       pars <- c(exp(aux[[1]]), aux[[2]])
                       setNames(pars,
                                mCall[c("A", "B")])
                     }, c("A", "B"))
fit <- nls(y ~ SSpower(x, A, B), data=DF)
plot(y~x, data=DF)
lines(x=1:60, y=predict(fit, newdat=list(x=1:60)))