相关疑难解决方法(0)

分类变量的所有系数均具有“与平均值的差异”的模型;得到“对比编码”来做到这一点?

假设我们想做一个简单的“收入描述模型”。假设我们有三个组,北部、中部和南部(想想美国地区)。\n比较其他相似的组,假设北部的平均收入为 130,中部为 80,南部为 60。假设组规模相等,则平均值为90.

\n

在(线性回归)模型中,应该有一种方法将系数报告为与总体平均值的差异(在多变量上下文中,\xe2\x80\x98所有其他都等于\xe2\x80\x99)并为每个系数获取一个:

\n

$\\beta_{北} = 40$

\n

$\\beta_{中心} = -10$

\n

$\\beta_{南} = -30$

\n

显然,要跳过拦截。

\n

这对我来说似乎是最直观的。但我可以\xe2\x80\x99t在我的一生中弄清楚如何使用R\xe2\x80\x99s\xe2\x80\x98对比编码\xe2\x80\x99来得到这个。(而且,这似乎弄乱了变量名称)。

\n

为我的模拟/mwe 设置参数

\n
m_inc <- 90\nb_n <- 40\nb_c  <- -10\nb_s <- -30\n\nsd_prop <- 0.5 #sd as share of mean\npop_per <- 1000 \n
Run Code Online (Sandbox Code Playgroud)\n

模拟数据

\n
\nset.seed(100)\n\nn_income <- rnorm(pop_per, m_inc + b_n, (m_inc + b_n)*sd_prop)\nc_income <- rnorm(pop_per, m_inc + b_c, (m_inc + b_s)*sd_prop)\ns_income <- rnorm(pop_per, m_inc + b_s, (m_inc + b_s)*sd_prop)\n\nnoise_var <- rnorm(pop_per*3, 0, (m_inc + b_s)*sd_prop)\n\ni_df <- …
Run Code Online (Sandbox Code Playgroud)

r linear-regression lm

10
推荐指数
1
解决办法
767
查看次数

`lm`摘要不显示所有因子水平

我对一些属性,包括两个分类属性运行的线性回归,B并且F,我没有得到每一个因子水平我有一个系数值.

B有9个级别,F有6个级别.当我最初运行模型(带截距)时,我得到8个系数B,F其中5个我理解为拦截中包含的每个系数的第一级.

我希望在其中排列水平BF基于它们的系数,所以我-1在每个因子之后添加以将截距锁定为0,以便我可以获得所有级别的系数.

Call:
lm(formula = dependent ~ a + B-1 + c + d + e + F-1 + g + h, data = input)

Coefficients:
       Estimate Std. Error t value Pr(>|t|)    
a     2.082e+03  1.026e+02  20.302  < 2e-16 ***
B1   -1.660e+04  9.747e+02 -17.027  < 2e-16 ***
B2   -1.681e+04  9.379e+02 -17.920  < 2e-16 ***
B3   -1.653e+04  9.254e+02 -17.858  < 2e-16 ***
B4   -1.765e+04 …
Run Code Online (Sandbox Code Playgroud)

regression r linear-regression lm

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

ANOVA表的R重要性代码?

测试数据框:

> foo
      x     y     z
1 0.191 0.324 0.620
2 0.229 0.302 0.648
3 0.191 0.351 0.626
4 0.229 0.324 0.630
5 0.152 0.374 0.656
6 0.191 0.295 0.609
7 0.229 0.267 0.665
8 0.152 0.353 0.657
9 0.152 0.355 0.655
Run Code Online (Sandbox Code Playgroud)

两个线性模型:

model1 <- lm(z~polym(x,y,degree = 1),data=foo)
model2 <- lm(z~polym(x,y,degree = 2),data=foo)
Run Code Online (Sandbox Code Playgroud)

两个模型的ANOVA返回:

> anova(model1,model2)
Analysis of Variance Table

Model 1: z ~ polym(x, y, degree = 1)
Model 2: z ~ polym(x, y, degree = 2)
  Res.Df      RSS …
Run Code Online (Sandbox Code Playgroud)

regression r anova

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

如何在使用R进行回归分析时为变量设置对比?

在编码过程中,我需要更改分配给一个因子的虚拟值。但是,以下代码不起作用。有什么建议吗?

test_mx= data.frame(a= c(T,T,T,F,F,F), b= c(1,1,1,0,0,0))
test_mx
      a b
1  TRUE 1
2  TRUE 1
3  TRUE 1
4 FALSE 0
5 FALSE 0
6 FALSE 0

model= glm(b ~ a, data= test_mx, family= "binomial")
summary(model)

model= glm(a ~ b, data= test_mx, family= "binomial")
summary(model)
Run Code Online (Sandbox Code Playgroud)

在这里,我将得到b的系数为47。现在,如果我交换虚拟值,则它应该为-47。然而,这种情况并非如此。

test_mx2= test_mx
contrasts(test_mx2$a)
      TRUE
FALSE    0
TRUE     1
contrasts(test_mx2$a) = c(1,0)
contrasts(test_mx2$a)
      [,1]
FALSE    1
TRUE     0
model= glm(a ~ b, data= test_mx2, family= "binomial")
summary(model)
Run Code Online (Sandbox Code Playgroud)

b的系数仍然相同。到底是怎么回事?谢谢。

regression r linear-regression lm glm

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

标签 统计

r ×4

linear-regression ×3

lm ×3

regression ×3

anova ×1

glm ×1