小编Jad*_*Jad的帖子

如何使用 R 运行面板数据中个体固定效应的预测概率(或平均边际效应)?

这是运行单个固定效应方法的三种不同方法,它们给出或多或少相同的结果(见下文)。我的主要问题是如何使用第二个模型 ( model_plm) 或第三个模型 ( model_felm) 获得预测概率或平均边际效应。我知道如何使用第一个模型 ( model_lm) 来做到这一点,并使用下面的示例来展示ggeffects,但这仅在我有一个小样本时才有效。

由于我有超过一百万人,我的模型只能使用model_plm和来工作model_felm。如果我使用model_lm,则需要花费大量时间来运行一百万个人,因为它们是在模型中受到控制的。我还收到以下错误:Error: vector memory exhausted (limit reached?)。我检查了 StackOverflow 上的许多线程来解决该错误,但似乎没有任何解决方案。

我想知道是否有有效的方法来解决这个问题。我的主要兴趣是提取交互的预测概率residence*union。我通常使用以下软件包之一提取预测概率或平均边际效应:ggeffectsemmeansmargins

library(lfe)
library(plm)
library(ggeffects)
data("Males")  

model_lm = lm(wage ~ exper + residence+health + residence*union +factor(nr)-1, data=Males)
model_plm = plm(wage ~ exper + residence + health + residence*union,model = "within", index=c("nr", "year"), data=Males)
model_felm = felm(wage ~ exper + residence + health …
Run Code Online (Sandbox Code Playgroud)

r panel-data emmeans marginal-effects

8
推荐指数
1
解决办法
826
查看次数

Julia 与 R 的等效 ggplot 代码是什么?

我想在 Julia 中绘制一个复杂的图表。下面的代码是使用 ggplot 的 Julia 版本。

using CairoMakie, DataFrames, Effects, GLM, StatsModels, StableRNGs, RCall
@rlibrary ggplot2

rng = StableRNG(42)
growthdata = DataFrame(; age=[13:20; 13:20],
                       sex=repeat(["male", "female"], inner=8),
                       weight=[range(100, 155; length=8); range(100, 125; length=8)] .+ randn(rng, 16))

mod_uncentered = lm(@formula(weight ~ 1 + sex * age), growthdata)

refgrid = copy(growthdata)
filter!(refgrid) do row
    return mod(row.age, 2) == (row.sex == "male")
end
effects!(refgrid, mod_uncentered)

refgrid[!, :lower] = @. refgrid.weight - 1.96 * refgrid.err
refgrid[!, :upper] = @. refgrid.weight + 1.96 * …
Run Code Online (Sandbox Code Playgroud)

ggplot2 julia

7
推荐指数
1
解决办法
1790
查看次数

如何从多元回归模型中提取置信区间?

我正在提取两个不同组的回归结果,如下面的示例所示。在tempdata.frame 中,我得到估计值、std.error、统计量和 p 值。但是,我没有得到置信区间。有没有一种简单的方法来提取它们?

 df <- tibble(
  a = rnorm(1000),
  b = rnorm(1000),
  c = rnorm(1000),
  d = rnorm(1000),
  group = rbinom(n=1000, size=1, prob=0.5)
)

df$group = as.factor(df$group)

temp <- df %>%
  group_by(group) %>%
  do(model1 = tidy(lm(a ~ b + c + d, data = .))) %>%   
  gather(model_name, model, -group) %>%                        
  unnest() 
Run Code Online (Sandbox Code Playgroud)

regression r confidence-interval broom

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

为什么排名函数对所有国家都给予同等的排名?

我在问一个已经回答的问题:用 dplyr 创建一个排名变量?. 但是由于一些奇怪的原因,该方法不适用于我的数据。我正在按国家对两个时期之间的失业率差异进行排名。

我按照建议使用此代码:

df %>% mutate(rank = dense_rank(desc(difference)))
Run Code Online (Sandbox Code Playgroud)

但我得到 1 作为所有国家的排名。有人能告诉我出了什么问题吗?

这是我的数据:

structure(list(cntry = structure(1:23, .Label = c("Austria", 
"Belgium", "Switzerland", "Czech Republic", "Germany", "Denmark", 
"Estonia", "Greece", "Spain", "Finland", "France", "Hungary", 
"Ireland", "Iceland", "Italy", "Luxembourg", "Netherlands", "Norway", 
"Poland", "Portugal", "Sweden", "Slovakia", "United Kingdom"), class = "factor"), 
    difference = c(0.0321271618815491, -0.0251554839428438, 1.15072942999273, 
    1.33128598731325, -2.26400160811014, 3.15779980836141, 6.80457896869579, 
    6.70389987400804, 10.8919891165462, 0.547460084552159, 0.906834874234579, 
    3.01112447330944, 8.5885631447415, 3.75206570820895, 1.58794503937105, 
    0.334356006591187, 0.664766564981566, 0.0155501469693973, 
    -0.984605793974606, 4.28470580541735, 1.11996749834057, 1.67278245779503, 
    1.93783051552776)), row.names = c(NA, -23L), groups = …
Run Code Online (Sandbox Code Playgroud)

r dplyr

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

如何使用多个变量在 tidyverse 中使用传播函数?

我正在尝试在 tidyverse 中为下面的数据使用传播函数的不同方法,但没有成功。目的是为变量中的值的每个 id 1 和 0 提供一个新列:health、ci_high、ci_low。

id  unemployment    health  ci_high ci_low
1   5                 100   110       90
1   10                 80   90        70
1   15                 70   80        60
0   5                  90   100       80
0   10                 50   60        40
0   15                 40   50        30

structure(list(id = structure(c(1, 1, 1, 0, 0, 0), format.stata = "%9.0g"), 
    unemployment = structure(c(5, 10, 15, 5, 10, 15), format.stata = "%9.0g"), 
    health = structure(c(100, 80, 70, 90, 50, 40), format.stata = "%9.0g"), 
    ci_high = structure(c(110, 90, …
Run Code Online (Sandbox Code Playgroud)

r dplyr tidyverse

2
推荐指数
1
解决办法
31
查看次数