R语言高级数据管理

文章目录

  • 高级数据管理
    • 标准差
    • 绝对中位差
    • 分位数
      • quantile()函数
      • 百分位数
    • 数据预处理
      • 中心化
      • 标准化 (Standardization)
      • 数据中心化和标准化的区别
      • 归一化(Normalization)
      • 标准化和归一化
    • 概率函数
    • 协方差
    • 控制流
      • 分支结构
      • 重复和循环
    • 自定义函数

高级数据管理

一个数据处理难题,由于每一门成绩的量纲不同,无法根据成绩进行排名。

image-20221022185908608

标准差

标准差(Standard Deviation) ,是离均差平方的算术平均数(即:方差)的算术平方根,用σ表示。标准差也被称为标准偏差,或者实验标准差,在概率统计中最常使用作为统计分布程度上的测量依据。

标准差能反映一个数据集的离散程度。平均数相同的两组数据,标准差未必相同。

image-20221022190120176

image-20221022190202744

标准差的意义

例1:A、B两组各有6位学生参加同一次语文测验,A组的分数为95、85、75、65、55、45,B组的分数为73、72、71、69、68、67。这两组的平均数都是70,但A组的标准差约为17.08分,B组的标准差约为2.16分。

结论:说明A组学生之间的差距要比B组学生之间的差距大得多。

例2:选基金:衡量基金波动程度的工具就是标准差(StandardDeviation)。标准差是指基金可能的变动程度。标准差越大,基金未来净值可能变动的程度就越大,稳定度就越小,风险就越高。

绝对中位差

在统计学中,绝对中位数MAD是对单变量数值型数据的样本偏差的一种鲁棒性测量。

对于单变量数据集X1,X2,…,Xn, MAD定义为数据点到中位数的绝对偏差的中位数:

image-20221022190410778

也就是说,先计算出数据与它们的中位数之间的残差(偏差),MAD就是这些偏差的绝对值的中位数。

MAD与标准差的关系

为了能将MAD当作标准差σ估计的一种一致估计量,使用

image-20221022190510466

其中 k 为比例因子常量,值取决于分布类型。对于正态分布数据,k的值为:1.4826

在R语言中,计算MAD的函数是stats包中的mad(),不同的是它默认乘上了一个比例因子1.4826,为了达到渐进正态一致性。

mad(x, center = median(x), constant = 1.4826, na.rm = FALSE, low = FALSE, high = FALSE) 

Description:

Compute the median absolute deviation, i.e., the (lo-/hi-) median of the absolute deviations from the median, and (by default) adjust by a factor for asymptotically normal consistency.

low: if TRUE, compute the ‘lo-median’, i.e., for even sample size, do not average the two middle values, but take the smaller one.

high: if TRUE, compute the ‘hi-median’, i.e., take the larger of the two middle values for even sample size.

> x<-c(1,2,3,4,5)
> median.x<-median(x)
> median.x
[1] 3
> diff.x<-abs(x-median.x)
> diff.x
[1] 2 1 0 1 2
> mad(x)
[1] 1.4826

绝对中位差有什么用?

用途:

MAD常用于异常值检测

离群点:是数据集中的一个数据点,该数据点与所有其他观察值相距较远。 位于数据集总体分布之外的数据点。

绝对中位差较标准差而言对“野”点(outlier)更加的鲁棒。在标准差的计算中,数据点到其均值的距离要求平方,因此对偏离较为严重的点偏离的影响得以加重,也就是说“野”点严重影响着标准差的求解,而少量的“野”点对绝对中位差的影响不大

image-20221022204420879

分位数

定义1:分位数(Quantile),亦称分位点,是指将一个随机变量的概率分布范围分为几个等份的数值点,常用的有中位数(即二分位数)、四分位数、百分位数等。

定义2:对一个有着连续分布函数的样本集X,分位数是将一个概率分布切分为有着相同概率的连续区间的切分点。

image-20221022204401844

分位数(Quantile),简言之,将数据按照数量均分后的边界值。

二分位数:即中位数 quantile(x,0.5)=median(x)

四分位数(Quartile):是统计学中分位数的一种,即把所有数值由小到大排列并分成四等份,处于三个分割点位置的数值就是四分位数。

分位数的分类

1)第一四分位数(Q1),又称“较小四分位数”,或“下四分位数”,等于该样本中所有数值由小到大排列后第25%的数字;

2)第二四分位数(Q2),又称“中位数”,等于该样本中所有数值由小到大排列后第50%的数字;

3)第三四分位数(Q3),又称“较大四分位数”,或“上四分位数”,等于该样本中所有数值由小到大排列后第75%的数字。

第三四分位数与第一四分位数的差距又称四分位距。

image-20221022204625556

image-20221022204659336

quantile()函数

数据总量: 6, 47, 49, 15, 42, 41, 7, 39, 43, 40, 36

排序结果: 6, 7, 15, 36, 39, 40, 41, 42, 43, 47, 49

Q1 的位置=(11+1) × 0.25=3,

Q2 的位置=(11+1)× 0.5=6,

Q3的位置=(11+1) × 0.75=9

Q1 = 15,Q2 = 40,Q3 = 43

> x<-c(6, 47, 49, 15, 42, 41, 7, 39, 43, 40, 36)
> y<-x[order(x)]
> y[1]  6  7 15 36 39 40 41 42 43 47 49
> q1<-quantile(x,0.25)
> q125% 
25.5 
> q2<-quantile(x,0.50)
> q2
50% 40 
> q3<-quantile(x,0.75)
> q375% 
42.5 
> quantile(x)0%  25%  50%  75% 100% 6.0 25.5 40.0 42.5 49.0 

百分位数

百分位数百分位数,统计学术语,如果将一组数据从小到大排序,并计算相应的累计百分位,则某一百分位所对应数据的值就称为这一百分位的百分位数。如:30%分位点

观测数据的第n个百分位数指在升序排列的数据中划分前n%的数据的值。

为什么要用分位数?

统计学中分位数的作用想必要追溯到很深入的层次,但就当下理解分位数的阶段,分位数起到的就是一个“临界值”的作用。

随机产生一组学生成绩X=(44 58 69 61 68 74 50 54 62 60),想让10个学生中淘汰35%,请设定分数线?

> X<-c(44,58,69,61,68,74,50,54,62,60)
> quantile(X,0.35)35% 
58.3 

image-20221022205741925

数据预处理

在我们做数据的时候,一个数据会有很多特征;比如在描述影响房价的因素,有房子面积,房间数量等。而不同的特征存在不同的量纲,为了消除量纲、数值差异等,我们就需要对数据进行中心化和标准化

中心化

所谓中心化就是将数据减去均值后得到的,比如有一组数据(1,2,3,4,5,6,7),它的均值是4,中心化后的数据为(-3,-2,-1,0,1,2,3)

标准化 (Standardization)

scale函数标准化处理原理是计算每组的平均值和标准差,再求组内各个数值与其平均值的差(中心化后),与其标准差的比值,作为该数值在组内的相对数值。(考虑均值和离散程度)

公式:

y<-(x-mean(x))/sd(x)

image-20221022205954242

均值为0,标准差为1,一定是标准正态吗?

任何分布的随机变量进行“标准化”后的均值都为0,方差都为1。所以你可以很轻松的构建出一个均值为0,方差为1的随机变量出来,然后去验证下它是否符合“标准正态分布”。标准正态分布的均值是0,标准差是1,但并不意味着均值为0,标准差为1的分布是标准正态分布。T分布的均值也0,标准差也可以为1。决定一个分布是否是标准正态分布的参数还有峰度和偏度,最重要的还是看概率密度函数吧。

实例

> x<-trunc(runif(20,400,600))
> x[1] 580 494 531 597 410 434 457 441 454 574 432 497 551 599 585 469 487 557 488 518
> y<-(x-mean(x))/sd(x)
> y[1]  1.1895629 -0.2263874  0.3828005  1.4694600 -1.6094086 -1.2142597 -0.8355753[8] -1.0990079 -0.8849689  1.0907756 -1.2471887 -0.1769938  0.7120913  1.5023891
[15]  1.2718855 -0.6380008 -0.3416392  0.8108785 -0.3251746  0.1687615
> y<-round(y,2)
> mean(y)
[1] -0.001
> sd(y)
[1] 0.9997258
> y<-as.vector(scale(x))
> y[1]  1.1895629 -0.2263874  0.3828005  1.4694600 -1.6094086 -1.2142597 -0.8355753[8] -1.0990079 -0.8849689  1.0907756 -1.2471887 -0.1769938  0.7120913  1.5023891
[15]  1.2718855 -0.6380008 -0.3416392  0.8108785 -0.3251746  0.1687615
> y<-(x-mean(x))/sd(x)
> y[1]  1.1895629 -0.2263874  0.3828005  1.4694600 -1.6094086 -1.2142597 -0.8355753[8] -1.0990079 -0.8849689  1.0907756 -1.2471887 -0.1769938  0.7120913  1.5023891
[15]  1.2718855 -0.6380008 -0.3416392  0.8108785 -0.3251746  0.1687615

数据中心化和标准化的区别

中心化和标准化意义一样,都是消除量纲的影响

中心化:数据-均值

标准化:(数据-均值)/标准差数据

中心化: scale(data,center=T,scale=F)

数据标准化: scale(data,center=T,scale=T)或默认参数scale(data)

归一化(Normalization)

归一化:

1)把数据变成(0,1)或者(-1,1)之间的小数。主要是为了数据处理方便提出来的,把数据映射到0~1范围之内处理,更加便捷快速。

2)把有量纲表达式变成无量纲表达式,便于不同单位或量级的指标能够进行比较和加权。

(1)Min-Max Normalization   x’ = (x - X_min) / (X_max - X_min)

(2)平均归一化   x’ = (x - μ) / (MaxValue - MinValue)

说明:(1)和(2)有一个缺陷就是当有新数据加入时,可能导致max和min的变化,需要重新定义。

(3)非线性归一化

1)对数函数转换:y = log10(x)

2)反正切函数转换:y = atan(x) * 2 / π

说明:(3)经常用在数据分化比较大的场景,有些数值很大,有些很小。通过一些数学函数,将原始值进行映射。该方法包括 log、指数,正切等。需要根据数据分布的情况,决定非线性函数的曲线,比如log(V, 2)还是log(V, 10)等。

标准化和归一化

(1)如果对输出结果范围有要求,用归一化。

(2)如果数据较为稳定,不存在极端的最大最小值,用归一化。

(3)如果数据存在异常值和较多噪音,用标准化,可以间接通过中心化避免异常值和极端值的影响。

总结:对于数据进行预处理的操作包括:

  • 归一化(Min-Max Normalization、平均归一化,非线性归一)
  • 标准化 (Z-score规范化(标准差标准化 / 零均值标准化))
  • 中心化(x’ = x - μ)

概率函数

分布名称缩写分布参数名称
Beta分布beta
二项分布binom
柯西分布cauchy
(非中心)卡方分布chisq
指数分布exp
F分布f
Gamma分布gamma
几何分布geom
超几何分布hyper
对数正态分布lnorm
Logistics分布logis
多项分布multinom
正态分布norm
泊松分布pois
Wilcoxon符号秩分布signrank
t分布t
均匀分布unif
Weibull分布weibull
Wilcoxon秩和分布wilcox

image-20221022211935614

image-20221022212020451

协方差

为什么需要协方差?

标准差和方差一般是用来描述一维数据的,但现实生活我们常常遇到含有多维数据的数据集。如,要统计多个学科的考试成绩。

协方差表示的是两个变量的总体的误差。

如果两个变量的变化趋势一致,也就是说如果其中一个大于自身的期望值,另外一个也大于自身的期望值,那么两个变量之间的协方差就是正值。

如果两个变量的变化趋势相反,即其中一个大于自身的期望值,另外一个却小于自身的期望值,那么两个变量之间的协方差就是负值。

二维问题的协方差

image-20221022212210735

三维问题的协方差矩阵

image-20221022212223586

协方差矩阵是个对称矩阵

实例:

> x<-c(2, 4, 6, 4)
> y<-c(8, 10, 6, 12)
> cov(x,y)
[1] -1.333333> x.mean<-mean(x)
> y.mean<-mean(y)
> sum1<-sum((x-x.mean)*(y-y.mean))
> sum1/(length(x)-1)
[1] -1.333333

控制流

语句(statement):一条单独的R语句或者一组复合语句(包含在花括号{}中的一组语句,分号分隔)

条件(condition):一条最终被解析为真或假的表达式

表达式(expression):一条数值或者字符串的求值语句

序列(sequence):一个数值或字符串序列

分支结构

1) if-else结构

x<-1
if(x>0) print("positive")  else  print("negative")

2)ifelse结构

score<-c(50,60,90,46,89)
ifelse(score>=60,"passed","failed")   
[1] "failed" "passed" "passed" "failed" "passed"

image-20221022212901016

3)switch结构:用于多分支情况

switch(expression,list)

如果expr的取值在1-length(list)之间,则函数返回列表相应位置的值。如果expr的值超出范围,则无返回值。

y<-3
switch(y,fruit="apple",meat="beaf",vegetable="patato")
[1] "patato"

重复和循环

1)for结构

for(var in seq) statement

for循环将接受一个迭代器变量和一个向量参数。在每次循环中,迭代器变量会从向量中取得一个值。

> for(i in 1:5) message("i=",i)
i=1
i=2
i=3
i=4
i=5

2)while结构

while(condition)   statement
i<-10
while(i>0){print("hello");i<-i-1
}

使用for循环和NULL,建立10以内的偶数向量,其中每次迭代均在向量上增加一个元素。

z<-NULL
for (i in seq(0,10,2)){z<-c(z,i)
}
z

自定义函数

R语言中,自定义函数的基本格式为:

myfun<-function(arglist){statementsreturn(object)}

其中,myfun为函数名称;arglist为参数列表;大括号中的部分为函数体。

例题:

定义一个函数first1,找出向量中第一个1出现的位置。

first1<-function(x){for(i in 1:length(x))if(x[i]==1){return(i)}
}
print(first1(c(2,2,1,1)))  
first1<-function(x){return(which(x==1)[1])
}
print(first1(c(2,2,1,1))) 

说明:which()产生x中所有值为1的索引,即位置向量。然后取位置向量的第一个元素。

自定义函数,输出向量x中能被3整除的数的个数。

count1<-function(x){cnt<-0for (i in x) {if(i%%3==0){cnt<-cnt+1}}return(cnt)
}
x<-1:25
count1(x)#8
count1<-function(x){cnt<-length(which(x%%3==0))return(cnt)
}
x<-1:25
count1(x)

编写R函数,输入一个整数n,如果n<=0,则中止运算,并输出“Please input a positive integer.”否则,如果n是偶数,则将n除以2,并赋值给n;否则,将3n+1赋值给n,不断循环,直到n=1,停止运算。并输出“Success”.

#角谷定理
first2<-function(n){if(n<=0){return("Please input a positive interger.")}while(n!=1){if(n%%2==0){n=n/2 }else{n=3*n+1}}return("Success")
}
first2(0)
first2(25)
first2(14)

自定义函数,计算斐波那契数列的第n项,并进行调用,输出数列的第5项和前5项。

fib<-function(n){if(n==1||n==2)return(1)elsereturn(fib(n-1)+fib(n-2))
}
print(fib(5))for (i in 1:5)print(fib(i))sum=0
for (i in 1:5)sum=sum+fib(i)
print(sum)

自定义函数,返回X的n次幂,并进行调用,输出5的3次幂。 递归函数。

first3<-function(x,n){if(n==1){return(x)}else{return(x*first3(x,n-1))}
}
first3(5,3)

自定义函数,计算斐波那契数列的第n项,并进行调用,输出数列的第5项和前5项。

fib<-function(n){if(n==1||n==2)return(1)elsereturn(fib(n-1)+fib(n-2))
}
print(fib(5))for (i in 1:5)print(fib(i))sum=0
for (i in 1:5)sum=sum+fib(i)
print(sum)

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

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

相关文章

用R语言,生成微信聊天记录词云。

首先获取微信聊天记录&#xff1a;并导出为txt文件 基于R语言&#xff1a; #install.packages("jiebaRD") #install.packages("jiebaR") #install.packages("data.table") #install.packages("stringr") #install.packages("rJa…

R语言中自带的一些数据集

在用R语言做数据分析的时候&#xff0c;我们经常需要一些数据做实验&#xff0c;尤其当学会一个新的方法或者算法的时候&#xff0c;就想赶快编程实现一下。那么&#xff0c;问题来了&#xff0c;用什么数据好呢&#xff0c;什么样的数据适合做这种实验呢&#xff1f; 好在R语…

R语言---使用RTCGA包获取TCGA数据---笔记整理

原文链接&#xff1a;https://mp.weixin.qq.com/s?__bizMzAxMDkxODM1Ng&mid2247486585&idx1&sn3035f6420904aad2c8161b362cdeb472&chksm9b484cc2ac3fc5d479fc5bce3d68d4666b763652a21a55b281aad8c0c4df9b56b4d3b353cc4c&scene21#wechat_redirect 1.RTCGA…

R语言实操记录——获取包的三种渠道及安装包的三种方式

R语言 R语言实操记录——获取包的三种渠道及安装包的三种方式 文章目录 R语言一、获取包的三种渠道二、安装包的三种方式2.1、CRAN2.2、Bioconductor2.3、Github注意 一、获取包的三种渠道 渠道1 、CRAN&#xff1a;R语言的官网&#xff0c;里面包含有绝大多部分领域的大部分…

【R语言】2022年末特辑——ggsci包色版最详分享

目录 一、前言二、官方教程2.1 NPG2.2 AAAS2.3 NEJM2.4 Lancet2.5 JAMA2.6 JCO2.7 UCSCGB2.8 d32.9 locuszoom2.10 igv2.11 uchicago2.12 startrek2.13 tron2.14 futurama2.15 rickandmorty2.16 simpsons2.17 gsea2.18 material 三、讨论 一、前言 部分新手直接化用代码跑出来…

R语言txt文件自定义词云图

在R语言中获取txt文件文本&#xff0c;并进行词频统计&#xff0c;然后自定义词云图。 先获取txt文本 wordfreqs read.table("E:\\Python实训\\哔哩哔哩弹幕爬取\\dan_mu.txt",encoding "UTF-8")这是事先用python爬虫准备好的B站番剧&#xff08;排球少…

基于R语言分析自带数据集heart

本文将对R语言中自带的heart数据集进行分析。本文会包含所有代码&#xff0c;尽可能多的使用有关可视化的函数以及数据分析的模型。 一、研究概述 1.1 数据集简介 数据集来源&#xff1a;使用R语言 glmpalh 包中自带的数据heart.data 数据集内容&#xff1a;该数据集描述了45…

摸鱼的小贤在瞎搞R - R语言内置数据集的使用

系列文章目录 1-R语言的安装及使用&#xff08;还没写这个&#xff0c;太简单了不太想写&#xff09; 2-R语言内置数据集的使用 …… 文章都会尽量详细&#xff0c;话多请见谅&#xff08;我是话痨 文章目录 系列文章目录1. 查看包中有哪些数据集2. 查看某一特定数据集的基本信…

ChatGPT对高校人才培养模式的挑战与应对策略思考

酷吗&#xff1f;输入指令后直接就能生成一大串代码&#xff0c;即使不懂相关技术也能玩转编程&#xff0c;这就是ChatGPT赋予你的“新能力”&#xff0c;除了写代码&#xff0c;ChatGPT还能帮你执行各种五花八门的任务。 AI工具如ChatGPT在行业中的广泛应用对于行业的人才结…

如何使用SMS向客户传递服务信息?指南在这里!

关键词&#xff1a;SMS运营、实时聊天客服、聊天机器人 SMS作为一种客户服务策略正变得越来越流行。了解如何使用它&#xff0c;并在此获得一些有用的模板。 通过SMS发送客户服务信息是提升客户体验的一种强有力的方式&#xff0c;并使客户获得超出他们预期的快乐。它是最近许…

SMS Call---发送短信和打电话的方法

发送短信的方法 有两种方法可以实现发送短信&#xff0c;其一是使用intent-startActivity&#xff0c;URI数据格式为"smsto:num"&#xff0c;调用的action为Intent.ACTION_SENDTO&#xff1a; Uri uri Uri.parse("smsto:5554"); Intent it new Intent(I…

ChatGPT token访问和API访问的区别,哪个更适合企业级应用?

文章目录 先介绍一下ChatGPT token访问和API访问的区别ChatGPT token访问和API访问哪种更适合企业级应用&#xff1f;如何搭建一个本地可以使用的 ChatGPT 聊天页面&#xff1f;微信公众号上如何对接 ChatGPT 并支持聊天&#xff1f; 先介绍一下 ChatGPT是基于OpenAI的GPT-4模…

UI设计:模仿淘宝App首页

UI设计&#xff1a;模仿淘宝App首页

场景导购系列一:个性化服饰搭配在淘宝搜索的实践

背景 日常生活中存在着各种各样的场景&#xff0c;比如参加晚会、海边度假、跑步、登山、垂钓等等。场景可以认为是在一些维度上相似的元素所构成的情境画面&#xff0c;不同场景会有不同的氛围、组成元素。 一些场景偏实用性&#xff0c;比如跑步&#xff0c;会让人想起要穿上…

仿淘宝商品详情,下拉切换到图片详情,上拉切换到图文简介

1&#xff1a;仿淘宝商品详情&#xff0c;下拉切换到图片详情&#xff0c;上拉切换到图文简介。 2&#xff1a;导航栏滑动显示时显示&#xff0c;静止时透明 有需要代码的可以私我

曾GMV过亿的淘宝品牌FFAN(泛泛)宣布店铺歇业

我是卢松松&#xff0c;点点上面的头像&#xff0c;欢迎关注我哦&#xff01; 成立于2008年&#xff0c;曾经淘宝排名前十、年销售过亿的女装店铺&#xff0c;FFAN(泛泛)宣布店铺歇业。据店主说&#xff0c;2020年就开始了亏损。 致FFAN女孩们: 感谢一路走来的有你们的关注和…

自定义ViewGroup实现仿淘宝的商品详情页

最近公司在新版本上有一个需要&#xff0c; 要在首页添加一个滑动效果&#xff0c; 具体就是仿照X宝的商品详情页&#xff0c; 拉到页面底部时有一个粘滞效果&#xff0c; 如下图 X东的商品详情页&#xff0c;如果用户继续向上拉的话就进入商品图文描述界面&#xff1a; 刚开始…

实战淘宝穿衣搭配

1. 说明 《淘宝穿衣搭配》比赛是2015年的一个天池算法比赛&#xff0c;现已开放为新人赛&#xff0c;仍可下载数据&#xff0c;上传结果及计算排名。具体地址是&#xff1a; https://tianchi.aliyun.com/getStart/information.htm?spm5176.100067.5678.2.78904065HrZLpP&…

【Android】仿淘宝商品详情页

话不多说---先上效果图&#xff1a; 图1 商品详情页 图2 加入购物车点击事件 需求分析&#xff1a; 图1中主要需要实现的效果&#xff1a; 1.轮播图 2.顶部导航栏的渐变 3.顶部导航栏随着滑动的位置选择对应的值以及点击滑动到对应位置 图2中主要需要实现的效果&#xff1…

仿淘宝— 商品图片切换

在线展示 html: <div id"box"><ul><li id"li01"><img src"./images/01.jpg" alt""></li><li id"li02"><img src"./images/02.jpg" alt""></li><l…