STATS 782 - Numerical Computation

news2024/10/7 16:27:26

文章目录

  • 一、Simple Graphics
    • 1. 用 plot()函数画图
  • 二、Optimization
    • 1. 简单求最值
    • 2. Interpolation(插值)
    • 3. optim()函数


一、Simple Graphics

1. 用 plot()函数画图

在这里插入图片描述
x 和 y:这是绘制散点图时用到的 x 和 y 坐标的数值。通常,x 和 y 是等长的数值向量。

① type:指定绘图的类型。可选值有:

“p”(点图,缺省值)
在这里插入图片描述

“l”(折线图)
在这里插入图片描述

“b”(点和线都画)
在这里插入图片描述

“c”(仅连接线)
“o”(点和线都画,线在点上)
“h”(直方图样式)
“s”(阶梯图)
“n”(不绘制任何图形,仅绘制坐标轴)

② main:用于指定图形的标题。

③ xlab 和 ylab:分别用于指定 x 轴和 y 轴的标签。

④ xlim 和 ylim:分别用于指定 x 轴和 y 轴的数值范围,例如:xlim = c(0, 10)。

⑤ col:指定点或线的颜色。
在这里插入图片描述

⑥ pch:指定点的形状,可选值为整数或字符。常见的整数形状包括:0(方形),1(圆形),2(三角形),等等。也可以使用字符(如 “a”、“b”、“c”)作为点的形状。
在这里插入图片描述

⑦ lty:指定线的类型,可选值为整数或字符。例如:1(实线,缺省值),2(虚线),3(点线),等等。

The line type can be specified by name: “solid”, “dashed”, “dotted”, “dotdash”, “longdash”, “twodash”

⑧ lwd:指定线的宽度,数值越大,线越粗。

例如:

> x <- 1:10
> y <- x^2
> plot(x, y, type = "b", col = "red", lwd = 2, pch = 16, main = "A Simple Plot", xlab = "X-axis", ylab = "Y-axis")

在这里插入图片描述

二、Optimization

Optimization is the process of finding a minimum or maximum for a function.

1. 简单求最值

使用 optimize() 函数:

# 找 sin 函数的最值
> optimize(sin, lower = 0, upper = 3,
maximum = TRUE, tol = 1e-10)
$maximum
[1] 1.5708
$objective
[1] 1
> pi/2
[1] 1.5708

2. Interpolation(插值)

插值是在已知一组给定点(xi, yi),i = 0, 1, …, n 的情况下,寻找一个函数 f(x),使其恰好穿过这些点。在这里,我们假设 x0 < x1 < x2 < … < xn,提供了一种在仅知道少数值时,可视化整个函数外观的方法。

样条插值(Spline Interpolation)使用多项式(通常为低阶)在给定值之间进行插值。相邻的多项式在它们的公共端点处达成一致(因为它们进行插值),并且可以使连接平滑(即导数连续)。

三次样条(Cubic Splines)是实践中最常用的样条。三次样条需要具有以下属性:
在这里插入图片描述


插值例:
通过样条插值法来估计一组观测数据(月平均气温)之间的平滑函数:
在这里插入图片描述

> xm = 1:13 + .5
> ym = c(20.1, 20.3, 19.4, 16.9, 14.3, 12.3, 11.4,
12.1, 13.5, 14.8, 16.7, 18.5, 20.1)
# 由于气温在12月到1月间具有周期性变化,所以选择使用周期样条
> f = splinefun(xm, ym, method = "periodic")

> x = seq(1.5, 13.5, length = 2000)
> plot(x, f(x), type = "l", col = "blue",
ylab = "Temperature")
> points(xm, ym, pch=20)

在这里插入图片描述

3. optim()函数

optimize 函数只适用于单变量函数的优化问题。当需要优化的函数包含两个或更多变量时,必须使用名为 optim 的函数。

optim 函数适用于平滑函数和非平滑函数。但如果函数是平滑的,通过指定针对平滑函数的方法,可以获得更好的性能。optim 函数提供了几种可通过 method 参数指定的方法。

默认的 “Nelder-Mead” 方法既适用于平滑函数,也适用于非平滑函数。然而,对于平滑函数,建议使用 “BFGS” 方法,因为它在优化平滑函数时的性能更佳。

使用 optim 函数例:
我们有如下表达式用于拟合一组数据:
在这里插入图片描述
但需确定 a 与 h 的值,才能得到最终的表达式,在这个例子中,我们试图找到一组参数 a 和 h(theta[1] 和 theta[2]),使得卡方统计量尽可能小。我们定义了一个函数 Q,用于计算给定参数 a 和 h 时的卡方统计量。

我们使用 R 中的 optim 函数来最小化 Q 函数,从初始值 θ = (5, 10) 开始优化过程:

> Q = function(theta)
	chi2(Hutterites,
		342 * diff(F(breaks, theta[1], theta[2])))

z = optim(c(5, 10), Q, method = "BFGS")

> z$par
[1] 3.1263 9.5822
> z$value
[1] 16.764

在参数 a 和 h 分别取 3.1263 和 9.5822 时,我们得到了卡方统计量的最小值 16.764。

再以此结果计算 p-value:

> pchisq(z$value, 13, lower=FALSE)
[1] 0.2103

得到的p值为0.2103。通常情况下,如果p值大于显著性水平(如0.05),则认为没有足够证据拒绝原假设。在这个例子中,原假设是估计的a和h值下的模型可以合理地描述数据。因为p值大于0.05,所以我们没有足够证据拒绝原假设,这意味着使用估计的a和h值的模型确实可以合理地描述数据。

[注]
① 为什么使得卡方统计量尽可能小?
卡方统计量(chi-square statistic)是衡量观察值与理论值之间差异的一种方法。在统计建模和拟合中,我们通常希望模型能够尽可能地拟合观察到的数据。为了实现这个目标,我们需要找到一组参数,使得模型的预测值与观测值之间的差异最小。

卡方统计量是一种衡量这种差异的方法,它计算了观察值与期望值(模型预测值)之间的偏差的平方和,然后将这些平方和归一化。通过最小化卡方统计量,我们可以找到一组参数,使得模型的预测值与实际观测值之间的差异最小。这样,我们就可以得到一个拟合效果较好的模型。

需要注意的是,卡方统计量并不总是适用于所有类型的拟合问题。它主要适用于计数或分类数据,或者数据服从某种已知分布的情况。在其他情况下,可能需要使用其他度量方法来衡量模型的拟合效果,例如均方误差(MSE)、最大似然估计(MLE)等。

② z $ convergence 的值为多少说明收敛?
在R中,optim函数的输出包含一个名为convergence的组件。z $ convergence的值为0表示优化过程正常收敛。如果 z $ convergence的值非0,那么说明优化过程可能没有正常收敛,可能需要调整初始参数值、优化方法或其他相关设置。在这种情况下,输出的结果可能不是一个可靠的最优解。

总之,如果 z$convergence 的值为0,那么说明优化过程已经正常收敛,可以信任并分析输出的结果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/444797.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux常用命令——iptables命令

在线Linux命令查询工具 iptables Linux上常用的防火墙软件 补充说明 iptables命令是Linux上常用的防火墙软件&#xff0c;是netfilter项目的一部分。可以直接配置&#xff0c;也可以通过许多前端和图形界面配置。 补充说明 - 语法选项基本参数 - 命令选项输入顺序工作机制…

【java】CGLIB动态代理原理

文章目录 1. 简介2. 示例3. 原理4. JDK动态代理与CGLIB动态代理区别&#xff08;面试常问&#xff09; 1. 简介 CGLIB的全称是&#xff1a;Code Generation Library。 CGLIB是一个强大的、高性能、高质量的代码生成类库&#xff0c;它可以在运行期扩展Java类与实现Java接口&a…

【SAP Abap】X-DOC:SE43 - SAP 用户菜单定义

X-DOC&#xff1a;SE43 - SAP 用户菜单定义 1、菜单结构2、菜单配置3、菜单自定义4、实践演示 1、菜单结构 SAP的菜单栏&#xff0c;支持按层次结构配置&#xff0c;包括以下两个概念&#xff1a; &#xff08;1&#xff09;菜单项&#xff1a;具体的一个菜单目录或菜单项&…

爬虫日常-12306自动购票程序

文章目录 前言页面分析代码设计 前言 hello兄弟们&#xff0c;最近在钻研新鲜知识&#xff0c;一不留神没想起来更新。今天我们顺着前面几篇文章完整的写出一篇12306的自动购票软件。 首先把我们已经写完的前期步骤代码再顺一遍 from selenium.webdriver import Chrome from…

阿里大佬都在熬夜肝的Java程序优化笔记,程序性能提高了5倍!

前言 此笔记从软件设计、编码和JVM等维度阐述性能优化的方法和技巧&#xff0c;分享资深架构师Java程序性能优化的宝贵经验&#xff0c;专注于Java应用程序的优化方法、技巧和思想&#xff0c;并深度剖析JDK部分的实现。具有较强的层次性和连贯性&#xff0c;深入剖析软件设计…

Word控件Spire.Doc 【脚注】教程(5):单词脚注的位置与数字格式

Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下&#xff0c;轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具&#xff0c;专注于创建、编辑、转…

1.19 从0开始学习Unity游戏开发--扩展编辑器

在之前的篇章里面&#xff0c;我们一直在编辑器里面干活&#xff0c;然后做好资源的编辑和代码开发后&#xff0c;我们可以直接在编辑器内点击那个播放按钮就能真实的把游戏跑起来&#xff0c;但是有时候&#xff0c;我们可能希望在菜单里面加个按钮&#xff0c;这样我们可以直…

C++ STL学习之【容器适配器】

✨个人主页&#xff1a; 夜 默 &#x1f389;所属专栏&#xff1a; C修行之路 &#x1f38a;每篇一句&#xff1a; 图片来源 A year from now you may wish you had started today. 明年今日&#xff0c;你会希望此时此刻的自己已经开始行动了。 文章目录 &#x1f307;前言&a…

内存泄漏动态检测(valgrind)

初步判断是否有泄漏 Linux 内存性能优化 —— 高内存使用及内存泄漏排查 比如该文的介绍&#xff0c;需要初步了解top free -h等命令&#xff1b; 主要看free 内存泄漏检测方法&#xff1a; 静态我常用的是cppcheck&#xff1b; 动态的 Linux下内存泄漏定位方法 这个文章…

Node.js 一:基础

1.node.js是什么&#xff1a; 2.node.js的作用&#xff1a; 1.服务器应用&#xff1a;b站.. 2.开发工具类应用&#xff1a;webpack&#xff0c;bable等等 3.桌面端应用&#xff1a;vscode&#xff0c;postman等 这些应用都是基于electron框架开发&#xff0c;electron基于node…

【设计模式】23种设计模式之行为型模式

一、模板方法模式 1、豆浆制作问题 编写制作豆浆的程序&#xff0c;说明如下: 1&#xff09;、制作豆浆的流程 选材--->添加配料--->浸泡--->放到豆浆机打碎 2&#xff09;、通过添加不同的配料&#xff0c;可以制作出不同口味的豆浆 3&#xff09;、选材、浸泡和放…

拥抱还是革命,ChatGPT时代 AI专家给出15条科研生存之道

来源&#xff1a;专知 微信号&#xff1a;Quan_Zhuanzhi 你是学术机构的人工智能研究员吗?你是否担心自己无法应对当前人工智能的发展步伐?您是否觉得您没有(或非常有限)访问人工智能研究突破所需的计算和人力资源?你并不孤单; 我们有同样的感觉。越来越多的人工智能学者不…

vuepress-yarn-nodes-静态网页_个人博客搭建

nodes官网&#xff1a;https://nodejs.org/en 先下载nodes进行安装&#xff0c;一般nodes会自带包管理器npm&#xff0c;注意npm与nodes的对应关系&#xff0c;除了npm之外还有yarn包管理器&#xff0c;一般会用npm安装这个包 npm install --global yarnnpm降低版本的方法 np…

LeetCode 1026. 节点与其祖先之间的最大差值

【LetMeFly】1026.节点与其祖先之间的最大差值 力扣题目链接&#xff1a;https://leetcode.cn/problems/maximum-difference-between-node-and-ancestor/ 给定二叉树的根节点 root&#xff0c;找出存在于 不同 节点 A 和 B 之间的最大值 V&#xff0c;其中 V |A.val - B.val…

《花雕学AI》24:如何用万能Prompt公式与ChatGPT进行高效的对话测试

引言 你是否想要与人工智能进行有趣、有价值、有说服力的对话&#xff1f;你是否想要使用ChatGPT这个强大而灵活的对话生成器来创造出任何类型和主题的对话&#xff1f;如果是这样&#xff0c;那么你需要了解一个简单而强大的工具&#xff0c;就是万能Prompt公式。 万能Promp…

微软office认证课程

感谢阅读 非原创声明&#xff0c;根据微软课程学习理解而已Get started with Microsoft 365Work Smarter with Microsoft Word与 Microsoft Word 更加智能地工作Microsoft 365 SubscriptionsMicrosoft 365 订阅个人补充Exercise: Finding Help and changing account settings练…

cpp 程序与 c 程序的相互调用(extern “C“ 的使用)

实际在编译的过程中&#xff0c;.cpp 文件调用 .c文件中的函数会出错。假设代码结构如下&#xff1a; 目录 一、编译过程分析 1、预处理 2、编译 3、汇编 4、链接 二、问题解决 1、解决方案 2、解决思路 一、编译过程分析 1、预处理 该阶段头文件会被展开&#xff0c…

FPGA学习笔记(二):时序逻辑之计数器

与组合逻辑&#xff08;给定输入&#xff0c;输出是确定的&#xff0c;与时间无关&#xff09;相比较&#xff0c;时序逻辑不仅仅与输入信号相关&#xff0c;还与时钟信号相关。 D触发器&#xff1a;在上升沿时&#xff08;CLK&#xff09;才将输出&#xff08;Q&#xff09;修…

Failed to load property source from location ‘classpath:/application.yaml‘

问题 项目起动时&#xff0c;找不到yaml&#xff0c;各种处理还是没有解决&#xff0c;比如&#xff0c;clean&#xff0c;重启电脑&#xff0c;检查utf8等。 同事拉的新代码又是正常可以跑&#xff0c;这就有点奇怪了。 11:07:39.682 [main] ERROR org.springframework.boot.…

【19】linux进阶——后台运行()和nohup命令

大家好&#xff0c;这里是天亮之前ict&#xff0c;本人网络工程大三在读小学生&#xff0c;拥有锐捷的ie和红帽的ce认证。每天更新一个linux进阶的小知识&#xff0c;希望能提高自己的技术的同时&#xff0c;也可以帮助到大家 另外其它专栏请关注&#xff1a; 锐捷数通实验&…