可化为线性回归的曲线回归

理论

例如这样的多次方

可以

就可以使其化成线性回归。转化为线性模型,再使用lm()

实例

这是一组随时间变化的数,t为时间,y为因变量

通过散点图可以看出是非线性曲线

下面是代码块,我将x平方设成一个新变量,并且将logy设成一个新变量

df = read.csv("F:\\learning_kecheng\\huigui\\9非线性回归\\data9.1.csv")
attach(df)
df$ly = log(df$y)
plot(t,y,data = df)
plot(t,ly,data = df)lm = lm(y~t,data = df)
summary(lm)
lm1 = lm(ly~t,data = df)
summary(lm1)
anova(lm1)df$t2 = df$t^2
lm2 = lm(y~t+t2,data = df)
summary(lm2)
lm3 = lm(ly~t+t2,data = df)
summary(lm3)
plot(t,y)
lines(t,exp(predict(lm3)),col = 'red')
abline(lm)AIC(lm1)
AIC(lm2)
AIC(lm3)

拟合结果

多项式回归

多项式回归同上,也是多项式作为一个新变量。同样使用lm(),注意此时平方项等使用I(x^2)

实例

以下面的数据为例

多项式通过一个一个实验,对比P值和AIC值

df9.2 = read.csv("F:\\learning_kecheng\\huigui\\9非线性回归\\data9.2.csv")
attach(df9.2)
lm1 = lm(y~x1)
lm2 = lm(y~x1+x2)
lm3 = lm(y~x1+x2+I(x1^2))
lm4 = lm(y~x1+I(x2^2))
lm5= lm(y~x1+x2+I(x1^2)+I(x2^2)++I(x2*x1))
lm_s = step(lm5)
summary(lm_s)
summary(lm1)
AIC(lm1)
AIC(lm2)
AIC(lm3)
AIC(lm4)
AIC(lm5)

非线性模型

有些模型不能转化为线性模型,就是非线性模型。
非线性模型,使用nls()
nls(formula,data,start,…),
formula 部分为非线性模型的函数表达式,start 为模型中未知参数的初始值。

nls()函数使用补充:

nls(formula, data, start, control, algorithm, trace, subset, weights, na.action, model, lower, upper, …)

注:start设置了参数初始值,设定trace为真以显示迭代过程。nls函数默认采用Gauss-Newton方法寻找极值,迭代过程中第一列为RSS值,后面三列是各参数估计值。
还有一种更为简便的方法就是采用内置自启动模型(self-starting Models),此时我们只需要指定函数形式,而不需要指定参数初始值,各种函数所对应的selfstarting函数名及使用语言格式详见R。下面代码有用SSgompertz 和SSweibull 进行演示。
更多信息可以在R的help中搜索 nls ,进入

在右下角selfstart链接进去就是。

实例

数据展示

df9.4 = read.csv("F:\\learning_kecheng\\huigui\\data9.4.csv")
attach(df9.4)
y= df9.4[,3]
t= df9.4[,2]
model = nls(y~k*(a^(b^t)),start = list(a=0.5,b=0,k=120))
model = nls(y~k*(a^(b^t)),start = list(a=0.5,b=0.5,k=120),lower = c(0,0,116),upper = c(1,1,200),algorithm = "port")
c = coef(model)    #将模型的回归系数赋给c
tt = c(1:30)
yp = c[3]*(c[1]^(c[2]^tt))#预测了30个
predict(model)            #只有25个观测值
t1 = t+1979
t2 = tt+1979
plot(t1,y,type = "o",ann = FALSE,ylim = c(0,160),xlim = c(1979,2015))
lines(t2,yp)#使用selfstart
#SSgompertz
#Asym*exp(-b2*b3^x)
fm1 <- nls(y ~ SSgompertz(t, Asym, b2, b3))
summary(fm1)
summary(model)#还可以使用SSweibull
df9.5 = read.csv("F:\\learning_kecheng\\huigui\\data9.5.csv")
attach(df9.5)
fm2 <- nls(y ~ SSweibull(t, Asym, Drop, lrc, pwr), data = df9.5)
summary(fm2 )

非线性回归-转化为线性回归以及非线性模型-用R语言实现相关推荐

  1. r语言 线性回归 相关系数_基于R语言的lmer混合线性回归模型

    原文 基于R语言的lmer混合线性回归模型​tecdat.cn 混合模型适合需求吗? 混合模型在很多方面与线性模型相似.它估计一个或多个解释变量对响应变量的影响.混合模型的输出将给出一个解释值列表,其 ...

  2. 可视为线性回归的曲线回归(R语言)

    用R软件进行计算,说闲话出原始数据对自变量的散点图,代码实现如下: data9.1<-read.csv("C:/Users/Administrator/Desktop/data9.1. ...

  3. 多元线性回归——《应用回归分析R语言版》

    #第3章-多元线性回归data3.1<-read.table('clipboard',header=T)#导入数据 lm3.1<-lm(y~x1+x2+x3+x4+x5+x6+x7+x8+ ...

  4. R语言PCA主成分分析(Principle Component Analysis)与线性回归结合实战

    R语言PCA主成分分析(Principle Component Analysis)与线性回归结合实战 目录 R语言PCA主成分分析(Principle Component Analysis)与线性回归 ...

  5. R语言dataframe数据列格式转换(从整型integer转化为浮点型float)

    R语言dataframe数据列格式转换(从整型integer转化为浮点型float) 目录 R语言dataframe数据列格式转换(从整型integer转化为浮点型float)

  6. R语言as.numeric函数将因子变量(factor)转化为数值变量(Numeric)

    R语言as.numeric函数将因子变量(factor)转化为数值变量(Numeric) 目录 R语言as.numeric函数将因子变量(factor)转化为数值变量(Numeric) #基本语法

  7. R语言as.Date函数将字符串转化为日期格式实战

    R语言as.Date函数将字符串转化为日期格式实战 目录 R语言as.Date函数将字符串转化为日期格式实战 #基础语法 # 仿真数据

  8. r语言datarame删除行_R语言缺失值的处理:线性回归模型插补

    原文链接: 拓端数据科技 / Welcome to tecdat​tecdat.cn 在当我们缺少值时,系统会告诉我用-1代替,然后添加一个指示符,该变量等于-1.这样就可以不删除变量或观测值. 视频 ...

  9. 多元线性回归分析c语言,多元线性回归公式推导及R语言实现

    多元线性回归 多元线性回归模型 实际中有很多问题是一个因变量与多个自变量成线性相关,我们可以用一个多元线性回归方程来表示. 为了方便计算,我们将上式写成矩阵形式: Y = XW 假设自变量维度为N W ...

最新文章

  1. ServiceMesh有关sidecar理解
  2. Python学习三——列表
  3. 吐血整理!近二十年全国数学联赛赛题大全,烧脑全集来啦!
  4. ApiController得到服务器端绝对路径
  5. win7开机动画_如果看腻了win7的启动界面,教你一招让你的win7启动与众不同
  6. Python程序:求最小公倍数
  7. Axure社区产品app原型通用版+prd通用产品需求文档+产品结构+业务流程+社区产品信息结构功能脑图
  8. 如何写好标题,才能轻松上简书首页?
  9. css全局加粗,CSS 实现矩形四个边角加粗的方法
  10. 用c语言编程二元一次方程组的根,c++用函数写输入abc求二元一次方程根
  11. 无法找到元素 ‘aop:aspectj-autoproxy‘ 的声明
  12. 嵌入式系统概论-考试总结
  13. mysql求和语句月份,sql – 按月求和并将月份作为列
  14. 2023新年快乐,友盟+伴你岁岁年年
  15. assoc在php中,在PHP中使用array_diff_assoc函数
  16. Biotin-PEG-SH生物素-聚乙二醇-巯基结构式;SH-PEG-Biotin
  17. python tell方法_Python File tell() 方法
  18. 如何提高在搜索引擎中的排名-百度排名-竞价排名-自然排名
  19. 模具设计干货,UG部件的自动取整
  20. stata自变量滞后

热门文章

  1. 监听器:统计在线人数
  2. DXP 原理图pcb布小知识
  3. Fedora 24系统基本命令
  4. 计算机科学数学基础及教材推荐(转)
  5. 三极管 场效应管(MOS管) 引脚
  6. 数字电视机顶盒的工作原理
  7. akshare sma策略
  8. 蒙特卡洛树搜索(MCTS)的实例代码
  9. iOS-自定义手势操作
  10. 数学分析 微分中值定理与应用(第6章)