Matrix 皮尔逊/斯皮尔曼秩相关矩阵与Stata中的显著性星组合
我想计算一个相关矩阵,其中下三角由Pearson组成,上三角由Spearman秩相关系数组成。 我正在使用Matrix 皮尔逊/斯皮尔曼秩相关矩阵与Stata中的显著性星组合,matrix,latex,stata,correlation,Matrix,Latex,Stata,Correlation,我想计算一个相关矩阵,其中下三角由Pearson组成,上三角由Spearman秩相关系数组成。 我正在使用corr和spearman,效果很好。但是使用corr我无法获得显著性(p值或星星等)。所以我尝试了pwcorr,list,它给出了确切的结果,但意义重大 使用此“新组合”,我无法创建与corr相同的矩阵 //Get Pearson Matrix corr var1 var2 var3 matrix R = r(C) //Get Row and Column Names local rn
corr
和spearman
,效果很好。但是使用corr
我无法获得显著性(p值或星星等)。所以我尝试了pwcorr,list
,它给出了确切的结果,但意义重大
使用此“新组合”,我无法创建与corr
相同的矩阵
//Get Pearson Matrix
corr var1 var2 var3
matrix R = r(C)
//Get Row and Column Names
local rnames : rownames R
local cnames : colnames R
//Get Spearman Rank Matrix
spearman var1 var2 var3, matrix star(0.05)
matrix S = r(Rho)
//Convert Pearson Matrix to Mata Matrix
mata: mataR = st_matrix("R")
//Convert Spearman Rank Matrix to Mata Matrix
mata: mataS = st_matrix("S")
//Clone Mata Pearson Matrix for Combined mataRS Mata Matrix
//Pearsson and Spearman Rank Matrix in Mata
mata: mataRS = mataR
//Replace Pearson r with Spearman rho in Top Half of Combined mataRS Mata Matrix
mata: mataRS[1,2] = mataS[2,1]
mata.... and so on.
//Display Pearson, Spearman Rank, and combined Matrices in Mata
mata: mataR
mata: mataS
mata: mataRS
//Convert combined mataRS Mata Matrix to Stata Matrix RS
mata: st_matrix("RS", mataRS)
matrix rownames RS = `rnames'
matrix colnames RS = `cnames'
//Display combined Stata Matrix RS
matlist RS, format(%8.4f)
当我将corr
替换为pwcorr时,list
会出现以下错误:
mata: mataRS[1,2] = mataS[2,1]
<istmt>: 3301 subscript invalid" for the command
mata:mataRS[1,2]=mataS[2,1]
:3301命令的下标无效
(使用的代码取自。)
有没有一个“聪明”的方法来解决这个问题?(顺便说一句,我和TeXMaker一起工作,所以如果输出可以转移到乳胶上那就太好了。)该方法采用了本·詹(Ben Jann)的《周五下午的懒惰》中的方法,并利用了斯皮尔曼相关性只是等级上的皮尔逊相关性这一事实。将等级和原始数据叠加在同一个变量中,使缝合弗兰肯矩阵变得更加容易 它获取一个变量列表并生成一个LaTeX文件,该文件在主对角线下方包含Pearson相关性,在主对角线上方包含Spearman相关性。两者都有显著性
eststo clear
set more off
sysuse auto, clear
capture ssc install estout
local vlist "price mpg weight"
local upper
local lower `vlist'
expand 2, gen(version)
foreach v of local vlist {
egen rank = rank(`v') if version == 1
replace `v' = rank if version ==1
drop rank
}
foreach v of local vlist {
estpost correlate `v' `lower' if version == 0
foreach m in b rho p count {
matrix `m' = e(`m')
}
if "`upper'"!="" {
estpost correlate `v' `upper' if version == 1
foreach m in b rho p count {
matrix `m' = e(`m'), `m'
}
}
ereturn post b
foreach m in rho p count {
quietly estadd matrix `m' = `m'
}
eststo `v', title(`v')
local lower: list lower - v
local upper `upper' `v'
}
/* Export the LaTeX matrix */
esttab using "frankenmatrix.tex", nonumbers mtitles noobs not tex replace title("Correlations")
/* Clean up the data and make sure we did things right */
drop if version ==1
drop version
corr `vlist'
spearman `vlist'
您应该在tex文档中使用\input{frankenmatrix.tex}
来合并此文件。输出应如下所示:
遵循您在(旧)Statalist上引用的线程。它指向
corsp
,这是用户在SSC上编写的命令,也会生成p值
至于导出到LaTeX,有几个用户编写的命令,只需在Stata中键入
findit LaTeX
。亲爱的Dimitry,谢谢你的代码。它工作得很好,但我确实从上面使用的代码中得到了不同的结果。假设我有5个变量A B C D E,其中A、B和C有两个版本:1)A、B和C(正常)和2)已经排名A、B和C。@eternity1我不完全确定你在问什么。首先,你的代码似乎没有生成正确的Spearman值,因为你没有完成“mata…”。。。。以此类推。“步骤。您需要为每个Spearman单元格添加一个步骤,以匹配Spearman
的输出。第二部分对我来说毫无意义。我的代码为您创建变量的排名版本。您不需要这样做。差异可以通过您在计算排名时如何调整关系来解释(相等的观察值应与斯皮尔曼一起分配平均等级)如果您是手动进行的。亲爱的迪米特里,很抱歉让您感到困惑。例如:我有var1、var2、var3、var4。我的分析是使用转换后的变量完成的:var1和var2(手动)排列到dvar1和dvar2。因此,我想要的是一个皮尔逊相关矩阵,其中包含dvar1、dvar2、var3和var4。斯皮尔曼的秩相关应该包括var1、var2、var3和var4。斯皮尔曼应该“使用”原始变量var1、var2,因为(在我的研究中)对已排序的变量进行排序没有意义。谢谢:)亲爱的Dimitry,我很难将此表导出到excel作为csv文件。如果我使用“简单”版本,效果会很好:estpost关联adsue1 adsue2 adsue3 dspot dslope dleverage dvola升级降级索引\u bhar index\u casc,矩阵列表esttab。使用P\u correlation\u csv.csv,而不是取消堆叠noobs标题(“Pearson correlation matrix”)非数字替换我以为你想要输出为乳胶?