- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 stan 的新手,我正在实现概率矩阵分解模型。
给定一个用户-项目评分矩阵:
item
user 1 3 NA 4 5 NA
2 0 3 NA 1 5
1 1 NA NA NA 0
....
我应该如何在 data
block 中表示可观察数据以及在 parameter
block 中用于预测的缺失数据?
提前致谢!
编辑:
现在我正在实现如下模型:
pmf_code = """
data {
int<lower=0> K; //number of factors
int<lower=0> N; //number of user
int<lower=0> M; //number of item
int<lower=0> D; //number of observation
int<lower=0> D_new; //number of pridictor
int<lower=0, upper=N> ii[D]; //item
int<lower=0, upper=M> jj[D]; //user
int<lower=0, upper=N> ii_new[D_new]; // item
int<lower=0, upper=N> jj_new[D_new]; // user
real<lower=0, upper=5> r[D]; //rating
real<lower=0, upper=5> r_new[D_new]; //pridict rating
}
parameters {
row_vector[K] i[M]; // item profile
row_vector[K] u[N]; // user profile
real<lower=0> alpha;
real<lower=0> alpha_i;
real<lower=0> alpha_u;
}
transformed parameters {
matrix[N,M] I; // indicator variable
I <- rep_matrix(0, N, M);
for (d in 1:D){
I[ii[d]][jj[d]] <- 1;
}
}
model {
for (d in 1:D){
r[d] ~ normal(u[jj[d]]' * i[ii[d]], 1/alpha);
}
for (n in 1: N){
u[n] ~ normal(0,(1/alpha_u) * I);
}
for (m in 1:M){
i[m] ~ normal(0,(1/alpha_i) * I);
}
}
generated_quantities{
for (d in 1:D_new){
r_new[d] <- normal(u[jj_new[d]]' * i[ii_new[d]], 1/alpha);
}
}
"""
但在这行代码中出现了 No matches for: real ~ normal(matrix, real)
错误:
for (d in 1:D){
r[d] ~ normal(u[jj[d]]' * i[ii[d]], 1/alpha);
}
但是jj[d]
应该是一个整数,表示用户
的id。 u[int
] 应该是一个 row_vector
有 k
个因子,i[ii[d]]
也是.它们的乘积应该是一个实数,为什么stan说它是一个矩阵
?
最佳答案
Stan 手册中有一章是关于如何处理缺失或稀疏数据的。在这种情况下,它缺少数据。你想要做的是把它放在长格式中(R 的 reshape 包称之为融化形式):
int<lower=0> I; // number of items
int<lower=0> J; // number of users
int N; // number of observations
int<lower=1, upper=I> ii[N]; // item
int<lower=1, upper=J> jj[N]; // user
int<lower=0, upper=5> y[N]; // rating
然后,对于每个观察 n
,您让用户 jj[n]
将评级 y[n]
分配给项目 ii[n]
.
在手册的回归部分的 IRT 模型中有一个这样的例子。但是你有一个有序的结果,这有点棘手。你可以做某种直接的顺序逻辑,可能是分层的,或者你可以尝试做一些类似因子模型的事情(比如每个人都用于 Netflix 的部分 SVD)。手册中还有因子模型的示例 --- 您将使用这些模型为序数回归生成线性预测变量。
然后,如果你想为项目 i
和用户 j
的一些新组合预测 y[m]
,你可以这样做在生成的数量 block 中作为后验预测量。您可以通过抽样或期望来做到这一点;在潜在离散参数章节的变点模型和关于预测的回归章节中都有一个例子。
关于python - 如何处理 stan 中丢失的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35243449/
我看到一些示例中使用了 //,但是否还有其他允许的注释字符。 Stan 中的注释字符是什么?什么是完整的评论规则? 最佳答案 来自Stan reference manual : 23.1. Comme
我需要将数据作为具有不同长度的向量列表和具有相同行数但具有不同列数的矩阵列表传递。有没有办法在Rstan中传递数据? 最佳答案 答案本质上是否定的,Stan语言不允许不规则的数据结构,例如不同长度的向
我需要将数据作为具有不同长度的向量列表和具有相同行数但具有不同列数的矩阵列表传递。有没有办法在Rstan中传递数据? 最佳答案 答案本质上是否定的,Stan语言不允许不规则的数据结构,例如不同长度的向
我刚开始学习 stan,有几个问题。我正在尝试在 stan 中做一个有序的 probit 模型。我有一些问题。首先,下面的模型抛出一条错误消息 Stan model does not contain
我现在在 Stan 中学习建模的绳索很有趣。现在我正在努力研究我的受试者间和受试者内混合析因实验设计模型。有不同的受试者组,每个受试者都表示他们对三种不同饮料(水、无咖啡因和咖啡)中的每一种饮料减少咖
我正在尝试使用 RSTAN 拟合随机效应模型。我的设计矩阵有 198 列。它是如此之宽,因为我的原始数据框是一堆因子变量,我将其转换为二进制指标以尝试在 STAN 中拟合模型。我可以使用从一两个预测变
鉴于示例数据 sampleDT 和模型 lm.fit 和 brm.fit 下面,我想: estimate, extract and add to the data frame the values o
我正在使用这里定义的函数:Extreme value analysis and user defined probability functions in Stan for modeling the
我想学习如何在 stan 中使用 Dirichlet 分布。 我有一个表格,其中包含因子变量的六个级别中每个级别的观察总数: counts n factor_var -
有没有办法从 stan 中的偏态正态分布中提取数据?如果不是,有没有办法从正态分布中提取然后转换为偏正态分布? 更新 我在 stan 手册中找到了 y~skew_normal(mu, sigma, a
当从 stan 启动标准示例时 webpage像下面这样: schools_code J; // number of schools real y[J]; // estimated treat
我在学习rstan目前我正在解决 Gelman 的“贝叶斯数据分析”中的练习。作为引用,这是关于第 3 章中的示例 5。 它总是失败: Initialization failed after 100
有没有办法在 Stan 中构造一个带有单纯形列的矩阵?我要构建的模型类似于以下模型,其中我的模型算作狄利克雷多项式: data { int g; int c; int counts[g,
假设我有 gamma=10 的泊松分布。我想拟合一个高斯分布,它可以最小化泊松分布的 KL 散度。这可以通过变分推理来实现。我如何使用 Stan 进行此优化? reference manual有一个关
是否可以根据任意后验函数定义 Stan 模型? 我在想类似于 MCMCPack 的 MCMCmetrop1R() 功能,用户可以在其中定义任意后验函数。如果有一个很好的例子说明如何去做,我愿意深入研究
我是 stan 的新手,我正在实现概率矩阵分解模型。 给定一个用户-项目评分矩阵: item user 1 3 NA 4
我在 PySTAN 工作。假设我的可能性是:p1 * p2 其中p1 ~ N(x, xerr) 和 p2 = 0.823 if t = 0 1 if t = 1 我的模型是: mod
我最近遇到了高斯过程模型,并且碰巧认为它们可能是我实验室一直在研究的问题的解决方案。我有一个关于交叉验证的开放和相关问题,但我想将我的建模/数学问题与我的编程问题分开。因此,这是第二个相关帖子。如果更
我有一个 R 包,它使用 Rcpp 来实现一些内部功能。这些函数不会导出供用户直接访问(请参阅 rcpptest 存储库中的最小可重现示例)。 我现在正尝试将 Stan 代码添加到 src/ 目录,以
根据STAN homepage , STAN 能够进行惩罚最大似然 (BFGS) 优化。我正在使用 R 包 rstan 但我还没有找到如何使用此方法的方法。我试图查看 ?stan 对 stan() 函
我是一名优秀的程序员,十分优秀!