【发布时间】:2022-01-14 12:42:55
【问题描述】:
我想估计R 中线性回归模型的参数。模型的类型为:y=(alpha)+(beta*x)+epsilon。该任务要求我将参数值系统地放置在数据框中。因此,我创建了一个空白数据框,然后继续在其中添加参数值的行。
df<-data.frame(alpha=double(),beta=double()) #blank dataframe
for(i in 1:1000)
{
sample_dat<-sampling_model(100,2,5,16,-2,2) #generating 100 samples
sample_model<-lm(y~x,data=sample_dat) #estimating the linear model
df<-rbind(df,sample_model$coefficients) #appending the values of the parameters
}
基本上,我有一个函数sampling_model,它被设计成可以为x_i 和epsilon_i 生成随机值(两者都遵循某种分布)并给出y_i 的值s 将这两个加上一些固定的 alpha 和 beta 值。
在上述循环的每次迭代中,我们在将线性模型拟合到参数(alpha 和 beta)时得到一对估计值。我想将它们存储在一个数据框中,我将其命名为df。
最初(在开始循环之前),names(df) 返回:
#[1] "alpha" "beta"
但是,在将所有这些 alpha 和 beta 估计值附加到 df(即循环之后)之后,names(df) 返回:
#[1] "X2.4932268478702" "X5.53432974825338"
我被困在这里,问自己为什么会这样。最好注意这些名称也不是恒定的。就像,如果我再次运行上述循环然后检查列的名称,数字都是不同的。是溢出了还是我在将值附加到数据框时犯了一些错误?
另外,我可以(并且确实)通过以下方式解决这个“模糊”名称的问题:
names(df)<-c('alpha','beta')
但这并不能掩盖我在df 中附加估计参数时出错的事实,我无法弄清楚这一点。任何人都可以帮助我如何避免这种情况?
为了方便,我还附上了我的sampling_model 函数:
sampling_model<-function(n,alpha,beta,variance,min_range,max_range)
{
x<-runif(n,min=min_range,max=max_range) #n uniform variates as x_i
epsilon<-rnorm(n,mean=0,sd=sqrt(variance)) #n normal variates as epsilon_i
y<-alpha+beta*x+epsilon #the dependant variable y
return(data.frame(x=x,y=y)) #returns dataframe of x and y
}
【问题讨论】: