Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将对数回归拟合到“a”;负指数“;R中的散点图_R_Regression_Logarithm - Fatal编程技术网

如何将对数回归拟合到“a”;负指数“;R中的散点图

如何将对数回归拟合到“a”;负指数“;R中的散点图,r,regression,logarithm,R,Regression,Logarithm,我有一个日降雨量(x)和观测值(y)的散点图,它看起来像是x^-2图的右/正x值的一半,或者是以1/2为底的对数图。基本上,当x值非常低时,y值非常高。x值越大,y值越低。但是y值的下降速度变慢,y值永远不会为负 以下是一个具有代表性的样本: rain <- c(1, 1.2, 1.3, 2.5, 3.2, 4.2, 5, 7, 7.5, 10.3, 11.7, 12.9, 14.1, 15, 15.5, 17.5, 18.3, 20, 20.2, 20.3, 25, 28, 30, 3

我有一个日降雨量(x)和观测值(y)的散点图,它看起来像是x^-2图的右/正x值的一半,或者是以1/2为底的对数图。基本上,当x值非常低时,y值非常高。x值越大,y值越低。但是y值的下降速度变慢,y值永远不会为负

以下是一个具有代表性的样本:

 rain <- c(1, 1.2, 1.3, 2.5, 3.2, 4.2, 5, 7, 7.5, 10.3, 11.7, 12.9, 14.1, 15, 15.5, 17.5, 18.3, 20, 20.2, 20.3, 25, 28, 30, 34, 40)

 obs <- c(42, 44, 43.9, 43.5, 35, 22, 18.4, 15.3, 10, 6.2, 5.7, 4, 3.7, 2.3, 2, 2.7, 3.5, 3, 2.9, 4, 1.6, 2.2, 1.6, 1.3, 0.8)

rain您的
obs
变量非常适合
rain
的倒数。比如说

dev.new(width=12, height=6)
oldp <- par(mfrow=c(1, 2))
plot(obs~rain)
lines(rain, 1/rain*40)
因此,
k
的最佳估计值为57.145。nls的主要缺点是必须提供系数的起始值。它也可能无法收敛,但对于我们在这里使用的简单函数,只要您能够估计合理的起始值,它就可以正常工作

如果
rain
可以有零值,则可以添加截距:

obs.nls <- nls(obs ~ k / (a + rain), start=list(a=1, k=40))
summary(obs.nls)
# 
# Formula: obs ~ k/(a + rain)
# 
# Parameters:
#   Estimate Std. Error t value Pr(>|t|)    
# a   1.4169     0.4245   3.337  0.00286 ** 
# k 117.5345    16.6878   7.043 3.55e-07 ***
# ---
# Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# 
# Residual standard error: 4.638 on 23 degrees of freedom

Number of iterations to convergence: 10 
Achieved convergence tolerance: 6.763e-06
obs.nls | t |)
#a 1.4169 0.4245 3.337 0.00286**
#k 117.5345 16.6878 7.043.55e-07***
# ---
#签名。代码:0'***'0.001'***'0.01'*'0.05'.'0.1''1
# 
#剩余标准误差:23个自由度上的4.638
收敛的迭代次数:10
达到收敛公差:6.763e-06

请注意,标准误差较小,但曲线高估了
rain>10的实际值

您的
obs
变量与
rain
的倒数非常吻合。比如说

dev.new(width=12, height=6)
oldp <- par(mfrow=c(1, 2))
plot(obs~rain)
lines(rain, 1/rain*40)
因此,
k
的最佳估计值为57.145。nls的主要缺点是必须提供系数的起始值。它也可能无法收敛,但对于我们在这里使用的简单函数,只要您能够估计合理的起始值,它就可以正常工作

如果
rain
可以有零值,则可以添加截距:

obs.nls <- nls(obs ~ k / (a + rain), start=list(a=1, k=40))
summary(obs.nls)
# 
# Formula: obs ~ k/(a + rain)
# 
# Parameters:
#   Estimate Std. Error t value Pr(>|t|)    
# a   1.4169     0.4245   3.337  0.00286 ** 
# k 117.5345    16.6878   7.043 3.55e-07 ***
# ---
# Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# 
# Residual standard error: 4.638 on 23 degrees of freedom

Number of iterations to convergence: 10 
Achieved convergence tolerance: 6.763e-06
obs.nls | t |)
#a 1.4169 0.4245 3.337 0.00286**
#k 117.5345 16.6878 7.043.55e-07***
# ---
#签名。代码:0'***'0.001'***'0.01'*'0.05'.'0.1''1
# 
#剩余标准误差:23个自由度上的4.638
收敛的迭代次数:10
达到收敛公差:6.763e-06

请注意,标准误差较小,但曲线高估了
rain>10的实际值

您能给我们显示一个?我添加了一个显示曲线的数据样本!试试obs~exp(a+b/rain+c*log(rain))你能给我们看看a?我添加了一个显示曲线的数据样本!试试obs~exp(a+b/rain+c*log(rain)),你也可以试试glm(obs~rain,family=gaussian(link=“inverse”)
谢谢你!回归是否有截距,或者只是obs=57.145*rain^-1?没有截距,因为1/0是无穷大。如果存在rain=0的观测值,则可以添加一个项将曲线向左移动:
obs~1/(rain+a)*k
或等效项:
obs~k/(rain+a)
。从
a=1开始
。您也可以尝试
glm(obs~rain,family=gaussian(link=“inverse”)
谢谢您!回归是否有截距,或者只是obs=57.145*rain^-1?没有截距,因为1/0是无穷大。如果存在rain=0的观测值,则可以添加一个项将曲线向左移动:
obs~1/(rain+a)*k
或等效项:
obs~k/(rain+a)
。从
a=1开始。
obs.nls <- nls(obs ~ k / (a + rain), start=list(a=1, k=40))
summary(obs.nls)
# 
# Formula: obs ~ k/(a + rain)
# 
# Parameters:
#   Estimate Std. Error t value Pr(>|t|)    
# a   1.4169     0.4245   3.337  0.00286 ** 
# k 117.5345    16.6878   7.043 3.55e-07 ***
# ---
# Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# 
# Residual standard error: 4.638 on 23 degrees of freedom

Number of iterations to convergence: 10 
Achieved convergence tolerance: 6.763e-06