当前位置: 首页 > article >正文

【计量地理学】实验一 地理数据的基本统计分析

阅前提示:

计量地理学实验课的实验报告为当堂提交,相较以往实验报告缺少打磨与整理的时间,因此内容中不可避免出现相关错误!!!

出于个人完美主义的原则本不愿发布(其实就是黑历史),但考虑到计量地理学实验课难度与部分同学要求,还是决定将此内容更新至主页中,主要帮助大家了解实验课的基本内容,以下内容并不代表正确解法,也无法作为正确参考

该实验课给分友好,只需要为各位同学认真独立自主做实验与编写报告,哪怕没有做出最终结果,也可以得到自己理想的分数。

一、实验结果

1.计算最小值:计算最小值的代码与逻辑都较为简单,我们可以仿照老师所提供的计算最大值的代码,修改其中的if (p.z < curMin)的符合即可:

  double Min(){// 首先检验是否打开了文件if (PointList == null) return -9999;if (PointList.Count == 0) return -9999;Point p = (Point)PointList[0];double curMin = p.z;// 将第一个点的z值赋值给当前的最小值// 遍历点集,一一与当前的最小值进行对比for (int i = 1; i < PointList.Count; i++){p = (Point)PointList[i];if (p.z < curMin)curMin = p.z;}return curMin;}

2.计算均值:计算均值我们只需要首先计算z值的总和,然后将总和除以个数即可:

double Mean(){
// 首先检验是否打开了文件if (PointList == null) return -9999;if (PointList.Count == 0) return -9999;double sum = 0;# 计算总和foreach (Point p in PointList){sum += p.z;}return sum / PointList.Count; # 用总和除以个数即为均值}

3.计算中位数:计算数据的中位数我们主要使用到了C# 中用于对列表进行排序的方法,它可以按升序或者指定的比较规则来对列表中的元素进行排序,在这里通过查阅相关网上资料,我们使用 Sort() 方法来对 sort列表进行排序,以便能够计算中位数。

需要额外考虑的是列表中数据的个数,如果数据个数为偶数,我们则需要进行一个平均值的计算,如果数据数量为奇数,则可以直接获得中间值:

double Median(){// 首先检验是否打开了文件if (PointList == null) return -9999;if (PointList.Count == 0) return -9999;// 创建一个列表用于存储排序后的数据List<double> sort = new List<double>();// 获取点数据foreach (Point p in PointList){sort.Add(p.z);}// 利用sort方法进行排序sort.Sort();// 获取数据的个数int n = sort.Count;if (n % 2 == 0){return (sort[n / 2] + sort[(n / 2) - 1]) / 2.0;}else{return sort[n / 2];}}

4.计算方差:根据方差的公式可知,方差的计算需要使用到均值,因此我们可以直接使用上述步骤中创建的Mean函数获得均值,再利用C#中的Math.Pow函数用以计算各个数据与均值间的差的平方和,即可得到平方差和,除以个数即为方差:

 double Variance(){// 首先检验是否打开了文件if (PointList == null) return -9999;if (PointList.Count == 0) return -9999;// 直接使用Mean函数获得中间值double mean = Mean();double sumSquared = 0;// 循环获得各点与均值的平方差最后求和foreach (Point p in PointList){sumSquared += Math.Pow(p.z - mean, 2);}// 平方差和除以个数即可得到方差return sumSquared / PointList.Count;}

5.计算标准差:标准差的计算直接利用上述实验步骤中获得的方差,再利用C#中的Math.Sqrt函数开方即可:

 double StdDev(){// 利用Sqrt方法进行开方return Math.Sqrt(Variance());}

6.计算标准差的无偏估计:计算标准差的无偏估计与计算标准差同理,根据公式可知,我们只需要首先获得标准差,再利用Math.Sqrt函数即可得到结果:

double UnbiasedStdDev(){double stdDev = StdDev();return stdDev * Math.Sqrt(PointList.Count / (PointList.Count - 1.0));}

7.计算变异系数:根据变异系数的公式可知,由我们上述代码中获得的均值除以方差即可:

 double CoefficientOfVariation(){double mean = Mean();double stdDev = StdDev();return stdDev / mean}

8.计算偏度系数:根据偏度系数的公式可知,我们可以再次利用先前步骤中使用到的Math.Pow方法,用以计算各个数据与均值间的立方和,最后除以标准差的立方即可:

double Skewness(){// 首先检验是否打开了文件if (PointList == null) return -9999;if (PointList.Count == 0) return -9999;// 利用已有函数获得均值与方差double mean = Mean();double stdDev = StdDev();// 用于存储每个数据点与均值的差的立方double sumL = 0;// 循环计算数据点与均值的差的立方和foreach (Point p in PointList){sumL += Math.Pow(p.z - mean, 3);}return (sumL / (PointList.Count * Math.Pow(stdDev, 3)));}

9.计算峰度系数:根据峰度系数的公式可知,该系数计算的代码思路与偏度系数基本相同,只不过一个主要使用到立方,一个主要使用到四次方,因此我们可以直接仿照偏度系数计算的代码最后结果如下所示:

double Kurtosis(){// 首先检验是否打开了文件if (PointList == null) return -9999;if (PointList.Count == 0) return -9999;double mean = Mean();double stdDev = StdDev();// 用于存储每个数据点与均值的差的四次方double sumFourth = 0;// 循环计算数据点与均值的差的四次方和foreach (Point p in PointList){sumFourth += Math.Pow(p.z - mean, 4);}return (sumFourth / (PointList.Count * Math.Pow(stdDev, 4))) - 3;}

二、实验心得

此次实验是我们第一次接触在C# 环境下进行代码的编写,在此前使用较多的代码编写语言均为Python,但在实际接触编写过后可以发现,其背后的根本逻辑都是一致的,我们需要额外注意与学习的点主要在于:如何灵活的运用C#中相关的函数与方法,因此在正式编写代码前我花费了较多的时间学习C#中主要的代数运算函数,大大减轻了我在代码编写中的任务,此次实验中我们主要使用到的C#中的函数有如下所示几项:

  1. Math.Pow(x, y): 该函数主要用于计算x的y次幂,在计算方差和偏度时,我们使用了该函数来计算平方和和立方和;
  2. Math.Sqrt(x): 该函数主要用于计算x的平方根,在计算标准差和标准差的无偏估计时,我们使用了该函数来对方差进行开方操作以获得标准差;
  3. List<T>.Sort(): Sort()函数是List<T>类中的一个方法,该函数用于对列表中的元素进行排序,在计算中位数时,我们使用了这个方法对存储数据的列表进行升序排序,大大减轻了我们在进行中位数判断时的工作。

相关文章:

【计量地理学】实验一 地理数据的基本统计分析

阅前提示&#xff1a; 计量地理学实验课的实验报告为当堂提交&#xff0c;相较以往实验报告缺少打磨与整理的时间&#xff0c;因此内容中不可避免出现相关错误&#xff01;&#xff01;&#xff01; 出于个人完美主义的原则本不愿发布&#xff08;其实就是黑历史&#xff09;…...

ChatPromptTemplate的使用

ChatPromptTemplate 是 LangChain 中专门用于管理多角色对话结构的提示词模板工具。它的核心价值在于&#xff0c;开发者可以预先定义不同类型的对话角色消息&#xff08;如系统指令、用户提问、AI历史回复&#xff09;&#xff0c;并通过数据绑定动态生成完整对话上下文。 1.…...

SQL Server查询优化

最常用&#xff0c;最有效的数据库优化方式 查询语句层面 避免全表扫描 使用索引&#xff1a;确保查询条件中的字段有索引。例如&#xff0c;查询语句 SELECT * FROM users WHERE age > 20&#xff0c;若 age 字段有索引&#xff0c;数据库会利用索引快速定位符合条件的记…...

Blender插件NodeWrangler导入贴图报错解决方法

Blender用NodeWrangler插件 CtrlShiftT 导入贴图 直接报错 解决方法: 用CtrlshiftT打开需要导入的材质文件夹时&#xff0c;右边有一个默认勾选的相对路径&#xff0c;取消勾选就可以了。 开启node wrangler插件&#xff0c;然后在导入贴图是取消勾选"相对路径"&am…...

QT中的宏

Q_UNUSED(event); 是 Qt 提供的一个宏&#xff0c;用于标记某个变量或参数在当前作用域中未被使用。它的主要作用是避免编译器发出“未使用变量”的警告。 背景 在 C 中&#xff0c;如果一个函数参数或变量在代码中没有被使用&#xff0c;编译器会发出警告&#xff0c;例如&a…...

java项目之基于ssm的药店药品信息管理系统(源码+文档)

项目简介 药店药品信息管理系统实现了以下功能&#xff1a; 个人信息管理 负责管理个人用户的信息。 员工管理 负责管理药店或药品管理机构的员工信息。 药品管理 负责管理药品的详细信息&#xff0c;可能包括药品名称、成分、剂量、价格、库存等。 进货管理 负责管理药品…...

论文分享 | HE-Nav: 一种适用于复杂环境中空地机器人的高性能高效导航系统

阿木实验室始终致力于通过开源项目和智能无人机产品&#xff0c;为全球无人机开发者提供强有力的技术支持&#xff0c;并推出了开源项目校园赞助活动&#xff0c;助力高校学子在学术研究与技术创新中取得更大突破。近日&#xff0c;香港大学王俊铭同学&#xff0c;基于阿木实验…...

【大语言模型】【个人知识库正式内容】提示工程:如何设计模型的提示语

知识库条目&#xff1a;提示工程&#xff0c;如何构建提示词。 &#x1f3d6;️ 当人人都能使用AI时&#xff0c;你如何才能变得更出彩&#xff1f;……让 AI 带有自己的Tag —— 一、简介 什么是提示语 (Prompt)&#xff1a; 提示语是用户输入给AI系统的指令或信息, 简单来说…...

ubuntu 24 安装 python3.x 教程

目录 注意事项 一、安装不同 Python 版本 1. 安装依赖 2. 下载 Python 源码 3. 解压并编译安装 二、管理多个 Python 版本 1. 查看已安装的 Python 版本 2. 配置环境变量 3. 使用 update-alternatives​ 管理 Python 版本 三、使用虚拟环境为项目指定特定 Python 版本…...

(十一) 人工智能 - Python 教程 - Python元组

更多系列教程&#xff0c;每天更新 更多教程关注&#xff1a;xxxueba.com 星星学霸 1 元组&#xff08;Tuple&#xff09; 元组是有序且不可更改的集合。在 Python 中&#xff0c;元组是用圆括号编写的。 实例 创建元组&#xff1a; thistuple ("apple", "b…...

【sql靶场】第13、14、17关-post提交报错注入保姆级教程

目录 【sql靶场】第13、14、17关-post提交报错注入保姆级教程 1.知识回顾 1.报错注入深解 2.报错注入格式 3.使用的函数 4.URL 5.核心组成部分 6.数据编码规范 7.请求方法 2.第十三关 1.测试闭合 2.列数测试 3.测试回显 4.爆出数据库名 5.爆出表名 6.爆出字段 …...

93.HarmonyOS NEXT窗口管理基础教程:深入理解WindowSizeManager

温馨提示&#xff1a;本篇博客的详细代码已发布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下载运行哦&#xff01; HarmonyOS NEXT窗口管理基础教程&#xff1a;深入理解WindowSizeManager 文章目录 HarmonyOS NEXT窗口管理基础教程&#xff1a;深入理解WindowSiz…...

Python----数据分析(Pandas一:pandas库介绍,pandas操作文件读取和保存)

一、Pandas库 1.1、概念 Pandas是一个开源的、用于数据处理和分析的Python库&#xff0c;特别适合处理表格类数 据。它建立在NumPy数组之上&#xff0c;提供了高效的数据结构和数据分析工具&#xff0c;使得数据操作变得更加简单、便捷和高效。 Pandas 的目标是成为 Python 数据…...

基于WebRTC技术的EasyRTC嵌入式音视频SDK:多平台兼容与性能优化

在当今数字化、智能化的时代背景下&#xff0c;实时音视频通信技术已成为众多领域不可或缺的关键技术。基于WebRTC技术的EasyRTC嵌入式音视频SDK&#xff0c;凭借其在ARM、Linux、Windows、安卓、iOS等多平台上的兼容性&#xff0c;为开发者提供了强大的工具&#xff0c;推动了…...

【快速入门】MyBatis

一.基础操作 1.准备工作 1&#xff09;引入依赖 一个是mysql驱动包&#xff0c;一个是mybatis的依赖包&#xff1a; <dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><vers…...

提升 React 应用性能:使用 React Profiler 进行性能调优

前言 在现代前端开发中&#xff0c;性能优化是一个不可忽视的重要环节。在 React 生态系统中&#xff0c;React Profiler 是一个强大的工具&#xff0c;它可以帮助我们检测和优化应用的性能。 本文将通过通俗易懂的语言介绍 React Profiler 的作用&#xff0c;并展示如何使用它…...

八、Prometheus 静态配置(Static Configuration)

所有的配置都可以用静态配置来监控,只不过用servicemonitor简单,但是域名需要静态配置 如果使用 Prometheus 静态配置(Static Configuration),确实不需要 ServiceMonitor、Service 和 Endpoints,但这也意味着失去了 Kubernetes 自动发现(Service Discovery, SD) 的能力…...

重生之我在学Vue--第16天 Vue 3 插件开发

重生之我在学Vue–第16天 Vue 3 插件开发 文章目录 重生之我在学Vue--第16天 Vue 3 插件开发前言一、插件的作用与开发思路1.1 插件能做什么&#xff1f;1.2 插件开发四部曲 二、开发全局通知插件2.1 插件基础结构2.2 完整插件代码&#xff08;带注释解析&#xff09;2.3 样式文…...

网络VLAN技术详解:原理、类型与实战配置

网络VLAN技术详解&#xff1a;原理、类型与实战配置 1. 什么是VLAN&#xff1f; VLAN&#xff08;Virtual Local Area Network&#xff0c;虚拟局域网&#xff09; 是一种通过逻辑划分而非物理连接隔离网络设备的技术。它允许管理员将同一物理网络中的设备划分为多个独立的广播…...

使用自动导入后,eslint报错 eslint9

前提&#xff1a;使用pnpm create vuelatest创建vue应用&#xff0c;并且在创建项目时就勾选eslint和prettier&#xff0c;不然有些配置还需要手动配&#xff0c;比如解决eslint和prettier的冲突问题 1. 解决使用自动导入后Eslint报错问题 配置vite.config.ts // 自动导入api…...

高德爬取瓦片和vue2使用

1、渲染瓦片地址 <template><div class"command-center"><div id"mapContainer" ref"map" class"mapContainer"/></div> </template><script> import Vue from vue import L from leaflet expor…...

交互式可视化进阶(Plotly Dash构建疫情仪表盘)

这里写目录标题 交互式可视化进阶(Plotly Dash构建疫情仪表盘)1. 引言2. 项目背景与意义3. 数据集生成与介绍4. GPU加速在数据处理中的应用5. 交互式仪表盘构建与Plotly Dash6. PyQt GUI集成与美化7. 工程整体架构8. 部分代码实现9. 代码自查与BUG排查10. 总结与展望交互式可…...

如何选择适合您智能家居解决方案的通信协议?

如何选择适合您智能家居解决方案的通信协议&#xff1f; 在开发智能家居产品时&#xff0c;选择合适的通信协议对于设备的高效运行及其在智能家居系统中的互操作性至关重要。市面上协议众多&#xff0c;了解它们的特性并在做决定前考虑各种因素是非常必要的。以下是一些帮助您…...

如何实现Spring Boot与Oracle数据库的完美对接?

想要在Spring Boot项目中使用Oracle数据库&#xff1f;这可不是一件难事&#xff01;接下来&#xff0c;我将带你一步步走过这个过程&#xff0c;从环境准备到配置&#xff0c;再到实际操作&#xff0c;确保你能够轻松对接Oracle数据库。 环境准备 首先&#xff0c;确保你已经…...

RabbitMQ可靠性进制

文章目录 1.生产者可靠性生产者重连生产者确认小结 2. MQ的可靠性数据持久化LazyQueue小结 3. 消费者的可靠性消费者确认机制消费者失败处理方案业务幂等性唯一消息ID业务判断 兜底方案业务判断 兜底方案 1.生产者可靠性 生产者重连 在某些场景下由于网络波动&#xff0c;可能…...

版本控制器Git(5)

文章目录 前言一、理解标签二、创建标签三、操作标签四、多人协作场景一五、多人协作场景二总结 前言 本篇是最后一篇&#xff0c;主要介绍标签管理有关的内容 一、理解标签 标签定义&#xff1a;在Git中&#xff0c;标签&#xff08;tag&#xff09;是对某次提交&#xff08;c…...

Unity引擎架构介绍及代码示例

Unity是一款跨平台的游戏开发引擎&#xff0c;其强大的功能和灵活的架构使得它成为众多游戏开发者的首选。本文将详细介绍Unity引擎的架构&#xff0c;并通过代码示例展示其在实际开发中的应用。 一、Unity引擎架构概述 Unity引擎的架构可以分为以下几个主要部分&#xff1a; 1…...

【数据分析】读取文件

3. 读取指定列 针对只需要读取数据中的某一列或多列的情况&#xff0c;pd.read_csv()函数提供了一个参数&#xff1a;usecols&#xff0c;将包含对应的columns的列表传入该参数即可。 上面&#xff0c;我们学习了读取 "payment" 和 "items_count" 这…...

Dify使用部署与应用实践

最近在研究AI Agent&#xff0c;发现大家都在用Dify&#xff0c;但Dify部署起来总是面临各种问题&#xff0c;而且我在部署和应用测试过程中也都遇到了&#xff0c;因此记录如下&#xff0c;供大家参考。Dify总体来说比较灵活&#xff0c;扩展性比较强&#xff0c;适合基于它做…...

Java 大视界 -- 基于 Java 的大数据机器学习模型的迁移学习应用与实践(129)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…...