【问题标题】:How to do a linear probability model in R w/o constant如何在没有常数的R中做一个线性概率模型
【发布时间】:2021-03-18 07:09:10
【问题描述】:

我至少有两个时期:t 年和 t+1 年。我已经根据家庭收入分配定义了收入组,例如不同的四分位数(Q1_t、Q2_t、Q3_t 和 Q4_t)。 t 年。每个 Qx_t 是一个虚拟 {0,1},指示一个 HH 在第 t 年是否属于该组 {x= 1, 2, ... 4}。 我想通过估计来评估转移概率,例如,以下等式 [w/o constant!]

Q1_{t+1} = b1 Q1_t + b2 Q2_t + b3 Q2_t + b4 Q4_t + c X + e

在 LHS 上,我会有一个假人指示,例如如果一个 HH 在 t+1 年属于第 1 个四分位数。在 RHS 上,我将有 t 年的四个组假人加上一个控制向量 X。

我想用 R 中的线性概率模型(=OLS 应用于二进制数据)来估计这个方程。

我在做 lm(y ~ 0 + x1 + x2 + ...) 但我收到以下错误:

model2<-lm(qt2~0+q1+q2+q3+q4+q5+n_female,n_male, data = df)
Error incontrasts<-`(`*tmp*`, value = contr.funs[1 + isOF[nn]]) : 
  contrasts can be applied only to factors with 2 or more levels

这是我的数据样本。

df <- structure(list(ID = c(320, 300, 150, 170, 420, 430),size = c(5,1,6,3,4,2), n_fem = c( 2,1,3,3,2,1), n_male= c(3,0,3,1,2,1),n_sec= c (0,0,4,2,0,0),n_high= c(0,0,1,1,4,2), q1= c(1,0,0,0,0,0), q2=c(0,0,1,0,0,0), q3=c(0,0,0,1,0,1), q4=c(0,1,0,0,0,0),q5= c(0,0,0,0,0,0), qt1= c(1,0,0,0,0,0), qt2= c(0,0,0,1,0,0), qt3= c(0,0,0,0,0,1),qt4= c(0,0,0,0,1,0), qt5= c(0,0,0,0,0,0) 
class = "data.frame", row.names = c(NA,-6L))

ID   Size  n_fem n_male n_Sec n_High Q1 Q2 Q3 Q4 Q5 Qt1 QT2 QT3 QT4 QT5
320   5      2      3     0    0      1  0  0  0  0  1  0  0  0  0  0 
300   1      1      0     0    0      0  0  0  1  0  0  0  1  0  0  0
150   6      3      3     4    1      0  1  0  0  0  0  1  0  0  0  0
170   3      3      1     2    1      0  0  1  0  0  0  0  0  0  1  0
420   4      2      2     0    4      0  0  0  0  1  0  0  0  0  0  1
430   2      1      1     0    2      0  0  1  0  0  0  0  0  1  0  0 

【问题讨论】:

  • 如果您将+ 0 放入模型公式中,它将适合模型而没有截距。您还需要更多帮助吗?如果是这样,如果您共享数据样本和到目前为止的代码,这将有很大帮助,以便我们知道您从哪里开始。
  • 我正在运行以下模型: lm(y ~ 0 + x1 + x2 + ...)y 是数字,因为我读到我必须转换为数字和 X1,X2... 是因子具有 1,0 或 NA 的变量。我收到以下错误:contrasts&lt;-(*tmp*, value = contr.funs[1 + isOF[nn]]) 中的错误:对比只能应用于具有 2 个或更多级别的因子
  • 我应该全部转换成数字吗?
  • 如果数据是二进制 0/1(和 NA),则因子和数字之间应该没有区别。您得到的错误表明,当省略带有 NA 的行时,您的一些变量要么全为 1,要么全为 0 - 这就是导致错误的问题。您可以尝试使用data_no_nas = na.omit(your_data)sapply(data_no_nas, function(x) length(unique(x))) 之类的方法来查看数据中按列列出的唯一值的数量,其中省略了缺失值的行。您可能需要删除缺失率较高的列,以便在忽略缺失值后留下足够的数据。
  • 谢谢!我已经从模型中的变量中消除了 NA,所以只有 0 或 1(无论它们是否属于五分之一)。但我仍然遇到同样的错误......有什么想法吗?

标签: r binary linear-regression probability


【解决方案1】:

如果我的理解正确,你只想:

lm(y ~ 0 + x1 + x2 + ...)glm(y ~ 0 + x1 + x2 + ..., family = binomial()) 如果您正在寻找 logit 模型

【讨论】:

    猜你喜欢
    • 2019-05-15
    • 1970-01-01
    • 1970-01-01
    • 2019-07-26
    • 1970-01-01
    • 2021-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多