Прошу помочь с функцией lmp()

 

Всем доброго времени суток! 

Прошу помочь с пакетом lmPerm, функцией lmp().
Разбираю  примеры  по этой функции из книги Роберта Кабакова «R in action». Возник вопрос:   почему в случае регрессии (линейной, полиномиальной, множественной – у   Кабакова три соответствующих примера), Intercept по умолчанию не  выдаётся  при применении summary() к результатам lmp()? А уровень  значимости p для  Intercept вообще невозможно найти для этой функции? 

И, главное, почему при использовании lmp() значения Intercept так  сильно отличаются и по величине, и, иногда, даже  по знаку, от значений в  обычной lm() ? Например, для простой линейной  регрессии в примере  Кабакова для lmp() мне удалось найти значение Intercept≈ +136, а  lm()  выдаёт Intercept≈ -87, p=1.7e-09. При этом значения прочих коэффициентов  регрессии lmp() в примерах Кабакова очень неплохо согласуются с  результатами lm() …

рисунок для регрессии

Здравствуйте! У меня случилась маленькая проблемка с визуализацией к регрессии Пуассона.

Модель:
M3 <- glm(Macross ~ location+Sex, data = a, family = "quasipoisson")

Anova(M3)
Analysis of Deviance Table (Type II tests)

Response: Macross
LR Chisq Df Pr(>Chisq)
location 28.165 4 1.155e-05 ***
Sex 15.291 1 9.216e-05 ***

Мне удаётся построить только рисунок одновременно для факторов "Локализация" и "Пол" с помощью кода:

NEWDATA <- with(a, expand.grid(location=unique(location), Sex=unique(Sex)))
pred <- predict(M3,newdata= NEWDATA,se.fit=TRUE, type = "link")
make_ci <- function(pred, data){
fit <- pred$fit
lower <- fit - 1.96*pred$se.fit
upper <- fit + 1.96*pred$se.fit
return(data.frame(exp(fit), exp(lower), exp(upper), data))
}

my_pred <- make_ci(pred, NEWDATA)
limits <- aes(x = factor(location), ymax = my_pred$exp.upper., ymin = my_pred$exp.lower., group = Sex)

ggplot(my_pred, aes(x = factor(location), y = exp.fit., color = Sex))+
geom_errorbar(limits, position = position_dodge(width = 0.75), color = "black")+
geom_point(size = 8, position = position_dodge(width = 0.75), shape = 16)+
geom_point(data = a, aes(x = factor(location), y = Macross, colour = Sex), size = 8, shape = 17, alpha = 0.7,position = position_dodge(width = 0.75))

Вот "грубая" версия рисунка:


значения для доверительных интервалов:
> my_pred
exp.fit. exp.lower. exp.upper. location Sex
1 30.961669 7.6722541 124.946975 Тункинский ПП f
2 78.220600 52.5776978 116.369915 Долганская яма f
3 19.626074 7.8067394 49.339778 Охотничья f
4 8.158858 0.6930274 96.052420 Тигирек f
5 11.424414 4.3469659 30.024904 Барсуковская пещера f
6 9.012777 2.2112737 36.734553 Тункинский ПП m
7 22.769600 12.9430298 40.056672 Долганская яма m
8 5.713046 2.4043790 13.574770 Охотничья m
9 2.375000 0.2196026 25.685599 Тигирек m
10 3.325586 1.1329687 9.761543 Барсуковская пещера m

Но мне нужно построить ОТДЕЛЬНО рисунки для главных эффектов: один для локализации, другой - для пола. Но с этим кодом не очень-то и выходит.
Конечно, я могу построить по модели для каждого главного эффекта и получить рисунки, например:

M4 <- glm(Macross ~ location, data = a, family = "quasipoisson")

но, как мне кажется, доверительные интервалы этой модели не будут соответствовать модели M3.

Возможно есть пути, как обойти эту проблему и построить рисунки для каждого главного эффекта по модели M3? Взаимодействие между факторами статистически не значимо.

Заранее спасибо за помощь!!!

https://dropmefiles.com/C0wL5 - ссылка на файл с данными
  • ittei

Заполнение пропущенных значений

Здравствуйте!
Есть таблица данных. В ней есть строки с пропущенными значениями. Значения пропущены со второго столбца до последнего. Т.е. если пропущены в одном столбце, то пропущены во всех столбцах, кроме первого. Нужно заполнить пропущенные данные, взяв их из предыдущей строки (построчно). Т.е. пропущенное значение берется из предыдущей строки соответствующего столбца.
Пока сделал следующую конструкцию:

m <- which(is.na(my_data[,2])==TRUE)[1]
while (is.na(m)==FALSE) {
my_data[m,2:dim(my_data)[2]] <- my_data[m-1,2:dim(my_data)[2]]
m <- which(is.na(my_data[,2])==TRUE)[1]
}


Конструкция мне категорически не нравится по нескольким причинам:
-Цикл, поэтому достаточно медленно вовсе даже не на большом объеме данных;
- Цикл while сам по себе достаточно неприятный;
Прошу помочь вариантом без цикла. Спасибо!

UPD.
Цикл в основном из-за того, что может быть несколько строк с пропусками.
аватар
  • p2004r

No, no, Mr. Chollet. This is "R", not "Python". :)

https://www.manning.com/books/deep-learning-with-r

Listing 6.1 Word-level one-hot encoding (toy example)

samples <- c("The cat sat on the mat.", "The dog ate my homework.")
token_index <- list()
for (sample in samples)
for (word in strsplit(sample, " ")[[1]])
if (!word %in% names(token_index))
token_index[[word]] <- length(token_index) + 2
max_length <- 10
results <- array(0, dim = c(length(samples),
max_length,
max(as.integer(token_index))))
for (i in 1:length(samples)) {
sample <- samples[[i]]
words <- head(strsplit(sample, " ")[[1]], n = max_length)
for (j in 1:length(words)) {
index <- token_index[[words[[j]]]]
results[[i, j, index]] <- 1
}
}





No, no, Mr. Chollet. This is "R", not "Python". :)


> samples <- c("The cat sat on the mat.", "The dog ate my homework.")
> parse <- strsplit(samples, " ")
> token_list <- unique(unlist(parse))
> lapply(parse,function(s)sapply(s, function(w) (1:length(token_list))[token_list %in% w] ))
[[1]]
The cat sat on the mat.
1 2 3 4 5 6

[[2]]
The dog ate my homework.
1 7 8 9 10 

Как сделать Производителя переменной?

Специалисты, доброе утро!

Помогите, пожалуйста, справиться с задачкой:

dev.ord.src <- filter(df.raw, str_detect(Производитель, 'Samsung')) %>%

  dplyr::group_by(day, Способ.оформления.заказа) %>%

  dplyr::summarise(ord = n_distinct(Номер.заказа))  %>%

  reshape2::dcast(Способ.оформления.заказа ~ day, fun.aggregate = sum)

Допустим есть такой кусочек и их таких много, но выводят разные параметры.

Фильтр одинаковый у всех блоков.

Как мне сделать, чтобы 'Samsung' можно было сделать переменной X, чтобы в начале кода один раз ее поменять на 'Apple' и все последующие кусочки, похожие на этот сразу у себя поменялись на Apple?

светлое будущее
  • potan

Дуальные числа в R

Есть ли в R библиотека для дуальных чисел или возможность переопределять все операции с обычными числами, что бы реалиловать свой тип чисел?
Есть большой код, включающий в себя в том числе решение линейной системы с сильно разряженной матрицей. Требуется оценить влияние изменений некоторых параметров на результаты. Проще всего это было бы сделать, проделав вычисления в дуальных числах (или их обобщении с несколькими "мнимыми" единицами).

Помогите с перекодировкой данных из CSV в R

Доброе утро!

Есть файл csv, который дальше нужно обрабатывать в R.
Если его открыть как csv то кодировка кривая.
Если открыть эксель и подгрузить через "Данные из текста" -> csv + кодировкой UTF-8, то русский шрифт в норме.

Помогите, пожалуйста, с переоределением кодировки в R:

Вариант 1.

df.raw <- read.csv('shop_hive.csv', header=TRUE, stringsAsFactors = F, sep="\t", fileEncoding= "utf-8", quote = "") читает только первые 7 строк .

Вариант 2.

df.raw <- read.csv('shop_hive.csv', header=TRUE, stringsAsFactors = F, sep="\t", Encoding= "utf-8", quote = "") не читается совсем, выдает ошибку

"Error in read.table(file = file, header = header, sep = sep, quote = quote, : unused argument (Encoding = "utf-8")"

Вариант 3.

df.raw <- read.csv('shop_hive.csv', header=TRUE, stringsAsFactors = F, sep="\t", quote = "") читает весь файл в битой кодировке

Проверка локале показала что

"LC_COLLATE=Russian_Russia.1251;LC_CTYPE=Russian_Russia.1251;LC_MONETARY=Russian_Russia.1251;LC_NUMERIC=C;LC_TIME=Russian_Russia.1251"

Что ж я делаю не так? Подскажите, пожалуйста, что нужно поменять исправить?

Спасибо!!
Тейлор

нужна помощь

Дорогие любители R у меня к вам вопрос:
Есть файл с табличкой вида:
ID клиента, наименование продукта, сумма.

Для каждого клиента таких записей 10-20.
Я хочу сделать кластерный анализ, только не могу сообразить как сделать матрицу с показателями для каждого клиента. По идее нужно сделать что то типа сводной таблицы для что бы строка это id клиента а столбцы это услуги с суммами либо нулями.
И да, на компьютере установлена R-studio и видимо только базовый набор пакетов, без возможности скачать пакеты из репозитория. ( нет интернета ибо суровая СБ блюдет инфобезопастность)