对数模型预测值总和的不确定性(标准误)计算方法问询
对数转换模型的预测值总和标准误计算问题
我需要计算含对数转换变量的线性模型中,非对数预测值总和的标准误,以下是具体的数据、模型及两种尝试的计算方式,想确认哪种方式正确。
数据
df=structure(list(bio = c(0.0979, 0.0967, 0.02465, 0.04435, 0.11725, 0.1627, 0.04, 0.587, 0.3526, 0.7569, 0.7605, 0.4741, 1.08133333333333, 0.7867, 1.42275, 0.9524, 0.2597, 0.0883, 0.2449, 0.03145, 0.03325, 0.0767, 0.4677, 0.0584, 0.1086, 0.2975, 0.3741, 0.33245, 0.5031, 0.1763, 0.069, 0.0816, 0.169, 0.786, 0.425, 1.3413, 0.5996, 0.3097, 0.0031, 0.022, 0.4405, 0.5393, 1.3246, 0.8198), npp = c(218.82107035319, 121.504152933757, 150.33682929145, 218.550893147786, 276.517130533854, 349.569854736328, 198.919808281793, 217.842965443929, 311.313401963976, 357.415242513021, 323.259494357639, 273.382185194227, 324.124850802951, 400.985666910807, 445.559258355035, 268.33075120714, 165.860109117296, 212.145429823134, 173.391438802083, 174.656700981988, 117.246879577637, 231.400204128689, 172.146889580621, 162.356897989909, 308.175516764323, 280.752919514974, 314.384904649523, 309.407111273872, 292.705355326335, 197.660367329915, 297.175706651476, 358.328002929688, 206.897630479601, 320.320393880208, 207.519053141276, 263.267913818359, 358.764539082845, 181.183760325114, 154.821061876085, 205.742538452148, 350.833702087402, 326.256442599826, 385.434377034505, 658.054239908854)), row.names = c(NA, -44L), class = c("tbl_df", "tbl", "data.frame")) newdf=structure(list(npp = c(209.96727945347, 124.96744257609, 130.669062343644, 87.5727598667145, 70.7044902907477, 84.3105547428131, 156.320644348387, 196.061843472435, 241.122909634202, 224.017583710807), pred_bio = c(`1` = 0.138277771264287, `2` = 0.040836228098044, `3` = 0.0453512804649462, `4` = 0.0177033648027766, `5` = 0.010706271639848, `6` = 0.0161920617114052, `7` = 0.0691137488725324, `8` = 0.117707340206985, `9` = 0.19142087859615, `10` = 0.161017983879625 ), bio = c(`1` = 0.138277771264287, `2` = 0.040836228098044, `3` = 0.0453512804649462, `4` = 0.0177033648027766, `5` = 0.010706271639848, `6` = 0.0161920617114052, `7` = 0.0691137488725324, `8` = 0.117707340206985, `9` = 0.19142087859615, `10` = 0.161017983879625)), row.names = c(NA, -10L), class = c("tbl_df", "tbl", "data.frame"))
模型与预测
我建立了对数转换的线性模型:
model=lm(log(bio)~ log(npp), data=df)
生成非对数预测值并计算总和:
newdf$bio= exp(predict(model,newdf)) sum(newdf$bio)
两种标准误计算方式
我尝试了两种计算预测值总和标准误的方式,想确认哪种正确:
方式一:对模型矩阵和方差协方差矩阵取指数
v <- colSums(exp(model.matrix(formula(model), newdf))) se <- sqrt(v %*% exp(vcov(model)) %*% v) se
方式二:直接使用原矩阵
v <- colSums(model.matrix(formula(model), newdf)) se <- sqrt(v %*% vcov(model) %*% v) se
内容的提问来源于stack exchange,提问作者yuliaUU
相关产品推荐
相关产品推荐

