[英]How do we do linear regression on a dataset and regress it to one vector column by column?
[英]How to turn just one row of a matrix into a vector so I can do a linear regression on it?
我正在嘗試在R中做我的第一個項目,但是我不懂這種語言,所以在這里真的使我喪命。 這是我遇到過的最令人沮喪的事情,主要是因為似乎互聯網上絕對沒有地方可以迎合那些不懂得如何教您如何做事的人。
我正在嘗試將所使用的數據作為RStudio的內置數據集之一進行線性回歸。 這是我的代碼行:
lm(Income ~ Illiteracy, data=florida)
但是我一直想出這個錯誤:
model.frame.default中的錯誤(公式=收入〜文盲,數據=佛羅里達,:“數據”必須是data.frame,而不是矩陣或數組
(幫助我的朋友將state.x77重命名為“佛羅里達”)。
收到此錯誤並決定我希望在回歸中分別對每個狀態進行分析,還是希望至少對幾個樣本狀態進行分析后,我決定我要對Florida行進行分析並將其轉換為自己的向量。 但是,我不知道該怎么做。 我在該網站上不斷看到建議,但是它們都是關於“命名”的事情,許多命令都帶有“暗淡”的字眼,沒有人解釋。
請幫助我,我是一個完全的初學者,我有一本教科書,假設您知道R,而我又找到了一本“學習R”的書,以某種方式也假定您知道R
R具有用於處理數據集的幾種數據結構。 matrix
就是其中之一-它將您限制為單一類型的變量(通常為numeric
),並且必須具有矩形形狀。
data.frame
形狀類似於矩陣,但是每一列可以是不同的類型(例如, numeric
, character
或factor
)。 這更接近於典型的數據集,在該數據集中混合了連續/數字,序數和分類/名義變量。
您可以通過輸入?functionname
(例如?lm
並檢查Arguments部分來檢查功能需要哪種輸入:
數據
包含模型中變量的可選數據框,列表或環境(或可通過as.data.frame強制轉換為數據框的對象)。 如果在數據中找不到,則變量取自環境(公式),通常是調用lm的環境。
在嘗試回歸之前,您可以通過良好的入門課程來學習R的基本構成部分。 一個免費的選項是DataCamp的R簡介 ,但還有很多其他選項。 一旦了解了R的不同變量類型,數據結構和語法,這些錯誤就很容易糾正。
在這種情況下,您只需要編寫as.data.frame(florida)
即可將matrix
對象“強制”為data.frame
對象。
如果要獲取每個州的模型,請嘗試以下操作
data(state)
state.x77 <- as.data.frame(state.x77)
state.x77$name <- rownames(state.x77)
mod_list <- list()
for (s in unique(rownames(state.x77))) {
m <- lm(Income ~ Illiteracy, data = subset(state.x77, name == s))
mod_list <- c(mod_list, list(mod = m))
}
names(mod_list) <- unique(rownames(state.x77))
為了使文盲到收入線性回歸,您應該執行以下操作:
lm(Income ~ Illiteracy, data=as.data.frame(state.x77))
因為lm
接受數據幀,而不是矩陣。
幫助我的朋友將state.x77重命名為“佛羅里達”
我不知道他或她為什么要這么做。 state.x77
是50個不同狀態的8個參數的數據。 佛羅里達只是其中之一,所以為什么他在地球上會稱其為“佛羅里達”? 假設您有一個200個不同國家的人口和收入數據集。 因為印度是數據集中的國家之一,您會稱其為“印度”嗎?
收到此錯誤並決定我寧願在回歸中分別做每個狀態
您不能“在回歸中單獨設置狀態”。 並不是說您不能在R中做到這一點,您根本無法做到,因為它在數學上是荒謬的。 佛羅里達州(按此矩陣)人口為4815,文盲率為1.3。 您如何在兩個數字之間進行回歸? 這很荒謬。
我決定要選擇佛羅里達行並將其轉換為自己的向量以進行分析。
您可以參加佛羅里達行:
foo <- state.x77["Florida",]
現在foo
是Florida的8個參數的向量,但是您可以使用它做什么呢?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.