簡體   English   中英

lm參數估計

[英]r lm parameter estimates

錯誤變量長度不同

我對此錯誤感到困惑,而且我不知道該怎么辦。

n1<-20
m1<-0
sd1<-1
y<-rnorm(n1,m1, sd1)
x<-rnorm(n1,m1, sd1)
e<-rnorm(n1,m1, sd1)
b0<-0
b1<-1

modelfit1<-lm(y~ b0 + b1*x + e)
Error in model.frame.default(formula = y ~ b0 + b1 * x + e:
variable lengths differ (found for 'b0')

編輯:我正在這種情況下,其中n = 20,參數b0 = 0,且b = 1為true,且獨立和誤差均值均值為0和sd = 1。 這可能嗎?

非常感謝!

我可能是錯的,但是我相信您想模擬一個結果,然后估計它的參數。 如果是這樣,您寧願執行以下操作:

n1 <- 20
m1 <- 0
sd1<- 1
b0 <- 0
b1 <- 1

x <- rnorm(n1,m1, sd1)
e <- rnorm(n1,m1, sd1)


y <- b0 + b1*x + e
summary(lm(y~x))

Call:
lm(formula = y ~ x)

Residuals:
     Min       1Q   Median       3Q      Max 
-1.66052 -0.40203  0.05659  0.44115  1.38798 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  -0.3078     0.1951  -1.578    0.132    
x             1.1774     0.2292   5.137  6.9e-05 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.852 on 18 degrees of freedom
Multiple R-squared:  0.5945,    Adjusted R-squared:  0.572 
F-statistic: 26.39 on 1 and 18 DF,  p-value: 6.903e-05

並且如果您想多次執行此操作,請考慮以下事項:

repetitions <- 5
betas <- t(sapply(1:repetitions, function(i){
  y <- b0 + b1*x + rnorm(n1,m1, sd1)
  coefficients(lm(y~x))
  }))
betas
     (Intercept)         x
[1,]  0.21989182 0.8185690
[2,] -0.12820726 0.7289041
[3,] -0.27596844 0.9794432
[4,]  0.06145306 1.0575050
[5,] -0.31429950 0.9984262

現在,您可以查看估計的beta的平均值:

colMeans(betas)
(Intercept)           x 
-0.08742606  0.91656951 

和方差-協方差矩陣:

var(betas)
             (Intercept)            x
(Intercept)  0.051323041 -0.007976803
x           -0.007976803  0.018834711

我建議您將所有內容都放入data.frame並按以下方式處理:

set.seed(2)
m1<-0
sd1<-1
y<-rnorm(n1,m1, sd1)
x<-rnorm(n1,m1, sd1)
b0<-0
b1<-1

d <- data.frame(y,b0,b1,x,e=rnorm(20,0,1))
head(d)
#             y b0 b1            x          e
# 1 -0.89691455  0  1  2.090819205 -0.3835862
# 2  0.18484918  0  1 -1.199925820 -1.9591032
# 3  1.58784533  0  1  1.589638200 -0.8417051
# 4 -1.13037567  0  1  1.954651642  1.9035475
# 5 -0.08025176  0  1  0.004937777  0.6224939
# 6  0.13242028  0  1 -2.451706388  1.9909204

現在一切正常:

modelfit1 <- lm(y~b0+b1*x+e, data=d)
modelfit1
# Call:
# lm(formula = y ~ b0 + b1 * x + e, data = d)
# Coefficients:
# (Intercept)           b0           b1            x            e         b1:x  
#     0.19331           NA           NA     -0.06752      0.02240           NA  
summary(modelfit1)
# Call:
# lm(formula = y ~ b0 + b1 * x + e, data = d)
# Residuals:
#     Min      1Q  Median      3Q     Max 
# -2.5006 -0.4786 -0.1425  0.6211  1.8488 
# Coefficients: (3 not defined because of singularities)
#             Estimate Std. Error t value Pr(>|t|)
# (Intercept)  0.19331    0.25013   0.773    0.450
# b0                NA         NA      NA       NA
# b1                NA         NA      NA       NA
# x           -0.06752    0.21720  -0.311    0.760
# e            0.02240    0.20069   0.112    0.912
# b1:x              NA         NA      NA       NA
# Residual standard error: 1.115 on 17 degrees of freedom
# Multiple R-squared:  0.006657,    Adjusted R-squared:  -0.1102 
# F-statistic: 0.05697 on 2 and 17 DF,  p-value: 0.9448

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM