R不识别回归中的因素

R不识别回归中的因素,r,R,我在R中运行线性概率模型,并将某些变量定义为因素,例如: r_js<-factor(birth$r_js) r_pp<-factor(birth$r_pp) r_cp<-factor(birth$r_cp) r_cs<-factor(birth$r_cs) 如果我对这些变量执行一系列class()调用,R会确认它们属于类“factor” 现在,如果我试图用一个玩具数据集复制结果,我就无能为力了。以下是定义了变量的玩具数据集: demo <- data.fra

我在R中运行线性概率模型,并将某些变量定义为因素,例如:

r_js<-factor(birth$r_js)

r_pp<-factor(birth$r_pp)

r_cp<-factor(birth$r_cp)

r_cs<-factor(birth$r_cs)
如果我对这些变量执行一系列class()调用,R会确认它们属于类“factor”

现在,如果我试图用一个玩具数据集复制结果,我就无能为力了。以下是定义了变量的玩具数据集:

demo <- data.frame(expand.grid(country = c("USA","USA","China","China","Sudan","Sudan"),
                               year = 1994:1996),
                   democratic = round(runif(9, 0, 20), 0),
                   UN = rbinom(18,1,0.5))

pzb<-factor(demo$UN)
pzdemo<-demo$democratic
pzyear<-demo$year
R将“pzb”视为一个系数,如“pzb”后的“1”所示。玩具数据集和我的数据集之间有一个相似之处:如果我只是在两个数据集中定义变量,而不使用factor()函数,那么变量属于“integer”类。现在,这里有一个区别(可能这就是导致异常的原因):当我在数据集中定义变量时,它们是“大因子”

需要注意的其他几点:如果我执行以下操作:

birth$r_js<-factor(birth$r_js)
r_js<-birth$r_js

birth$r_js
r_js但是为什么在第一个
lm()
中的
pzbbe不是这样的,因为您有
data=birth
,这意味着公式将首先引用
birth
中的变量/列,而不是全局工作区中的独立变量。您的
demo
之所以有效,是因为您没有指定
data=demo
——这将与您原来的示例有相同的问题。@我删除的最近一封邮件
data=
现在有效了!我习惯性地指定数据帧,但我想如果我定义了所有变量,那么我就不需要执行该步骤。它减少了代码中的歧义。在调用
lm
时,您应该更改
因子
-创建代码以覆盖
data.frame
中的变量,然后保留
data=
引用。如果可以避免在工作区中使用自由浮动变量,这是一件好事。
Call:
lm(formula = pzdemo ~ pzb + pzyear)

Residuals:
    Min      1Q  Median      3Q     Max 
-12.091  -1.971   0.169   3.849   5.829 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)
(Intercept) 1926.7582  3086.6617   0.624    0.542
pzb1           0.7606     2.5916   0.293    0.773
pzyear        -0.9601     1.5473  -0.620    0.544
birth$r_js<-factor(birth$r_js)
r_js<-birth$r_js