【发布时间】: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<-(*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