标签: multinomial

多项式朴素贝叶斯分类器

我一直在寻找CRAN上的多项式朴素贝叶斯分类器,到目前为止我能想到的是包中的二项式实现e1071.有没有人知道有多项贝叶斯分类器的包?

r bayesian multinomial naivebayes

5
推荐指数
1
解决办法
4496
查看次数

如何在R中使用multinom()进行预测

我正在尝试使用特定值来计算预测的概率,但是R显示以下错误:

Error in model.frame.default(Terms, newdata, na.action = na.omit, xlev = object$xlevels) : 
  variable lengths differ (found for 'x')
In addition: Warning message:
'newdata' had 1 rows but variable(s) found have 513 rows
Run Code Online (Sandbox Code Playgroud)

这就是我想做的:x1是具有12个级别的因子,x2也是具有3个级别的因子。

res4 <- multinom(y ~ x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9 - 1, data=dta, Hess=T)

nd <- data.frame(x11=0.10331384, x12=0.07992203, x13=0.06237817, x14=0.03313840, x15=0.12280702, x16=0.07407407, x17=0.07407407, x18=0.10331384, x19=0.08966862, x110=0.07017544, x111=0.15009747, x112=0.03703704, x22=1, x23=0, x3=1, x4=1, x5=mean(x5), x6=mean(x6, na.rm=T), x7=mean(x7), …
Run Code Online (Sandbox Code Playgroud)

r predict multinomial

5
推荐指数
1
解决办法
8573
查看次数

多项式混合logit模型mlogit r-package

我发现了mlogit- 多项logit模型的包,用于寻找多项式混合logit模型.在阅读了优秀的插图后,我发现我无法在任何描述的示例中应用我的数据.

我现在写信希望对我的问题有所帮助,并创建了一个简单的例子来说明我的情况.

问题如下:在某处有辅音'Q'的单词.现在,我们进行了一项实验,他们的任务是听取这些话,并说他们是否听过Q,U或其他辅音.这必须依赖于诸如音节位置或真实/非真实单词之类的一些因素来建模.

在最小的例子中,我用音节位置创建了4个人和他们的答案.

library(mlogit)
library(nnet)
set.seed(1234)
data <- data.frame(personID = as.factor(sample(1:4, 40, replace=TRUE)),
               decision = as.factor(sample(c("Q","U", "other"), 40, replace=TRUE)),
               syllable = as.factor(sample(1:4, 40, replace=TRUE)))
summary(data)
 personID  decision  syllable
 1:11     other:10   1:18    
 2:10     Q    :18   2: 9    
 3:10     U    :12   3: 5    
 4: 9                4: 8 
Run Code Online (Sandbox Code Playgroud)

据我所知nnet,multinom功能不包括混合型号.

modNnet1 <- multinom(decision ~ syllable, data=data)
Run Code Online (Sandbox Code Playgroud)

首先,我使用mlogit.data-function来重塑文件.在与同事讨论后,我们得出结论,没有替代品.特定.变量.

 dataMod <- mlogit.data(data, shape="wide", choice="decision", id.var="personID")

 mod1 <- mlogit(formula = decision ~ 0|syllable,
           data = …
Run Code Online (Sandbox Code Playgroud)

r mixed-models multinomial mlogit

5
推荐指数
1
解决办法
5211
查看次数

多项logit模型和嵌套logit模型

我在程序R中使用mlogit包.我已将我的数据从其原始宽格式转换为长格式.这是转换后的data.frame的示例,我将其称为"long_perp".所有自变量都是个体特定的.我在数据集中有4258个独特的观察结果.

         date_id  act2 grp.bin pdist   ship   sea avgknots   shore day location chid  alt
4.dive 40707_004  TRUE       2 2.250 second light 14.06809 2.30805  12    Lower    4 dive
4.fly  40707_004 FALSE       2 2.250 second light 14.06809 2.30805  12    Lower    4  fly
4.none 40707_004 FALSE       2 2.250 second light 14.06809 2.30805  12    Lower    4 none
5.dive 40707_006 FALSE       2 0.000 second light 15.12650 2.53312  12    Lower    5 dive
5.fly  40707_006  TRUE       2 0.000 second light 15.12650 2.53312  12    Lower    5  fly
5.none 40707_006 …
Run Code Online (Sandbox Code Playgroud)

r multinomial logistic-regression mlogit

5
推荐指数
1
解决办法
1744
查看次数

当样本大小和概率变化时,进行有效的多项式抽样

该问题涉及具有不同样本大小和概率的多项分布的有效采样.下面我描述了我使用的方法,但想知道它是否可以通过一些智能矢量化来改进.

我正在模拟多个群体中的生物传播.人口中的个体有可能j分散到人口.鉴于种群1的初始丰度为10 ,分别对种群1,2和3 进行分散的可能性,我们可以用以下方法模拟分散过程:ip[i, j]c(0.1, 0.3, 0.6)rmultinom

set.seed(1)
rmultinom(1, 10, c(0.1, 0.3, 0.6))

#      [,1]
# [1,]    0
# [2,]    3
# [3,]    7
Run Code Online (Sandbox Code Playgroud)

我们可以扩展这个来考虑n源群:

set.seed(1)
n <- 3
p <- replicate(n, diff(c(0, sort(runif(n-1)), 1)))
X <- sample(100, n)
Run Code Online (Sandbox Code Playgroud)

上面p是从一个群体(列)移动到另一个群体(行)的概率矩阵,并且X是初始种群大小的向量.现在可以模拟分散在每对种群(以及它们所在的种群)之间的个体数量:

sapply(seq_len(ncol(p)), function(i) {
  rmultinom(1, X[i], p[, i])  
})

#      [,1] [,2] [,3]
# [1,]   19   42   11
# [2,]    8   18   43
# [3,]   68    6    8
Run Code Online (Sandbox Code Playgroud)

其中 …

performance r vectorization multinomial

5
推荐指数
1
解决办法
4361
查看次数

如何在nnet包的multinom()中设置特定的对比度?

我有一个需要分类的3类问题。我想在nnet软件包中使用多项逻辑回归。班级结局有3个因素,P,Q,R。我想将Q作为基本因素。

所以我尝试将它写成这样的对比:

P <- c(1,0,0)
R <- c(0,0,1)
contrasts(trainingLR$Class) <- cbind(P,R)
Run Code Online (Sandbox Code Playgroud)

检查了它:

> contrasts(trainingLR$Class)
  P R
P 1 0
Q 0 0
R 0 1 
Run Code Online (Sandbox Code Playgroud)

现在multinom()

library(nnet)
multinom(Class ~., data=trainingLR)
Run Code Online (Sandbox Code Playgroud)

输出:

> multinom(Class ~., data=trainingLR)
# weights:  39 (24 variable)
initial  value 180.172415 
iter  10 value 34.990665
iter  20 value 11.765136
iter  30 value 0.162491
iter  40 value 0.000192
iter  40 value 0.000096
iter  40 value 0.000096
final  value 0.000096 
converged
Call:
multinom(formula = Class ~ …
Run Code Online (Sandbox Code Playgroud)

r nnet multinomial logistic-regression

4
推荐指数
1
解决办法
1576
查看次数

Dirichlet-多项式WinBUGS代码

我正在尝试使用BUGS编写Dirichlet多项式模型。基本上我有18个地区,每个地区3个类别。例如,区域1:0.50属于低,0.30属于中,而0.20属于高。该列表当然以不同的比例进入第18区,我得到的唯一代码是

`model  {
 for (i in 1:N) {
 x[1:3] ~ dmulti(p[],n[i])
 p[1:3] ~ ddirch(alpha[])
 }
 for (k in 1:3) {
 alpha[k] <- 1
 }
 }
 DATA list(n=c(38483, 2259, 1900),x=c(29256.42719, 1857.431404, 1548.007808, 29256.42719, 1857.431404, 1548.007808, 29256.42719, 1857.431404, 1548.007808), N=3)`
Run Code Online (Sandbox Code Playgroud)

例如,我首先将其缩短为3个区域。单击“ gen inits”后,其显示“ Dirichlet36”。请帮我编码。

dirichlet bayesian winbugs multinomial

4
推荐指数
1
解决办法
3678
查看次数

带替换的 numpy.random.choice 是否相当于单次试验的多项抽样?

我理解,严格来说,它们是不同的。但在 的一次试验(或实验)中,采样方式是否与给出不同的输出视图numpy.random.multinomial相同?numpy.random.choice

例如:

>> np.random.choice(6, size=6, replace=True, p=[1/6.]*6)
>> array([2, 0, 4, 2, 5, 4])
Run Code Online (Sandbox Code Playgroud)

输出给出了在数组中选取的内容的标识[0,1,2,3,4,5]

>> np.random.multinomial(1, [1/6.]*6, size=6)
>> array([[0, 0, 1, 0, 0, 0],
          [0, 0, 0, 0, 0, 1],
          [0, 0, 0, 1, 0, 0],
          [0, 0, 0, 1, 0, 0],
          [0, 0, 0, 0, 1, 0],
          [1, 0, 0, 0, 0, 0]])
Run Code Online (Sandbox Code Playgroud)

输出给出了每个选项被选择的次数,但由于它仅限于 1 次试验,因此也可以总结为[2,5,3,3,4,1]from options[0,1,2,3,4,5]

python random statistics numpy multinomial

4
推荐指数
1
解决办法
2384
查看次数

骰子的总和

我试图计算获得n个侧面骰子结果的特定总和的概率.我在这个链接中找到了公式(公式10).

这是我在C中编写的代码:

# include <stdio.h>
# include <stdlib.h>
# include <math.h>

# define n      2   // number of dices
# define s      6   // number of sides of one dice

int fact(int x){
  int y = 1;
  if(x){
    for(int i = 1; i <= x; i++)
      y *= i;
  }
  return y;
}
int C(int x,int y){
  int z = fact(x)/(fact(y)*fact(x-y));
  return z;
}

int main(){
  int     p,k,kmax;
  double  proba;

  for(p = n; p <= s*n; p++){
    proba …
Run Code Online (Sandbox Code Playgroud)

c multinomial

3
推荐指数
1
解决办法
110
查看次数

重新定义 R 的 nnet::multinom Predict.multinom 预测方法以支持 type="link"

我希望nnet::multinom新包支持 R 的函数marginaleffects,但marginaleffects::predictions()依赖predict()建模包提供的方法来计算响应和链接尺度的预测值。nnet::multinom然而,在 的情况下,predict()提供的方法nnet不支持链接规模的预测 - 它仅支持type="probs"type="class"https://github.com/vincentarelbundock/marginaleffects/issues/404。所以我想重新定义该nnet::multinom predict.multinom方法,以便它也支持type="link"(在该包的原始命名空间中,以便该marginaleffects包也将其视为已被重新定义)。有什么办法可以做到这一点吗?

作为参考,该predict.multinom方法(https://github.com/cran/nnet/blob/master/R/multinom.R)现在看起来像

predict.multinom <- function(object, newdata, type=c("class","probs"), ...)
{
    if(!inherits(object, "multinom")) stop("not a \"multinom\" fit")
    type <- match.arg(type)
    if(missing(newdata)) Y <- fitted(object)
    else {
        newdata <- as.data.frame(newdata)
        rn <- row.names(newdata)
        Terms <- delete.response(object$terms)
        m <- model.frame(Terms, newdata, na.action = na.omit,
                         xlev = object$xlevels)
        if …
Run Code Online (Sandbox Code Playgroud)

r nnet multinomial emmeans marginal-effects

3
推荐指数
1
解决办法
569
查看次数