[英]Variable lengths differ help, lm regression and weights, variables have the same number of rows
我正在尝试运行加权平方回归,在创建权重并尝试将其添加到回归 function 之后,我收到以下错误:
model.frame.default 中的错误(公式 = CO2_pc_cmice1 ~ GDP_pc_cmice1_C +:
可变长度不同(为“(权重)”找到)
lm
model 有 31 行,我创建的权重也是 31,我检查了其中任何一个中是否有NA
并且没有。 有一些负数,但如果这是问题,我会感到惊讶。 我已经使用na.action = na.omit
和na.action = na.exclude
运行了公式
我也在以 99 的样本进行回归运行,我遇到了同样的问题。
我的回归是
LinearCO2_lowerF <- (lm(CO2_pc_cmice1 ~ PolCiv_incPressFreedom_C + CorpInf_cmice1_C +
Gov_cmicepos1_C + LitGini_umice_C +
GDP_pc_cmice1_C + PopDensity_cmice1_C +
TradeOpen_cmice1_C + Urban_cmice1_C +
poly(Oil_coal_umice_C,2),
data = mydata_completemice2,
subset = IncomeL == "L"))
创建的权重
wtsco2low <- 1/fitted( lm(abs(residuals(LinearCO2_lowerF))~fitted(LinearCO2_lowerF)) )^2
以及权重回归
LinearCO2_lowerFw <- lm(CO2_pc_cmice1 ~ GDP_pc_cmice1_C + PolCiv_incPressFreedom_C +
CorpInf_cmice1_C + Gov_cmicepos1_C +
LitGini_umice_C + PopDensity_cmice1_C +
TradeOpen_cmice1_C + Urban_cmice1_C +
poly(Oil_coal_umice_C,2),
data = mydata_completemice2,
subset = IncomeL == "L",
weights = wtsco2low,
na.action = na.omit)
(也尝试过na.exlude
)
有人能帮忙吗?
R 建模函数的subset=
参数适用于所有arguments。 因此,看起来您的权重向量正在被子集化。 由于它已经是正确的长度,因此您会收到错误消息。
考虑这个例子:数据框有 30 行,但要分析的子集中只有 20 行,而我只有 20 个权重。 如果我使用subset=
参数,则权重会被子集化,并且会出现错误。
相反,您可以在将数据传递给lm()
之前对数据使用subset()
,这样就可以了。
> d<-data.frame(y=rnorm(30),x=1:30)
> w<-rep(2,20)
>
> lm(y~x,data=d, subset=x>10)
Call:
lm(formula = y ~ x, data = d, subset = x > 10)
Coefficients:
(Intercept) x
-0.3161 0.0189
> lm(y~x,data=d, subset=x>10, weights=w)
Error in model.frame.default(formula = y ~ x, data = d, subset = x > 10, :
variable lengths differ (found for '(weights)')
> lm(y~x,data=subset(d, x>10), weights=w)
Call:
lm(formula = y ~ x, data = subset(d, x > 10), weights = w)
Coefficients:
(Intercept) x
-0.3161 0.0189
```
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.