stats

2023-11-03

本篇介绍基础包stats中的一个函数nls(),它的作用是求解非线性回归的待定参数。

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

主要参数的要求如下:

  • formula:非线性回归的形式,格式为y ~ f(x1, x2,...)

  • data:数据源;一般为数据框或列表结构,不能为矩阵结构;

  • start:待定参数的起始值;列表结构。

比如,S型曲线可以很好地拟合传染病感染人数的增加趋势。本文示例使用的数据是2020年1月至3月我国新冠肺炎的确诊人数(示例数据可在后台发送关键词“示例数据”获取)。

library(readxl)
covid <- read_xlsx("107.1-china-covid19.xlsx",sheet = 1)

library(tidyverse)
library(magrittr)
data <- covid %>%
  group_by(date) %>%
  summarise(total = sum(confirmed))
plot(data$total, type = "l")
829789be31af92cf5632073351cd0849.png
  • 从上图可以看出,累积确诊人数的增长趋势大致呈S型。

一个典型的S型曲线的函数形式如下:

Scurve = function(t, a, b, c) 
  return(c/(1+exp(a*t+b)))

v = apply(matrix(-10:10), 1, Scurve,
      a = -1, b = 0, c = 80000)
plot(-10:10, v, type = "l")
6710b1fb37a0e05d51246a52003f995c.png

下面使用nls()函数求解S型函数的相关参数,也就是abc

data$t = 1:dim(data)[1]
fit <- nls(formula = total ~ Scurve(t, a, b, c),
           data = data,
           start = list(a = -1, b = 10, c = 80000))
fit
## Nonlinear regression model
##   model: total ~ Scurve(t, a, b, c)
##    data: data
##          a          b          c 
##    -0.2225     8.7560 81216.6896 
##  residual sum-of-squares: 202669699
## 
## Number of iterations to convergence: 8 
## Achieved convergence tolerance: 9.394e-06
  • 需要注意的是,起始值的选择非常关键,要尽量靠近真实值,若相差太大可能会报错。

plot(data$t, data$total, type = "l", 
     xlab = "天数", ylab = "累积确诊数")
lines(fitted(fit), col = "red",
      lty = 2)
legend("topleft", legend = c("原始数据", "拟合值"),
       lty = c(1,2), col = c("black", "red"))
c210689e76b15116db57e86b2fe1a455.png

下面仅使用前50天的数据来拟合S型曲线。

data2 = data[1:50,]
fit2 <- nls(formula = total ~Scurve(t, a, b, c),
            data = data2, 
            start = list(a = -1, b = 10, c = 80000))
fit2
## Nonlinear regression model
##   model: total ~ Scurve(t, a, b, c)
##    data: data2
##          a          b          c 
##    -0.2105     8.4264 86016.4864 
##  residual sum-of-squares: 159722376
## 
## Number of iterations to convergence: 16 
## Achieved convergence tolerance: 8.084e-06

plot(data2$t, data2$total, type = "l", 
     xlab = "天数", ylab = "累积确诊数",
     xlim = c(1,91), ylim = c(0, 85000))
lines(predict(fit2, data), col = "red",
      lty = 2)
legend("topleft", legend = c("原始数据", "拟合值"),
       lty = c(1,2), col = c("black", "red"))
bab3b1c692fc2eff8787c4d719c06d05.png
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

stats 的相关文章

  • Django 的内联管理:一个“预填充”字段

    我正在开发我的第一个 Django 项目 我希望用户能够在管理中创建自定义表单 并向其中添加字段当他或她需要它们时 为此 我在我的项目中添加了一个可重用的应用程序 可在 github 上找到 https github com stephen
  • 与区域指示符字符类匹配的 python 正则表达式

    我在 Mac 上使用 python 2 7 10 表情符号中的标志由一对表示区域指示符号 https en wikipedia org wiki Regional Indicator Symbol 我想编写一个 python 正则表达式来在
  • 元组有什么用?

    我现在正在学习 Python 课程 我们刚刚介绍了元组作为数据类型之一 我阅读了它的维基百科页面 但是 我无法弄清楚这种数据类型在实践中会有什么用处 我可以提供一些需要一组不可变数字的示例吗 也许是在 Python 中 这与列表有何不同 每
  • 如何使用 opencv.omnidir 模块对鱼眼图像进行去扭曲

    我正在尝试使用全向模块 http docs opencv org trunk db dd2 namespacecv 1 1omnidir html用于对鱼眼图像进行扭曲处理Python 我正在尝试适应这一点C 教程 http docs op
  • 安装了 32 位的 Python,显示为 64 位

    我需要运行 32 位版本的 Python 我认为这就是我在我的机器上运行的 因为这是我下载的安装程序 当我重新运行安装程序时 它会将当前安装的 Python 版本称为 Python 3 5 32 位 然而当我跑步时platform arch
  • 处理 Python 行为测试框架中的异常

    我一直在考虑从鼻子转向行为测试 摩卡 柴等已经宠坏了我 到目前为止一切都很好 但除了以下之外 我似乎无法找出任何测试异常的方法 then It throws a KeyError exception def step impl contex
  • 需要在python中找到print或printf的源代码[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在做一些我不能完全谈论的事情 我
  • 使用字典映射数据帧索引

    为什么不df index map dict 工作就像df column name map dict 这是尝试使用index map的一个小例子 import pandas as pd df pd DataFrame one A 10 B 2
  • 立体太阳图 matplotlib 极坐标图 python

    我正在尝试创建一个与以下类似的简单的立体太阳路径图 http wiki naturalfrequent com wiki Sun Path Diagram http wiki naturalfrequency com wiki Sun Pa
  • 使用 xlrd 打开 BytesIO (xlsx)

    我正在使用 Django 需要读取上传的 xlsx 文件的工作表和单元格 使用 xlrd 应该可以 但因为文件必须保留在内存中并且可能不会保存到我不知道如何继续的位置 本例中的起点是一个带有上传输入和提交按钮的网页 提交后 文件被捕获req
  • Python 2:SMTPServerDisconnected:连接意外关闭

    我在用 Python 发送电子邮件时遇到一个小问题 me my email address you recipient s email address me email protected cdn cgi l email protectio
  • Python,将函数的输出重定向到文件中

    我正在尝试将函数的输出存储到Python中的文件中 我想做的是这样的 def test print This is a Test file open Log a file write test file close 但是当我这样做时 我收到
  • 在Python中检索PostgreSQL数据库的新记录

    在数据库表中 第二列和第三列有数字 将会不断添加新行 每次 每当数据库表中添加新行时 python 都需要不断检查它们 当 sql 表中收到的新行数低于 105 时 python 应打印一条通知消息 警告 数量已降至 105 以下 另一方面
  • 如何通过 TLS 1.2 运行 django runserver

    我正在本地 Mac OS X 机器上测试 Stripe 订单 我正在实现这段代码 stripe api key settings STRIPE SECRET order stripe Order create currency usd em
  • Jupyter Notebook 找不到 Python 模块

    不知道发生了什么 但每当我使用 ipython 氢 原子 或 jupyter 笔记本时都找不到任何已安装的模块 我知道我安装了 pandas 但笔记本说找不到 我应该补充一点 当我正常运行脚本时 python script py 它确实导入
  • 如何断言 Unittest 上的可迭代对象不为空?

    向服务提交查询后 我会收到一本字典或一个列表 我想确保它不为空 我使用Python 2 7 我很惊讶没有任何assertEmpty方法为unittest TestCase类实例 现有的替代方案看起来并不正确 self assertTrue
  • 实现 XGboost 自定义目标函数

    我正在尝试使用 XGboost 实现自定义目标函数 在 R 中 但我也使用 python 所以有关 python 的任何反馈也很好 我创建了一个返回梯度和粗麻布的函数 它工作正常 但是当我尝试运行 xgb train 时它不起作用 然后 我
  • 使用for循环时如何获取前一个元素? [复制]

    这个问题在这里已经有答案了 可能的重复 Python 循环内的上一个和下一个值 https stackoverflow com questions 1011938 python previous and next values inside
  • 在 JavaScript 函数的 Django 模板中转义字符串参数

    我有一个 JavaScript 函数 它返回一组对象 return Func id name 例如 我在传递包含引号的字符串时遇到问题 Dr Seuss ABC BOOk 是无效语法 I tried name safe 但无济于事 有什么解
  • Kivy - 单击按钮时编辑标签

    我希望 Button1 在单击时编辑标签 etykietka 但我不知道如何操作 你有什么想法吗 class Zastepstwa App def build self lista WebOps getList layout BoxLayo

随机推荐

  • 美化VC界面(用户登录界面)

    源码下载 http download csdn net source 2840164 代码运行效果图如下 VC开发程序单调的界面相信大家都是深有感触 提到界面美化编程 人们都会说做界面不要用VC写 太难了 一句俗语 难者不会 会者不难 VC
  • Jmeter使用HTTP代理服务器无法打开网页问题的解决方法

    大家都知道Jmeter有录制HTTP请求的功能 HTTP代理服务器中 但是在操作中却会提示如下页面 Root CA certificate ApacheJMeterTemporaryRootCA created in JMeter bin
  • Apache Tomcat 8.5安装配置教程

    一 安装JDK步骤及配置JDK环境变量步骤省略 二 安装Tomcat 提前请先安装JDK 三 安装官网 直接点击 Tomcat很特殊 各个版本之间可能会相互不兼容 这里示例安装8 5的版本 点击tomcat8后根据自己的电脑选择相应的型号
  • git终端显示分支名称

    在使用git操作的时候 有时候会记错当前自己是在哪个分支上 从而造成一些不必要的麻烦 比如需要在某个分支上开发某个特性 结果误在master分支上进行了相关的操作 并且还push到了远端仓库 事后自己有可能还并不知晓 从而给自己带来了不必要
  • HTML基本标签

    文章目录 前言 一 HTML简介 二 HTML标签介绍 1 标题标签 2 段落标签 3 换行标签 4 hr标签 5 span标签 6 div标签 7 img标签 8 超链接标签 9 注释标签 10 特殊字符 11 格式化标签 12 sup上
  • 解决qt在线安装慢的方法

    iso mirrors ustc edu cn qtproject official releases online installers qt unified windows x64 online exe 步骤 1 点击上面链接 下载qt
  • web操作系统开发的_哪种操作系统更适合Web开发

    web操作系统开发的 If you re new to web development and are in the market for a new laptop you might be wondering which operatin
  • 17.linuxGPIO应用编程

    除了LED类设备可以通过sysfs文件系统控制以外 还可以使用该虚拟文件系统控制GPIO的高低电平 输入以及中断检测 一 GPIO控制高低电平 进入目录sys class gpio下可以看到有如下文件 其中gpiochip0对应硬件的GPI
  • 导入数据出错With the Partitioning, OLAP and Data Mining options

    因为oracle没有启动分区Partitioning 启动方法 pl sql执行 select from v option where parameter Partitioning
  • mybatis 遍历map实例

    mybatis 遍历map实例 map 数据如下 Map
  • 2021年6月程序员工资统计,平均15052元,你拖后腿了吗?

    2021年6月全国招收程序员435501人 2021年6月全国程序员平均工资15052元 工资中位数13000元 其中96 的人的工资介于1750元到150000元 这两年虽然平均工资涨了不少 但是工资中位数没怎么变 这说明什么呢 一 主要
  • 数据库文件怎么查看服务器,服务器如何查看文件个数据库文件

    服务器如何查看文件个数据库文件 内容精选 换一换 通常在将数据导入数据库前 即将入库的数据已经在相关主机上了 我们称这种保存着待入库数据的服务器为数据服务器 此时 只需检测以确认数据服务器和GaussDB for openGauss 集群能
  • 【Posts阅读】关于 Deep Sets 和 Neural Processes的简单介绍

    A Gentle Introduction to Deep Sets and Neural Processes 关于 Deep Sets 和 Neural Processes的简单介绍 Link https gordonjo github
  • 无法定位软件包:libappindicator3-1_libappindicator3-1软件包安装失败

    libappindicator3 1 所依赖的软件包 libindicator3 7 上链接 libindicator3 7 官网地址 http ftp cn debian org debian pool main libi libindi
  • GORM-GEN快速上手

    目录 1 什么是 GEN 2 GEN特性 3 快速使用GEN 3 1 下载 3 2 生成 4 基础查询 5 自定义 SQL 查询 6 demo源码 1 什么是 GEN 官方文档 Gen Guides GORM The fantastic O
  • warning: ignoring unsupported character ‘问题修复

    rivers net wireless aic8800 Kconfig 1 ignoring unsupported character 问题修复 有一次编译内核 看到有下面的warning jian jian share kylin rk
  • windows live writer 离线写blog

    微软发布的软件windows live writer 可以离线写blog 也就是说 你可以在windows live writer这个软件编辑blog 然后点击 发布 见blog发送到指定网页上 前提是需要在windows live wri
  • 关于ios手机嵌套h5页面滚动兼容问题解决

    1 使用绝对定位 滚动元素使用绝对定位 position absolute top 0 left 0 bottom 0 height 100vh overflow y srcoll 2 添加兼容样式 webkit overflow scro
  • 华为OD机试 - 最大括号深度(Java)

    题目描述 现有一字符串仅由 六种括号组成 若字符串满足以下条件之一 则为无效字符串 任一类型的左右括号数量不相等 存在未按正确顺序 先左后右 闭合的括号 输出括号的最大嵌套深度 若字符串无效则输出0 0 字符串长度 100000 输入描述
  • stats

    本篇介绍基础包stats中的一个函数nls 它的作用是求解非线性回归的待定参数 nls formula data start control algorithm trace subset weights na action model lo