由於與獨立變量不相關的因變量中的測量誤差,所估計的係數是無偏的,但標準誤差太小。這裏是我使用的參考(第1頁& 2): http://people.stfx.ca/tleo/econ370term2lec4.pdf
我想你只需要調整由lm()計算出來的標準錯誤。這就是我在下面的代碼中試圖做的。我不是一個統計人員,所以你可能想要張貼來交叉驗證,並要求更好的直覺。
對於下面的例子,我假定「不確定度」列是標準偏差(或標準誤差)。爲了簡單起見,我將模型改爲:y〜x。
# initialize dataset
df <- data.frame(
x = c(2000,2500,3000,3500,4000,4500,5000,5500,6000,6500,7000,7500,8000,8500,9000,9500,10000),
y = c(0.2084272,0.207078125,0.2054202,0.203488075,0.2013152,0.198933825, 0.196375,0.193668575, 0.1908432, 0.187926325, 0.1849442, 0.181921875, 0.1788832, 0.175850825, 0.1728462,0.169889575, 0.167),
y.err = c(0.002067834, 0.001037248, 0.001959138, 0.000328942, 0.000646088, 0.001375657, 0.000908696, 0.00014721, 0.000526976, 0.001217318, 0.000556495, 0.000401883, 0.001446992, 0.0, 0.001676249, 0.001011735, 0.000326678)
)
df
# model regression
model <- lm(y~x, data = df)
summary(model)
# get the variance of the measurement error
# thanks to: http://schools-wikipedia.org/wp/v/Variance.htm
# law of total variance
pooled.var.y.err <- mean((df$y.err)^2) + var((df$y.err)^2)
# get variance of beta from model
# thanks to: http://stats.stackexchange.com/questions/44838/how-are-the-standard-errors-of-coefficients-calculated-in-a-regression
X <- cbind(1, df$x)
# (if you add more variables to the model you need to modify the following line)
var.betaHat <- anova(model)[[3]][2] * solve(t(X) %*% X)
# add betaHat variance to measurement error variance
var.betaHat.adj <- var.betaHat + pooled.var.y.err
# calculate adjusted standard errors
sqrt(diag(var.betaHat.adj))
# compare to un-adjusted standard errors
sqrt(diag(var.betaHat))
請注意,這裏的數據是'模擬',基於但不使用真實的東西。 –
您如何使用不確定性?作爲另一個自變量?作爲別的東西?請爲自己做個忙,不要養成附加數據的習慣。它混亂了你的環境,並可能導致分組數據和排序問題。 – Heroka
@Heroka在圖形分析程序(Origin,Igor,...)中有相當標準的分析中使用了一列作爲不確定性:我不是統計學家,所以我不知道它是如何被使用的。在「附加」上,我想你的意思是「附加(數據)」:我從R的書中得知(第二版,_e.g._第467頁),所以假設(d)它是標準的。 –