我想获得具有标准误差的多项式 logit 模型的平均边际效应 (AME)。为此,我尝试了不同的方法,但到目前为止还没有达到目标。
我最好的尝试是使用mlogit我在下面显示的手动获取 AME 。
library(mlogit)
ml.d <- mlogit.data(df1, choice="Y", shape="wide") # shape data for `mlogit()`
ml.fit <- mlogit(Y ~ 1 | D + x1 + x2, reflevel="1", data=ml.d) # fit the model
# coefficient names
c.names <- names(ml.fit$model)[- c(1, 5:6)]
# get marginal effects
ME.mnl <- sapply(c.names, function(x)
stats::effects(ml.fit, covariate=x, data=ml.d),
simplify=FALSE)
# get AMEs
(AME.mnl <- t(sapply(ME.mnl, colMeans)))
# 1 2 3 4 5
# D -0.03027080 -0.008806072 0.0015410569 0.017186531 0.02034928
# x1 …Run Code Online (Sandbox Code Playgroud) 当我执行multinom reg.我很难用Rmd和Knit HTLM(Rstudio)得到一个很好的总结.我想知道如何得到一个很好的总结,好像我使用stargazerLaTeX包...(参见printscreen)
摘要输出难以阅读!

总结很好,很容易与观星者阅读!

让我用多项式logit上的UCLA示例作为运行示例---
library(nnet)
library(foreign)
ml <- read.dta("http://www.ats.ucla.edu/stat/data/hsbdemo.dta")
ml$prog2 <- relevel(ml$prog, ref = "academic")
test <- multinom(prog2 ~ ses + write, data = ml)
dses <- data.frame(ses = c("low", "middle", "high"), write = mean(ml$write))
predict(test, newdata = dses, "probs")
Run Code Online (Sandbox Code Playgroud)
我想知道如何获得95%的置信区间?
我目前正在使用 NumPy 执行以下任务:我有一个很大的值网格,我需要在每个点提取多项式样本。多项式的概率向量因网格站点而异,因此 NumPy 多项式函数对我来说不太适用,因为它从相同的分布中进行所有绘制。迭代每个站点似乎效率极低,我想知道是否有一种方法可以在 NumPy 中有效地做到这一点。如果我使用 Theano (参见这个答案),这样的事情似乎是可能的(而且很快),但这需要大量的重写,我希望避免这种情况。多项式采样能否在基本 NumPy 中有效矢量化?
编辑:很容易修改 Warren 的代码以允许不同站点的不同计数,因为我发现我需要:所有需要做的就是传入完整数组count并删除第一个,如下所示:
import numpy as np
def multinomial_rvs(count, p):
"""
Sample from the multinomial distribution with multiple p vectors.
* count must be an (n-1)-dimensional numpy array.
* p must an n-dimensional numpy array, n >= 1. The last axis of p
holds the sequence of probabilities for a multinomial distribution.
The return value has the same shape as p.
"""
out = np.zeros(p.shape, …Run Code Online (Sandbox Code Playgroud) 例如,如果我提供 [0.5, 0.5] 的概率数组,两个函数将以相同的概率对索引 [0,1] 进行采样?
我使用multinom()nnet 包中的函数在 R 中运行多项逻辑回归。 nnet 包不包括 p 值计算和 t 统计量计算。我找到了一种使用此页面中的两个带尾 z 检验来计算 p 值的方法。举一个计算多项式 logit 的检验统计量的例子(不是真正的 t-stat,而是等价的),我计算了 Wald 统计量:
mm<-multinom(Empst ~ Agegroup + Marst + Education + State,
data = temp,weight=Weight)
W <- (summary(mm1)$coefficients)^2/(summary(mm1)$standard.errors)^2
Run Code Online (Sandbox Code Playgroud)
我取系数的平方并除以系数的标准误差的平方。然而,似然比检验是衡量逻辑回归拟合优度的首选方法。由于对似然函数的理解不完整,我不知道如何编写代码来计算每个系数的似然比统计量。使用multinom()函数的输出计算每个系数的似然比统计量的方法是什么?谢谢你的帮助。
我正在努力实现一个模型,其中狄利克雷变量的集中因子依赖于另一个变量。
情况如下:
系统由于组件故障而失败(共有三个组件,每次测试/观察时只有一个组件失败)。
组件发生故障的概率取决于温度。
这是该情况的(已注释的)简短实现:
import numpy as np
import pymc3 as pm
import theano.tensor as tt
# Temperature data : 3 cold temperatures and 3 warm temperatures
T_data = np.array([10, 12, 14, 80, 90, 95])
# Data of failures of 3 components : [0,0,1] means component 3 failed
F_data = np.array([[0, 0, 1], \
[0, 0, 1], \
[0, 0, 1], \
[1, 0, 0], \
[1, 0, 0], \
[1, 0, 0]])
n_component = 3
# When temperature …Run Code Online (Sandbox Code Playgroud) 我正在尝试训练一个多项式 logit 模型,当我在做的时候,我不妨把它变成一个 GAM 并在混合中添加样条。
我曾尝试使用mgcv,但到目前为止我只设法生成错误。以下是使用iris数据集的一些示例。
你知道如何让它收敛吗?
谢谢
library(tidyverse)
library(mgcv)
my_iris <- iris %>%
mutate(y = as.integer(as.factor(Species)) -1)
set.seed(8)
# this works (no spline)
mod1 <- gam(
data = my_iris,
formula = list(
y ~ Sepal.Length + Petal.Length,
~ Sepal.Length + Petal.Length),
family=multinom(K=2))
Run Code Online (Sandbox Code Playgroud)
模型 2(花瓣宽度上的 1 个样条)崩溃并显示以下警告:
Warning message:
In newton(lsp = lsp, X = G$X, y = G$y, Eb = G$Eb, UrS = G$UrS, L = G$L, :
Fitting terminated with step failure - check …Run Code Online (Sandbox Code Playgroud) 我试图拟合一个多项式逻辑回归模型,其rjags结果是一个具有 3 个级别的分类(名义)变量(结果),解释变量是年龄(连续)和组(具有 3 个级别的分类)。在此过程中,我想获得Age和Group的后验均值和基于分位数的 95% 区域。
我不太擅长,for loop我认为这就是我为模型编写的代码无法正常工作的原因。
我的 beta 先验遵循正态分布,\xce\xb2j \xe2\x88\xbc Normal(0,100) for j \xe2\x88\x88 {0, 1, 2}。
\n可重现的 R 代码
\nlibrary(rjags)\n\nset.seed(1)\ndata <- data.frame(Age = round(runif(119, min = 1, max = 18)),\n Group = c(rep("pink", 20), rep("blue", 18), rep("yellow", 81)), \n Outcome = c(rep("A", 45), rep("B", 19), rep("C", 55)))\n\nX <- as.matrix(data[,c("Age", "Group")]) \nJ <- ncol(X)\nN <- nrow(X)\n\n## Step …Run Code Online (Sandbox Code Playgroud) 我想绘制 R 中与该nnet::multinom()函数拟合的多项式模型的预测概率。我有对数尺度的数值预测变量。
尽管{ggeffects}应该与 兼容multinom(),但该图不会像线性模型那样显示置信区间。
我是 R 和这个社区的新手,所以如果这个问题非常基本或者缺少一些重要的东西,我很抱歉。这是一个小例子:
library(tidyverse)
library(nnet)
library(effects)
library(ggeffects)
df <- data.frame(response = c("1 Better", "1 Better", "1 Better", "2 Medium", "2 Medium", "2 Medium", "3 Worse", "3 Worse", "3 Worse"),
count = c(1000, 2000, 4000, 6000, 10000, 3000, 6000, 5000, 11000))
mod1 <- multinom(response ~ log(count), data = df)
summary(mod1)
effects::effect(mod1, term="log(count)", se=TRUE, confidence.level=.95) %>% plot() # Produces CIs.
ggeffects::ggpredict(mod1, terms = "count") %>% plot() + theme_bw() # No confidence …Run Code Online (Sandbox Code Playgroud)