Оригинальная ссылка:tecdat.cn/?p=22921
Первоисточник: Публичная учетная запись Tuoduan Data Tribe.
Сопоставьте регрессии Риджа и LASSO, интерпретируйте коэффициенты и сделайте интуитивно понятную визуализацию того, как они меняются в зависимости от λ.
# 加载CBI数据# 子集所需的变量(又称,列)CBI_sub <- CBI# 重命名变量列(节省大量的输入)names(CBI_sub)[1] <- "cbi"# 只要完整案例,删除缺失值。CBI_sub <- CBI_sub[complete.cases(CBI_sub),]#现在检查一下CBI_sub里面的内容names(CBI_sub)
# 设置控制参数control = method = "cv",number=5) # 5折CVcbi ~ ., data = CBI_sub, method = "glmnet", trControl = control, preProc = c("center","scale"), # 中心和标准化数据# 得到系数估计值(注意,我们真正关心的是β值,而不是S.E.)。coef(ridge_caret.fit, bestTune$lambda)
cbi ~ ., data = CBI_sub, method = "glmnet", tuneGrid = expand.grid(alpha = 1, # 获得系数估计coef(lasso_caret,bestTunelambda)
Ридж-регрессия и лассо-регрессия анализировались с использованием корреляционных функций из пакета glmnet.
Подготовить данные
Обратите внимание, что коэффициенты представлены в формате разреженной матрицы, поскольку решения на пути регуляризации имеют тенденцию быть разреженными. Больше времени и места с разреженным форматом
# 拟合岭回归模型 glmnet(X, Y, alpha = 0)#检查glmnet模型的输出(注意我们拟合了一个岭回归模型#记得使用print()函数而不是summary()函数 print(glmnet.fit)
# 输出最佳lamda处的岭回归coefscoef(glmnet.fit, s = lambda.1se)
результат графика
# plot(ridge_glmnet.fit, label = TRUE)
График показывает путь коэффициентов модели к L1-норме всего вектора коэффициентов по мере изменения лямбда. Верхняя ось представляет количество ненулевых коэффициентов при текущей лямбде, что также является эффективными степенями свободы (df) лассо.
par(mfrow=c(1,2)) # 建立1乘2的绘图环境plot_glmnet(ridge_glmnet.fit, xvar = "lambda", label=6, xlab = expression(paste("log(", lambda, ")")), ylab = expression(beta)) # "标签"是指你想让图表显示的前N个变量。
# 进行变量选择,比如说,我想根据λ>0.1的标准或其他一些值来选择实际系数。coef(ridge_glmnet.fit, s = 0.1)
Ридж-регрессия с перекрестной проверкой
# plot(cv.ridge)# 我们可以查看选定的lambda和相应的系数。例如:lambda.min
# 根据最小的lambda(惩罚)选择变量
# lambda.min是λ的值,它使交叉验证的平均误差最小# 选择具有最大惩罚性的一个coef
## 对lasso模型做同样的处理
сбор данных
Проверка спецификации функциональной формы с помощью Adaptive LASSO
# 加载CBI数据CBI <- read.csv("dat.csv")#对需要的变量进行取子集(列)names(CBI)<- "cbi"
fitpoly(degree = 2, thre = 1e-4) # 设置多项式的度数为2
bootstrap
boot(poly.fit1, nboot = 5) #5次bootstrap迭代
Перекрестная проверка
# 交叉验证,10折CVcbi ~ ., data = CBI_sub, degrees.cv = 1:3,)
# 提取最佳模型并进行bootstrapboot(cv.pred, nboot = 5) # 5次bootstrap# 绘制cv.boot的预测值的边际效应marg(cv.boot))
Пополнить
Получите среднее значение бутстрапа для регрессии хребта и моделей LASSO
#如果你想要S.E.,通过bootstrap模拟得到它。library(boot)boot(CBI_sub, function(data, idx) bootSamples
Самые популярные идеи
1.Случай применения многомерной логистической регрессии на языке R
2.Пример реализации панельного регрессионного анализа с плавным переходом (PSTR)
4.Случай анализа регрессионной модели Пуассона на языке R
5.Тест согласия Хосмера-Лемешова в регрессии на языке R
6.Реализация регрессии LASSO, регрессии Ridge и модели эластичной сети на языке r
7.Реализация логистической логистической регрессии на языке R
8.python использует линейную регрессию для прогнозирования цен на акции
9.Как язык R рассчитывает показатели IDI, NRI в анализе выживаемости и регрессии Кокса