这篇文章发表于 1772 天前,可能其部分内容已经发生变化,如有疑问可询问作者。
因为之前看到不少资料,但好多文章缺乏整体的框架意识,导致我老是会有错乱的感觉,希望这份东西至少能够满足我自己的需求——没有任何多余的步骤、过分的解释和数学证明,单纯介绍一部分基本概念在R中的利用方式并努力让读者建立起一定的框架。文中仅涉及部分核心函数的介绍,至于函数功能的实现,文中大多仅展示部分,当然可以有其他办法。
整篇文章就是由各种资料拼接而成,感谢这些师傅和所有为之付出过心血的人。
本文的最后将列出一部分个人觉得非常好的文章。
估计
这部分主要是理论基础,没啥好记的。不过bootstrap
比较好用。
1 | #回归参数的区间估计 |
假设检验
参数检验与非参数检验区别:参数检验假定数据服从某分布(一般为正态分布),通过样本参数的估计量对总体参数进行检验;而非参数检验不需要假定总体分布形式,不涉及总体分布的参数,直接对数据的分布进行检验。
在检验之前,预先对分布检验,也就是正态性的检验非常重要。另外,对独立性的检验也是很重要的,这可能需要秩相关分析(见第3部分)来确定。使用独立样本非参数检验还是相关样本非参数检验需要通过自己的专业判断。
一些较常用的假设检验摘录于此,还有一些检验由于排版需要,放在了后面部分。
a. 参数检验
1 | #Bartlette检验是方差齐性检验,对于正态分布的样本,Bartlette检验极其灵敏,但是对于非正态分布的样本,检验非常不准确 |
b. 独立样本非参数检验
1 | #二项分布检验,检验二项分布概率,需要导入stats包 |
c. 相关样本非参数检验
这里主要是两样本的方法,多样本的方法写在了非参数ANOVA
部分。
1 | #McNemar变化显著性检验,针对名义级变量(nominal),两组样本观察数目相同并且观察值顺序不能随便改,注意样本是二分类数据,需要导入stats包 |
相关性分析
a. 简单线性相关与秩相关
1 | #对一般情况默认数据服从正态分布的,用pearson相关系数(连续性变量才可采用);当资料不服从双变量正态分布或总体分布未知,或原始数据用等级表示时,宜用spearman或kendall |
b. 偏相关
存在与两个变量都有相关性的混淆变量时,相关系数往往结果具有误导性,于是有了偏相关。
偏相关与半偏相关区别:
The semipartial (or part) correlation statistic is similar to the partial correlation statistic. Both compare variations of two variables after certain factors are controlled for, but to calculate the semipartial correlation one holds the third variable constant for either X or Y but not both, whereas for the partial correlation one holds the third variable constant for both. The semipartial correlation compares the unique variation of one variable (having removed variation associated with the Z variable(s)), with the unfiltered variation of the other, while the partial correlation compares the unique variation of one variable to the unique variation of the other.
1 | #partial correlations 偏相关,需要导入ppcor包 |
c. 典型相关
简单来讲,就是将一堆要素综合之后化为两个矩阵,再求两个矩阵之间的关系。
后面的d和e部分其实是在这个基础上的延伸应用。其中的mantel's test
在d部分中会继续探讨。
1 | #Compute the canonical correlations between two data matrices |
另外,典型相关分析简称CCA(canonical correlation analysis
),它的简称和后面会提到的典型对应分析(canonical correspondence analysis
)相同。但是后者的目的是识别并量化两个数据集之间的相关关系,关注的是两数据集各自的线性组合的相关关系;典型相关分析测定的是两个数据集(多个列向量)之间的相关程度,整个过程中试图把两高维数据的相关关系压缩到少数几个典型变量对之间。
d. 时空自相关
这主要用两个矩阵,一个是时间的,另一个是空间的,再用mantel's test
来检验这两个矩阵的关系。以下是mantel’s test
的大致原理:
These are the two matrices which the function will be testing for a correlation. The test consists of calculating the correlation of the entries in the matrices, then permuting the matrices and calculating the same test statistic under each permutation and comparing the original test statistic to the distribution of test statistics from the permutations to generate a p-value. The number of permutations defines the precision with which the p-value can be calculated.
1 | #Mantel’s test 作为空间自相关的检验也可(但在这里主要是考虑空间距离矩阵G和时间距离矩阵),需要导入ade4包 |
e. 空间自相关
自己补了一篇Moran's I
操作方面的简易指北文章,在这里。
1 | #Moran's I(全局) 以及 Local Moran’s I - Moran’s Ii(局部),需要导入spdep包 |
方差分析ANOVA
ANOVA
表格就不放了。[doge] 这部分本文涉及不多,建议多看看链接。
原假设:模型间不存在显著差异。
a. 普通ANOVA
前提条件:各因素水平下的数据服从正态分布并且满足方差齐性。这些检验方式详见文章第2部分——假设检验。
1 | #方差分析是从均值比较检验(单因素,双水平)扩展而来,有单因素方差分析、多因素方差分析(交互作用不明显)、多因素方差分析(含交互作用)、协方差分析,需要导入stats包 |
b. 非参数ANOVA
在ANOVA
所需的前提条件不满足时酌情使用替代方案,因为可能结果可能出现一定的问题。
1 | #Kruskal-Wallis检验,非参数方法,检验多个独立总体平均秩是否存在差异,可作为单因素方差分析的替代,需要导入stats包 |
回归分析
回归分析目的是根据已知的自变量来估计或者预测因变量的情况 。说实话以前觉得这里的数学推导并不难,但是前提假设上有各种限制与坑点,这部分并不简单(要是以后有空有心情就写一篇完整的文章阐述一下),所以这里我要把一些东西写得稍微详细一点。
由于限制过多,可先尝试回归后再回过头检验,但按逻辑,还是将这些限制与相关检验写在pre部分。
pre0. 由假设产生的限制
在线性回归模型中,残差(即随机误差)应满足白噪声假设(White Noise Condition)
:1、残差(无自相关性)独立同分布;2、残差和自变量不相关;3、残差均值为0,方差为常数。
ps:理论上,白噪声假设不要求随机变量服从正态分布,而可以是任意分布。但基于中心极限定理,假设残差服从正态分布是一个合理的近似。
由此,需要对假设条件进行检验,一般分为这些:
- 自相关性(也称序列相关性):若自相关性较高,在其他条件好的情况下,参数估计依旧无效——因为方差存在偏误且均值非无偏估计。检验方法有Breusch-Pagan test、White test,处理方法主要使用广义差分法。
- 异方差性:即残差方差不为常数。适合回归的应不存在异方差性。其不影响最小二乘估计值的无偏性,但影响有效性和显著性。检验方法有White test,处理方法有加权最小二乘法(weighted least squares, WLS)。
- 多重共线性:自变量间存在较大的相关性,会导致t检验不可靠,很可能得出非常不合理的结果。主要判别依据有VIF、容忍度、CI(Conditional Index)等。可以通过剔除不必要自变量、主成分回归、岭回归以及改变自变量或者函数形式这些方法尽可能消除其影响。
- 内生性:源于OLS(
ordinary least squares
普通最小二乘法)其中的解释变量与随机扰动间存在联系。在没有内生性问题的情况下,OLS更为合适。检验方法有Hausman test。后面对这一部分不予讨论。
对一些违背假设的模型依旧可以通过上述针对性方法处理后来回归分析。
pre1. 自变量优选
pre2. 对利用回归前提的检验
检验自相关性:
1 | #Durbin-Watson test,函数名可被缩写成dwt,需要导入car包 |
检验异方差性:
1 | #Breusch-Pagan test,需要导入lmtest包 |
检验多重共线性:
1 | #方差膨胀因子VIF,是容忍度(tolerance)的倒数,需要导入car包 |
a. 简单线性回归/多元线性回归
1 | #线性回归方程的原假设:因变量与自变量之间无显著关系 |
b. 广义线性回归GLM
这里包含了各种含定性(以及定序)变量的回归。其估计采用最大似然法 ,参数显著性检验采用Wald test (Z 统计),模型显著性使用似然比检验 。
1 | #广义线性回归,需要导入stats包 |
c. 非线性回归
非线性回归是回归函数关于未知回归系数具有非线性结构的回归,可分为可线性化问题和不可线性化问题。常用的处理方法有回归函数的线性迭代法、分段回归法、非线性最小二乘法(NLS
)等。
1 | #非线性最小二乘法使用线性函数来逼近非线性函数,并且通过不断迭代这个过程来得到参数的最优解,需要导入stats包 |
d. 稳健回归
稳健回归(robust regression
)是将稳健估计方法用于回归模型,以拟合大部分数据存在的结构,同时可识别出潜在可能的离群点、强影响点或与模型假设相偏离的结构。有这样的一些方法(部分是非参数方法):Brown-Mood
估计、Theil-Sen
回归(或Theil
估计) 、Siegel
估计 、S
估计、小中位数二乘(LMS)、小截尾二乘(Least Trimmed Squares
, LTS)、线性分位数回归 、Huber
回归 、随机采样一致性算法(RANdomSAmpleConsensus
, RANSAC)。
一般的稳健性排序: OLS< Theil < Siegel < (S, LTS, LMS)
e. 分位数回归
当不满足随机误差的“正态独立同分布”,或数据波动较大时,可降格采用分位数回归(Quantile regression
),属于非参数统计。
1 | #分位数回归,需要安装quantreg包 |
f. 线性混合效应模型
混合效应分为固定(fixed)效应和随机(random)效应两部分。固定效应是指经典线性回归的部分, 随机效用是指分组造成的差异部分(随机这个名称与数学随机性没有太大关系) 。在许多情况下,同一变量可能被视为随机效应或固定效应(有时甚至是同时发生!),因此请始终参考您的问题和假设以相应地构建模型。
对于嵌套随机效应,该因子仅出现在另一个因子的特定级别内; 对于交叉效应,给定因子出现在另一个因子的一个以上层次中。 或者,您还可以记住,如果您的随机效果没有嵌套,那么它们就会交叉!
混合模型使我们可以节省自由度。
1 | #线性混合效应模型,需要安装lme4包 |
g. 地理加权回归
1 | #地理加权回归GWR,需要导入spgwr包 |
h. 空间自回归
空间自回归模型(Spatial autoregressive model
)是指因变量线性依赖于自身邻居的作用、 其它解释变量的共同作用和随机成分。可结合使用AIC
来选取较好的模型。
1 | #以下操作需要导入spatialreg包 |
i. Spatial Panel Data Models
是我飘了。这部分太难了。不知有无大哥愿意贡献些?
降维处理
a. 聚类分析
主要的层次聚类方法有以下几种——基于连接的层次聚类:单连接聚合聚类(单联动)、完全连接聚合聚类(全联动);平均聚合聚类:使用算术平均的非权重成对组法(UPGMA)、使用质心的非权重成对组法(UPGMC)、使用算术平均的权重成对组法(WPGMA)、使用质心的权重成对组法(WPGMC);Ward最小方差聚类。
1 | #hclust聚类分析,需要导入stats包 |
b. 主成分分析PCA/因子分析FA
主成分分析是因子分析的一种。首先应该注意到因子分析的应用条件:
- 样本量不能太小,至少为变量数的5倍。
- 各变量间应该具有相关性,如彼此独立,则无法提取公因子,最好偏相关性也比较高。
- 因子分析中各公因子应该具有实际意义。
确认待分析的原始变量之间是否存在较强的相关关系:
1 | #KMO检验,用于考察变量间的偏相关性,取值0~1之间,需要导入psych包 |
实现PCA的简单方法,至于FA,可参见文末链接。
1 | #Cattell碎石检验绘制,以确定主成分的构成,根据Kaiser-Harris准则建议保留特征值大于1的主成分,需要导入psych包 |
c. 对应分析CA
CA (Correspondence Analysis
) 是R型与Q型FA的结合,是一种描述性统计,对极端值敏感。主要有简单对应分析(两个分类变量)、多重对应分析(多于两个分类变量)、数值变量对应分析、均值对应分析。
它虽然可以揭示变量间的联系,但不能说明两个变量之间的联系是否显著,因而在做对应分析前,可以用其他方法检验变量的相关性。原始数据的无量纲化处理,意味着处理时应注意各变量量纲一致。
1 | #CA的一种流程方法,需要MASS包 |
CA有时会产生“弓形效应”,对排序的精度产生影响,可通过去趋势对应分析(Detrended Correspondence Analysis
,DCA)来解决,参见这里。
另外,典范对应分析 CCA 基于对应分析(CA)发展而来的一种排序方法,将对应分析与多元回归分析相结合,又称多元直接梯度分析,参见这里。
extra
这里记录一些常用而不适合放在前面部分的知识。
a. 不均衡系数
1 | #需要导入ineq包 |
b. plot函数
1 | plot(x, y = NULL, type = "p", xlim = NULL, ylim = NULL, |
*相关文章资料*
大综合:
https://mgimond.github.io/Spatial/index.html
https://wangcc.me/LSHTMlearningnote/
https://bookdown.org/yufree/datadown/
https://bookdown.org/yufree/Notes/
https://bookdown.org/hezhijian/book/
https://rspatial.org/raster/index.html
https://bookdown.org/tpemartin/econometric_analysis/
https://bookdown.org/xiangyun/masr/ (好像被作者删了大部分)
http://www.tinysoft.com.cn/tsdn/helpdoc/display.tsl?id=12856
https://cran.r-project.org/doc/contrib/Xu-Statistics_and_R.pdf
R的基本技能:
https://openbiox.github.io/Cookbook-for-R-Chinese/
https://www.jianshu.com/p/baa6b9da31ba (有关R的plot函数)
https://ggplot2.tidyverse.org/reference/index.html (有关R的ggplot函数)
http://blog.sciencenet.cn/blog-3376545-1095933.html (有关R的sp包中类型)
假设检验:
https://lrita.github.io/2019/01/28/statistical-hypotheses/
https://psystat.github.io/chapter/statistics_8.html
https://blog.csdn.net/young_gy/article/details/47865281 (非参数检验)
https://zhuanlan.zhihu.com/p/22987015 (非参数检验)
https://blog.csdn.net/u011517132/article/details/105565678 (关于Wald检验、ML检验、似然比检验)
https://stats.idre.ucla.edu/other/mult-pkg/faq/general/faqhow-are-the-likelihood-ratio-wald-and-lagrange-multiplier-score-tests-different-andor-similar/ (关于Wald检验、ML检验、似然比检验)
https://bbs.pinggu.org/thread-328315-1-1.html (有关Wald检验、ML检验、似然比检验)
https://qastack.cn/stats/6505/likelihood-ratio-test-in-r (似然比检验)
https://www.rdocumentation.org/packages/aod/versions/1.3.1/topics/wald.test (wald检验)
https://www.statisticshowto.com/wp-content/uploads/2016/09/2101f12WaldWithR.pdf (wald检验)
https://rdrr.io/cran/randtests/src/R/runs.test.R (Wald-Wolfowitz游程检验源码)
http://blog.sciencenet.cn/blog-498076-644753.html (分析分类和定序数据的非参数检验)
https://www.datanovia.com/en/lessons/sign-test-in-r/ (SIGN-test)
https://www.datanovia.com/en/lessons/wilcoxon-test-in-r/ (Wilcoxon-test)
https://ncss-wpengine.netdna-ssl.com/wp-content/themes/ncss/pdf/Procedures/NCSS/Cochrans_Q_Test.pdf (Cochran’s Q Test)
相关性分析:
https://www.cnblogs.com/lichunl/p/8953614.html (有关Moran’s I)
http://blog.sina.com.cn/s/blog_4b678be40100o464.html(有关Mantel Test)
https://www.cs.cmu.edu/~neill/papers/jsm2014.pdf (有关Space-Time Interaction)
http://blog.sina.com.cn/s/blog_4b678be40100o464.html(有关Space-Time Interaction)
https://www.biaodianfu.com/acf-pacf.html (时间序列-自相关与偏自相关)
方差检验:
http://biotrainee.com/jmzeng/markdown/ANOVA.html (ANOVA使用)
http://blog.sciencenet.cn/blog-3406804-1190969.html (ANOVA使用)
https://www.datanovia.com/en/lessons/anova-in-r/ (ANOVA使用)
https://www.jianshu.com/p/aa80b6f65399 (ANOVA使用)
https://wap.sciencenet.cn/blog-3406804-1190972.html?mobile=1 (ANOVA非参数检验替代方法)
http://blog.sciencenet.cn/blog-651374-1003788.html (数据顺序对”方差分析ANOVA”的影响)
https://www.datanovia.com/en/lessons/friedman-test-in-r/ (Friedman Test)
https://rdrr.io/cran/rcompanion/man/scheirerRayHare.html (Scheirer Ray Hare test)
回归分析:
https://zhuanlan.zhihu.com/p/52752248 (回归分析数学笔记)
https://zhuanlan.zhihu.com/p/20700731 (有关残差异方差性)
https://wiki.mbalib.com/wiki/%E5%BC%82%E6%96%B9%E5%B7%AE%E6%80%A7(有关残差异方差性)
http://blog.sina.com.cn/s/blog_d81d08a50101gzwy.html (R实现变量优选)
https://flystar233.github.io/2018/09/29/R-regression-analysis/ (R实现变量优选)
https://www.cnblogs.com/pingzeng/p/5073159.html (有关线性回归模型违背基本假定)
https://www.jianshu.com/p/4a44cddd488f (检验、处理异方差性)
https://zhuanlan.zhihu.com/p/27461357 (通过变量筛选解决多重共线性问题)
https://zhuanlan.zhihu.com/p/35518844(有关内生性检验)
http://users.stat.umn.edu/~sandy/courses/8053/handouts/robust.pdf (有关Robust regression)
https://www.jianshu.com/p/4d6f77588b9a (有关Quantile regression)
https://zhuanlan.zhihu.com/p/69816364 (有关含定性变量的回归模型)
https://www.bbsmax.com/A/MAzAoxy59p (分位数回归)
https://cran.r-project.org/web/packages/quantreg/quantreg.pdf (分位数回归)
https://github.com/cloudly/Play-Econometrics-with-R/blob/master/02-cross-section-analysis.md (关于BP检验与white检验)
https://www.zhihu.com/question/53242918 (泊松回归模型和对数线性模型区别)
https://ourcodingclub.github.io/tutorials/mixed-models/ (线性混合效应模型)
https://alexsingleton.files.wordpress.com/2014/09/47-spatial-aurocorrelation.pdf (空间自回归理论基础)
http://stats.lse.ac.uk/lam/SpWgtLag2.pdf (Spatial Lag Model with Time-lagged Effects and Spatial WeightMatrix Estimation理论基础)
聚类分析:
http://blog.sciencenet.cn/blog-3406804-1175517.html
https://www.jianshu.com/p/50cb85285af0
https://www.jianshu.com/p/4f032dccdcef (kmeans聚类算法)
https://rspatial.org/rs/rs.pdf (遥感聚类)
https://www.r-bloggers.com/lang/chinese/619
https://www.cnblogs.com/think90/p/7133753.html
https://blog.csdn.net/sinat_26917383/article/details/51611519
https://blog.csdn.net/brunowuestelle/article/details/46698241 (制作3D可视化图)
https://zhuanlan.zhihu.com/p/23776251 (主成分分析-原理、碎石图)
https://zhuanlan.zhihu.com/p/23795029 (主成分分析-分析、得分、回归)
https://www.jianshu.com/p/2f71bc493042 (主成分分析)
https://zhuanlan.zhihu.com/p/31291210 (因子分析)
http://blog.sciencenet.cn/blog-3406804-1208937.html (典范对应分析CCA)
https://www.jianshu.com/p/bd3820e5a75a (典范对应分析CCA)
http://blog.sciencenet.cn/blog-3406804-1206643.html (CA与CDA分析)
其他:
http://www2.coe.pku.edu.cn/tpic/file/20170516/20170516145275577557.pdf
https://www3.nd.edu/~mhaenggi/ee87021/Dixon-K-Function.pdf (Ripley’s K)
ps:如果要实现jupyter notebook
和R
的联动,在安装jupyter notebook
基础上(不管是不是在conda
里面),R
的命令行里面直接使用如下两条命令即可——
1 | install.packages('IRkernel') |