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

阅前提示:

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

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

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

一、实验结果

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>类中的一个方法,该函数用于对列表中的元素进行排序,在计算中位数时,我们使用了这个方法对存储数据的列表进行升序排序,大大减轻了我们在进行中位数判断时的工作。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

kubernetes|云原生|部署单master的kubernetes 1.25.5版本集群完全记录(使用contained 运行时)

一、 部署目标&#xff1a; kubernetes版本1.19&#xff0c;1.23的前后差异还是比较巨大的&#xff0c;到1.25版本&#xff0c;为了追求高性能&#xff0c;自然还是需要使用containerd&#xff0c;本文将主要讲述在centos7虚拟机下部署kubernetes 1.25.5集群&#xff0c;使用…

DeepSeek+Dify本地部署私有化知识库

1.Windows安装docker Windows安装Docker-CSDN博客 2.安装olloma https://ollama.com/ 安装完成&#xff0c;可以在桌面右下角看到olloma图标 3.安装deepseekR1模型 ollama官网&#xff08;deepseek-r1&#xff09;&#xff0c;找到deepseek模型 选择合适大小的模型&#xff…

[Linux][经验总结]Ubuntu6.11.0 docker更换镜像源(实操可用的正确方法)

一、前言 关于Ubuntu更换docker镜像源&#xff0c;网上有很多的教程&#xff0c;但在实操中发现&#xff0c;更换的源无法生效——原因是我的docker是在系统安装时&#xff0c;选择附加安装的package的方式安装的。 现将处理过程记录如下。 二、获取镜像源 在网上随便找个几…

NHANES指标推荐:BRI!

文章题目&#xff1a;Association of body roundness index with cardiovascular disease in patients with cardiometabolic syndrome: a cross-sectional study based on NHANES 2009-2018 DOI&#xff1a;10.3389/fendo.2025.1524352 中文标题&#xff1a;心脏代谢综合征患者…

3.水中看月

前言 这篇文章讲解套接字分配IP地址和端口号。这部分内容也相对有些枯燥&#xff0c;但并不难&#xff0c;而 且是学习后续那些有趣内容必备的基础知识&#xff08;计算机网络基础&#xff09;。 一、分配给套接字的IP地址与端口号 IP是InternetProtocol&#xff08;网络协议…

Linux驱动开发-①pinctrl 和 gpio 子系统②并发和竞争③内核定时器

Linux驱动开发-①pinctrl 和 gpio 子系统②并发和竞争③内核定时器 一&#xff0c;pinctrl 和 gpio 子系统1.pinctrl子系统2.GPIO子系统 二&#xff0c;并发和竞争1.原子操作2.自旋锁3.信号量4.互斥体 三&#xff0c;按键实验四&#xff0c;内核定时器1.关于定时器的有关概念1.…

奇安信二面

《网安面试指南》https://mp.weixin.qq.com/s/RIVYDmxI9g_TgGrpbdDKtA?token1860256701&langzh_CN 5000篇网安资料库https://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247486065&idx2&snb30ade8200e842743339d428f414475e&chksmc0e4732df793fa3bf39…

Python库安装报错解决思路以及机器学习环境配置详细方案

文章目录 概要第三方库gdalpymoltalibmahotasgraphviznltk-datalazypredictscikit-surprisenb_extensionspyqt5-toolsspacy、en_core_web_sm 机器学习GPU-torch安装torch_geometric安装ubuntu安装显卡驱动dlib安装torch-cluster、torch-scatter、torch-sparse和torch-geometric…

Power Apps 技术分享:连接SharePoint列表数据源

前言 在使用Power Apps的时候&#xff0c;使用列表作为数据源是非常方便和经济的&#xff0c;列表创建简单&#xff0c;SharePoint的存储也不像Dataverse需要按照容量付费。 正文 1.我们先在SharePoint中建一个列表&#xff0c;添加一些测试数据&#xff0c;如下图&#xff1a;…

【Linux】learning notes(4)cat、more、less、head、tail、vi、vim

文章目录 catmore 查看整个文件less 查看整个文件head 查看部分文件tail 查看部分文件vim / vi cat cat 命令在 Linux 和 Unix 系统中非常常用&#xff0c;它用于连接文件并打印到标准输出设备&#xff08;通常是屏幕&#xff09;。虽然 cat 的基本用法很简单&#xff0c;但它…

C++11函数包装器

目录 std::function 注意事项 包装静态成员函数 包装非静态成员函数 std::bind 用法 应用场景 std::function function是C11引入的类&#xff0c;可以用任何可调用对象作为参数&#xff0c;构造出一个新对象。 可调用对象有函数指针&#xff0c;仿函数&#xff0c;lamb…

maven的安装配置

目录 一、官网下载压缩包 二、配置环境变量 设置 MAVEN_HOME 添加 MAVEN_HOME\bin 到 PATH 三、配置本机仓库和远程仓库 四、配置idea 一、官网下载压缩包 Download Apache Maven – Maven 如上图。选择这个压缩包 选择好文件&#xff0c;下载完后&#xff0c;配置环境变…

分布式事务

1 事务 众所周知&#xff0c;事务具有ACID四大特性&#xff1a; 原子性&#xff08;Atomicity&#xff09;&#xff1a;事务作为一个整体被执行&#xff0c;包含在其中的对数据库的操作要么全部被执行&#xff0c;要么都不执行。 一致性&#xff08;Consistency&#xff09;&a…

Postman中Authorization和Headers的区别

案例 笔者在进行token验证的时候碰到的问题 一般如果是进行token验证&#xff0c;大部分是在Headers下面添加token名称及token的值 这样&#xff1a;后端提取请求头的token即可 还有一种是&#xff0c;左侧选择Bearer Token&#xff0c;右侧添加token的值,后端传递的 大概…

1.备战SISAP 2025挑战:调研2024挑战

简介 紧张刺激的SISAP 2025 challenge发布了&#xff0c;此博客用于记录备战的一些准备&#xff0c;思路和实验。 25年挑战介绍 详细信息参考SISAP Indexing challenge 2025 Task 1&#xff1a;内存受限索引 这项任务要求参与者开发具有reranking&#xff08;重排&#xf…

FPGA学习(二)——实现LED流水灯

FPGA学习(二)——实现LED流水灯 目录 FPGA学习(二)——实现LED流水灯一、DE2-115时钟源二、控制6个LED灯实现流水灯1、核心逻辑2、代码实现3、引脚配置4、实现效果 三、模块化代码1、分频模块2、复位暂停模块3、顶层模块 四、总结 一、DE2-115时钟源 DE2-115板子包含一个50MHz…

进程间通信--匿名管道

进程间通信介绍 进程间通信目的 数据传输&#xff1a;一个进程需要将它的数据发送给另一个进程资源共享&#xff1a;多个进程之间共享同样的资源。通知事件&#xff1a;一个进程需要向另一个或一组进程发送消息&#xff0c;通知它&#xff08;它们&#xff09;发生了某种事件&…

【鸿蒙开发】Hi3861学习笔记-Visual Studio Code安装(New)

00. 目录 文章目录 00. 目录01. Visual Studio Code概述02. Visual Studio Code下载03. Visual Studio Code安装04. Visual Studio Code插件05. 附录 01. Visual Studio Code概述 vscode是一种简化且高效的代码编辑器&#xff0c;同时支持诸如调试&#xff0c;任务执行和版本管…

人工智能 Day06 pandas库进阶

1.处理缺失数据 总体流程是这样的&#xff0c; 归根在于如何处理NAN&#xff0c;接下来详细赘述 1.1. 处理缺失值的相关函数 判断缺失值 pd.isnull(df)&#xff1a;用于判断 DataFrame df 中的元素是否为缺失值&#xff08;NaN &#xff09;&#xff0c;返回一个与df 形状相同…

【Tools】Visual Studio Code安装保姆级教程(2025版)

00. 目录 文章目录 00. 目录01. Visual Studio Code概述02. Visual Studio Code下载03. Visual Studio Code安装04. Visual Studio Code配置05. 附录 01. Visual Studio Code概述 Visual Studio Code&#xff08;简称 VS Code&#xff09;是由微软开发的一款免费、开源且跨平台…