r - 没有安装Stata的R中的Stata公式
问题描述
是否可以在您的 PC 上没有安装 Stata 的情况下将 Stata 公式翻译成 R?
我的问题就是上面提到的,但让我给你一些背景知识:我有以下 Stata 公式
Mtilde=((M:/p):/d)'*M
(M
是矩阵,p
是d
向量)
我想将其转换为 R。我知道有该Rstata
软件包,但它需要安装 Stata,这在我正在工作的 PC 上不可用。
这就是我在 R 中所做的:
Mtilde <- ((M/p)/d) %>% t() %>% `%*%`(M)
但它似乎不起作用,我想不出办法解决它......
解决方案
这在技术上是 Mata 代码,而不是 Stata 代码。Mata 是 Stata 的两种矩阵编程语言中较新的一种。mata
您可以通过在 Stata 命令窗口中键入来调用它。
在不了解 M 和 p 的情况下,很难给出具体的建议。您可以在线找到 pdf 文件形式的 Mata 手册。请参阅此处的 op_colon 条目和此处的 c_conformability 条目。
冒号运算符执行逐个元素的操作,因此 M :/ p 将 M 的每个元素除以 p 的相应元素(如果两者大小相同)。
如果它们的大小不同,则会发生类似的事情(比如除以相同的行或列向量),只要向量的维度合适,它就可以工作。
完成后,您计算该两次划分矩阵的转置,然后矩阵乘以原始 M。
以下是一些mata示例:
. mata
------------------------------------------------- mata (type end to exit) ------------------------------------------------------------------
: M=(1,2\3,4)
: M
1 2
+---------+
1 | 1 2 |
2 | 3 4 |
+---------+
: p=(1,2)
: p
1 2
+---------+
1 | 1 2 |
+---------+
: M:/p
1 2
+---------+
1 | 1 1 |
2 | 3 2 |
+---------+
: M:/p'
1 2
+-------------+
1 | 1 2 |
2 | 1.5 2 |
+-------------+
: ((M:/p):/p)
1 2
+-----------+
1 | 1 .5 |
2 | 3 1 |
+-----------+
: ((M:/p):/p)'*M
1 2
+-------------+
1 | 10 14 |
2 | 3.5 5 |
+-------------+
: end
这是相应的 R 版本:
> M <- matrix(1:4,2,2,byrow=TRUE)
> M
[,1] [,2]
[1,] 1 2
[2,] 3 4
> p <- matrix((1:2), 1, 2)
> p
[,1] [,2]
[1,] 1 2
> t(p)
[,1]
[1,] 1
[2,] 2
> # the second argument needs to be 1 for row or 2 for column
> sweep(M, 2, p, FUN = '/')
[,1] [,2]
[1,] 1 1
[2,] 3 2
> sweep(M, 1, t(p), FUN = '/')
[,1] [,2]
[1,] 1.0 2
[2,] 1.5 2
> sweep(sweep(M, 2, p, FUN = '/'),2,p,FUN = '/')
[,1] [,2]
[1,] 1 0.5
[2,] 3 1.0
> t(sweep(sweep(M, 2, p, FUN = '/'),2,p,FUN = '/'))%*%M
[,1] [,2]
[1,] 10.0 14
[2,] 3.5 5
推荐阅读
- c# - Core 2.1 和 .net5 中的 Encoding.Default.GetString 不等于字符串,来自等于字节数组
- azure-devops - 在 Azure DevOps 中查找特定作者发表的评论
- javascript - Y 轴上的融合图表自定义步距
- regression - MATLAB:评估 beta 系数中的 fitclinear - 如何计算 p 值/t-stats?
- webpack - 如何在 webpack 中链接多个 html 页面?
- boolean - 任何人都可以解决这个问题:简化布尔表达式 Z=A+A'B + A'B'C+ A'B'C'D
- timestamp - 在 ERC-20 中按时基铸造代币
- azure-aks - AKS 如何使用公共 IP 访问节点上的 pod
- python - 快速风格迁移 tensorflow Python
- android - 在新构建应用程序中删除 WorkerManager 后崩溃