Сравните ваш код, который работает ...
t.test(faminc~smoke,data=data)
Вы указываете связь между переменными (faminc~smoke
), что означает, что вы думаете, что среднее значение faminc
отличается между значениями smoke
и вы хотите использовать набор данных data
.
Эквивалентная строка в вашем цикле ...
print(t.test(temp$smoke))
... дает только один столбец temp$smoke
послевыбрав тех, кто имеет значение 1
для каждого из faminc
, fatheduc
и т. д. Так что даже если вы написали ...
print(t.test(faminc~smoke, data=data))
Далее ваш count
ничего не делает.
Если вы хотите выполнить ряд тестов таким способом, вы можете
type <- c("faminc", "fatheduc", "motheduc", "white", "cigtax", "cigprice")
for(name in type){
cat("For", name, "between smokers and non, the difference in means is: \n")
print(t.test(name~smoke, data=data))
}
Является ли это тем, чем вы хотите заниматься, хотя мне не ясно, ваши переменные предполагают семейство (faminc
), отец (fatheduc
), мать (motheduc
), этническая принадлежность (white
), налог (cigtax
) и цена (cigprice
).
Я не могу понять, почему вы хотели бы сравнить среднюю цену на сигареты или налог между курильщиками и некурящими, потому что последние не будут иметь никакого значения для этого, так как они не курят!
Ваш код предполагает, что это, возможно, двоичные переменные (поскольку вы фильтруете по каждому значению 1
), что, как мне кажется, вовсе не то, что вы хотите сделать.
Если вы хотите просмотреть подмножества данных, тогда подход tidier к регрессии, а не к циклам, заключается в использовании purrr .
.данных вместе с полной копией и вставленным выводом, как описано в Как создать пример минимального, полного и проверяемого - Справочный центр - Переполнение стека .Потому что это позволяет людям более подробно видеть, что вы делаете (например, я только догадывался о ваших переменных).Со статистикой также полезно указать, какая у вас гипотеза, чтобы помочь людям понять, чего именно вы пытаетесь достичь в целом.