小编cho*_*rem的帖子

R 中使用 lm() 和 svyglm() 的加权线性回归。相同的模型,不同的结果

我想在 R studio 中应用调查权重进行线性回归。我已经看到可以使用该lm()函数来做到这一点,这使我能够指定我想要使用的权重。然而,也可以使用该函数来执行此svyglm()操作,该函数对调查设计对象中已按所需变量加权的变量进行回归。

从理论上讲,我认为这两个回归模型的结果没有理由不同,而且 beta 估计值是相同的。然而,每个模型中的标准误不同,导致不同的 p 值,从而导致不同的显着性水平。

哪种型号最合适?任何帮助将不胜感激。

这是 R 代码:

dat <- read.csv("https://raw.githubusercontent.com/LucasTremlett/questions/master/questiondata.csv")
model.weighted1 <-  lm(DV~IV1+IV2+IV3, data=dat, weights = weight)
summary(model.weighted1)
dat.weighted<- svydesign(ids = ~1, data = dat, weights = dat$weight)
model.weighted2<- svyglm(DV~IV1+IV2+IV3, design=dat.weighted)
summary(model.weighted2)
Run Code Online (Sandbox Code Playgroud)

r survey linear-regression weighted

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

Ifelse 只返回列表的第一个元素

我有两个清单:

list1<- list(x=c(1,2,3),
         y=c(4,5,6))
list1

#$x
#[1] 1 2 3

#$y
#[1] 4 5 6

list2<- list(x=c(1,2,3),
         y=c(4,5,6),
         z=c(7,8,9))
list2

#$x
#[1] 1 2 3

#$y
#[1] 4 5 6

#$z
#[1] 7 8 9
Run Code Online (Sandbox Code Playgroud)

我正在尝试ifelse()根据列表的长度执行一个语句,如果第二个列表的长度高于第一个列表,则应返回第二个列表。但是,该ifelse()语句仅返回所需列表的第一个元素:

ifelse(length(list1)<length(list2),list2,list1)

# [[1]]
# [1] 1 2 3
Run Code Online (Sandbox Code Playgroud)

为什么会发生这种情况,如何让语句ifelse()返回整个列表?

r

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

标签 统计

r ×2

linear-regression ×1

survey ×1

weighted ×1