在r中,获取';a';和';b';价值观
我为这个基本的问题道歉,但不管出于什么原因,我真的被卡住了。我希望从y=a*x^b的功率曲线‘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
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)))